同样是每台主机都需要安装,过程很简单。
这时我们只是每台主机都安装好了 Elasticsearch,接下来我们还需要将它们联系在一起构成一个集群。
安装完之后,Elasticsearch 的配置文件是 /etc/elasticsearch/elasticsearch.yml,接下来让我们编辑一下配置文件:
cluster.name: germey-es-clusters
node.name: es-node-1
其他的主机可以配置为 es-node-2、es-node-3 等。
node.master: true
node.data: true
path.data: /datadrive/elasticsearch/data
path.logs: /datadrive/elasticsearch/logs
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["10.0.0.4", "10.0.0.5", "10.0.0.6"]
discovery.zen.minimum_master_nodes: 2
另外还可以配置当最少几个节点回复之后,集群就正常工作,这里我设置为 4,可以酌情修改,配置示例:
gateway.recover_after_nodes: 4
接下来启动 es
所有主机都启动之后,我们在任意主机上就可以查看到集群状态了,命令行如下:
curl -XGET 'http://localhost:9200/_cluster/state?pretty'
报错:
ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决:
这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。解决:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
报错:
elasticsearch process likely too low, increase to at least [65536]
解决: 修改切换到root用户修改配置limits.conf 添加下面两行命令:vi /etc/security/limits.conf
报错:
virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:
在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
并执行命令:
sysctl -p
报错:
clusterStateVersion=-1}]], but needed [2]), pinging again
解决 :
因为9300端口没有开放
如果想开放端口(如:9300)
(1)通过vi /etc/sysconfig/iptables 进入编辑增添一条-A INPUT -p tcp -m tcp --dport 8889 -j ACCEPT 即可
(2)执行 /etc/init.d/iptables restart 命令将iptables服务重启#
(3)保存 /etc/rc.d/init.d/iptables save