我已经使用此方法在云中构建弹性搜索群集.它的工作时间为30%-50%.
我从Digital Oceans Cloud中的2台服务器中的2个centos节点开始.然后我安装ES并在每个config/elasticsearch.yml中设置相同的集群名称.然后我也设置(取消注释):
discovery.zen.ping.multicast.enabled: false
以及设置和取消注释:
discovery.zen.ping.unicast.hosts: ['192.168.10.1:9300', '192.168.10.2:9300']
在每个服务器中.SO参考这里
然后,为了给ES带来疑问,我service iptables stop
,然后在每个节点上重启服务.有时服务器看到对方,我从弹性搜索中得到一个"""群集",有时即使不是大多数,服务器也不会看到对方,即使禁用了多播,并且在单播主机阵列中给出了特定的ip地址没有防火墙,并指向对方.
为什么ES社区?为什么一个hello world相当于弹性搜索被证明是无弹性的,至少可以说(让我公开并且很容易承认这必须是用户错误/白痴,否则没有人会使用这种技术).
起初我正在尝试构建一个简单的4节点集群,但是在索引单个文档之前出现的问题很好,这很荒谬.我的成功率为0%.一些节点看到了一些其他节点(通过头部和护理人员),而其他节点则有"悬挂索引"和"未分配索引".当我用谷歌搜索时,我发现了大量相关/类似的问题,没有可行的答案.
有人可以给我一个如何建立弹性搜索集群的例子吗?
@ Ben_Lim的答案:每个需要这个资源的人都能得到这个吗?我拿了1个节点(这不是Prod)Server1并在/config/elasticsearch.yml设置中更改了以下内容:
取消注释node.master:true
取消注释并设置network.host:192.XXX.1.10
取消注释transport.tcp.port:9300
取消注释discovery.zen.ping.multicast.enabled:false
取消注释并设置discovery.zen.ping.unicast.hosts:["192.XXX.1.10:9300"]
这设置了主人,好吧,然后在每个想要加入的后续节点(上面的例子)中 -
取消注释node.master:false
取消注释并设置network.host:192.XXX.1.11
取消注释transport.tcp.port:9301
取消注释discovery.zen.ping.multicast.enabled:false
取消注释并设置discovery.zen.ping.unicast.hosts:["192.XXX.1.10:9300"]
显然,确保所有节点都具有相同的群集名称,并且iptables防火墙等设置正确.
NOTE AGAIN -- This is not for prod, but a way to start testing ES in Cloud, you can tighten up the screws from here
Ben Lim.. 6
您遇到的最可能的问题是9300端口被其他应用程序使用,或者主节点未在端口9300处启动,因此它们无法相互通信.
当您启动2个ES节点以构建群集时,必须将一个节点选为主节点.主节点将具有通信地址:hostIP:post.例如:
[2014-01-27 15:15:44,389][INFO ][cluster.service ] [Vakume] new_master [Vakume][FRtqGG4xSKGbM_Yw9_oBLg][inet[/10.0.0.10:9302]], reason: zen-disco-join (elected_as_master)
当您需要启动另一个节点来构建群集时,您可以尝试特定主IP:端口,就像上面需要设置的示例一样
discovery.zen.ping.unicast.hosts: ["10.0.0.10:9302"]
然后,第二个节点可以找到主节点并加入群集.