默认情况下, Elasticsearch 会把插件、日志以及你最重要的数据放在安装目录下。这会带来不幸的事故,如果你重新安装 Elasticsearch的时候不小心把安装目录覆盖了。如果你不小心,你就可能把你的全部数据删掉了。
最好的选择就是把你的数据目录配置到安装目录以外的地方,同样你也可以选择转移你的插件和日志目录。
默认的插件目录在/usr/share/elasticsearch/plugins
可以自定义更改如下:
1 2 3 4 5
path.data: /path/to/data1,/path/to/data2 # Path to log files: path.logs: /path/to/logs # Path to where plugins are installed: path.plugins: /path/to/plugins
最小主节点数
minimum_master_nodes 设定对你的集群的稳定 极其 重要,当你的集群中有两个 masters(注:主节点)的时候,这个配置有助于防止 脑裂 ,一种两个主节点同时存在于一个集群的现象。
如果你的集群发生了脑裂,那么你的集群就会处在丢失数据的危险中,因为主节点被认为是这个集群的最高统治者,它决定了什么时候新的索引可以创建,分片是如何移动的等等。
如果你有 两个 masters 节点,你的数据的完整性将得不到保证,因为你有两个节点认为他们有集群的控制权
这个配置就是告诉 Elasticsearch 当没有足够 master 候选节点的时候,就不要进行 master 节点选举,等master 候选节点足够了才进行选举。
此设置应该始终被配置为 master 候选节点的法定个数(大多数个)。法定个数就是 ( master 候选节点个数 / 2) + 1 。
可以在你的 elasticsearch.yml 文件中这样配置:
1
discovery.zen.minimum_master_nodes: 2
Elasticsearch 默认被配置为使用单播发现
使用单播,你可以为 Elasticsearch 提供一些它应该去尝试连接的节点列表。 当一个节点联系到单播列表中的成员时,它就会得到整个集群所有节点的状态,然后它会联系 master 节点,并加入集群。
这个配置在 elasticsearch.yml 文件中
1
discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
内存交换
到磁盘对服务器性能来说是 致命 的
需要打开配置文件中的 mlockall 开关。 它的作用就是允许 JVM 锁住内存,禁止操作系统交换出去。在你的 elasticsearch.yml 文件中,设置如下:
1
bootstrap.mlockall: true
绑定IP
默认elasticsearch 只能访问自己127.0.0.1 ,如果需要让其他的机器的访问则需要在加上
1
network.host: 192.168.0.1
3.2 jvm.options 配置文件
Elasticsearch 默认安装后设置的堆内存是 1 GB
你也可以通过命令行参数的形式,在程序启动的时候把内存小传递给它,如果你觉得这样更简单的话:
1
[root@ES-100 bin]# /usr/share/elasticsearch/bin/elasticsearch -Xmx10g -Xms10g
确保堆内存最小值( Xms )与最大值( Xmx )的大小是相同的,防止程序在运行时改变堆内存大小, 这是一个很耗系统资源的过程。
标准的建议是把 50% 的可用内存作为 Elasticsearch 的堆内存,保留剩下的 50%。当然它也不会被浪费,Lucene 会利用起余下的内存.
但堆内存大小设置不要超过 32 GB
3.3 做实验用的配置文件这只是我做实验用的配置文件, 具体环境,根据生产而定
elasticsearch.yml
1 2 3 4
[root@ES-100 ~]# egrep -v "^#|^$" /etc/elasticsearch/elasticsearch.yml path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch network.host: 127.0.0.1,10.0.0.100
4 ElsaticSearch交互