本文在前一篇单例ES节点搭建的基础上,介绍如何搭建分布式的Elastic集群。
我们本文的示例是在本地环境模拟搭建一个一主二从的ES分布式集群。
搭建主节点
我们在elasticesearch.yml的设置追加以下几个配置项。
集群名称为happybkscluster
节点名称命名为master,当然也可以叫别的
但是,设置为主节点,需要配置node.master为true
最后绑定自己的IP地址。
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: happybkscluster
node.name: master
node.master: true
network.host: 127.0.0.1
访问head插件的访问页面http://127.0.0.1:9100/
可以卡看到我们有一个主节点master。
请求http://127.0.0.1:9200/
{
"name" : "master",
"cluster_name" : "happybkscluster",
"cluster_uuid" : "-mZesQGzQP6kVcuwhrIMVQ",
"version" : {
"number" : "5.6.8",
"build_hash" : "688ecce",
"build_date" : "2018-02-16T16:46:30.010Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
搭建一个从节点
然后我们再配置一个slave。
我因为是在windows上模拟整个过程,所以讲elastic文件夹另外拷贝了一份,然后配置其elasticsearch.yml
cluster.name: happybkscluster
node.name: slave1
network.host: 127.0.0.1
http.port: 9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
(本文出自oschina博主happybks的博文:https://my.oschina.net/happyBKs/blog/1790804,转载请注明)
这里需要注意,slave的集群名称需要和刚才master的集群名称一致。
改slave我们命名为slave1
绑定IP仍是127.0.0.1,由于是本地模拟嘛。响应地,为了防止本地端口冲突,我们将slave1的端口设置为9201
最后我们需要配置一个discovery.zen.ping.unicast.host: ["127.0.0.1"]
它的作用是告诉从机,主机在哪里,配置值为一个IP地址列表,存放master的IP地址
然后我们启动slave的es实例
PS D:\IDE\elasticsearch-5.6.8-slave1\bin> .\elasticsearch.bat -d
这里需要注意的是 -d
还有个坑请大家注意:如果你和我一样是把刚才运行过的主机的elasticsearch的整包目录拷贝一份,并修改配置得到的从机elasticsearch实例目录。那么,请一定把从机elasticsearch的data目录清空,logs最好也一并清空。否则会出现问题。
我们可以看到,现在head页面上有两个节点实例了,五角星代表master节点,圆点代表slave节点,旁边的master和slave1都只是节点node的名称。
搭建第二个从节点
同样的,我们再复制一份elasticsearch目录,配置第二个slave,命名为slave2
cluster.name: happybkscluster
node.name: slave2
network.host: 127.0.0.1
http.port: 9202
#transport.tcp.port: 9302
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
顺便说一下,transport.port是节点间的通信,可以不配置,es将自动分配。
可以参考两篇博文:
https://www.cnblogs.com/wxw16/p/6160186.html
https://www.cnblogs.com/hanyouchun/p/5163183.html
我们启动slave2的es实例:
命令什么日志信息都不会打印出现,这时候等待一段时间,刷新一下head主页,可以发现slave2出现了。如果没有出现,多等待一会儿。
总结:
从上面可以看出,ES的分布式扩容是十分容易的,只需要这样简单的复制和配置,就可以扩容ES分布式集群中的节点。