官方搭建步骤写得比较简单,因此遵循官方的指引安装。
¶设置ES占用内存
在默认情况下,ES只允许本地访问api接口,如果我们希望在另外一台机器上访问ES的接口的话,需要配置主机地址:
/data/elasticsearch-6.2.4> vim config/elasticsearch.yml
#network.host: 192.168.0.1
network.host: 10.140.7.12
保存退出,重新启动es,一般都会报错,无法启动
1 | [2017-03-16T10:51:23,168][INFO ][o.e.t.TransportService ] [DwX_4EG] publish_address {10.140.7.12:9300}, bound_addresses {10.140.7.12:9300} |
对于这个错误,需要这样处理,执行下面的命令,或者把这个配置/etc/sysctl.conf
1 | sysctl -w vm.max_map_count=262144 |
再次启动,报下面的错误:
1 | system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk |
原因:
这是在因为操作系统不支持SecComp,而ES6.2.4默认bootstrap.system_call_filter
为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
解决:
在elasticsearch.yml
中配置bootstrap.system_call_filter
为false,注意要在Memory下面:
1 | bootstrap.memory_lock: false |
重启ok
一下是网友遇到的问题,也一并记录一下:
[2016-12-20T22:37:28,543][INFO ][o.e.b.BootstrapCheck ] [elk-node1] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
[2016-12-20T22:37:28,552][ERROR][o.e.b.Bootstrap ] [elk-node1] node validation exception
bootstrap checks failed
max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
[2016-12-20T22:37:28,560][INFO ][o.e.n.Node ] [elk-node1] stopping …
[2016-12-20T22:37:28,628][INFO ][o.e.n.Node ] [elk-node1] stopped
[2016-12-20T22:37:28,629][INFO ][o.e.n.Node ] [elk-node1] closing …
[2016-12-20T22:37:28,677][INFO ][o.e.n.Node ] [elk-node1] closed
报了一大串错误,其实只是一个警告。
解决:使用新的linux版本,就不会出现此类问题了。
问题二:
1 | ERROR: bootstrap checks failed |
解决:切换到root用户,编辑/etc/security/limits.conf
添加类似如下内容
1 | * soft nofile 65536 |
问题三:
1 | max number of threads [1024] for user [lish] likely too low, increase to at least [2048] |
解决:切换到root用户,修改配置文件/etc/security/limits.d/90-nproc.conf
,如果没有该文件,则增加
修改如下内容:
1 | * soft nproc 1024 |
问题四:
1 | max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] |
解决:切换到root用户修改配置/etc/sysctl.conf
添加下面配置:
1 | vm.max_map_count=655360 |
并执行命令:
1 | sysctl -p |
问题五:
以.deb安装包方式安装时,会提示找不到配置文件。添加软连接:
1 | ln -s /etc/elasticsearch /usr/share/elasticsearch/config |
重启服务。
¶脑裂(split brain)
单机测试开发的时候, 其实一个节点就够了. 上线, 使用两个节点, 目的是利用es本身的特性做到高可用.
但是两个节点是远远不够的. 启动后, 集群会选举一个master, 一切ok. 但是如果存在网络问题或者某个节点无响应(负载过高), 就会认为对方dead了, 然后两个节点自动选举为master, 在后续建索引的时候造成数据不一致.
两个节点防脑裂的配置, minimum_master_nodes决定了选主需要的最少节点数, N/2+1, 两个节点即2
1 | discovery.zen.minimum_master_nodes: 2 |
但是, 此时一个节点挂了, 则整个集群挂了(无法选举主节点了)
所以, 要再加一个节点, 这个节点只要保证稳定即可, 对cpu和磁盘要求不高. 这个es节点的配置同其他节点的区别node.data: false, 不存储索引数据.
1 | split brain prevent |