我需要在数据中心II中设置一个复制的ES集群II,ES集群II只需要与数据中心I中的ES集群I同步。到目前为止,我的想法是将快照存储在 custerII 中并恢复快照以同步 clusterI。但是这种方式有点延迟。请问有没有更好的办法。
最佳答案
集群能力是 ElasticSearch 中的一个概念。然而,它并不是为跨数据中心而设计的,因为这涉及网络延迟,但它可以做到。
ElasticSearch 背后的想法是拥有一个高度可用的集群,可以在其内部复制分片(即集群中的副本级别为 2 意味着您在整个集群中拥有 2 个数据副本)。这意味着只有一个集群是它自己的备份。
首先,如果您没有将其配置为集群,请通过将以下内容添加到您的 /etc/elasticsearch/elasticsearch.yml
(或您放置配置的任何位置):
/etc/elasticsearch/elasticsearch.yml:
cluster.name: thisismycluster
node.name: ${HOSTNAME}
或者,您可以制作
node.name
无论您想要什么,但最好输入您的主机名。您还需要确保将 ElasticSearch 服务绑定(bind)到特定地址和/或接口(interface),该接口(interface)可能是您最好的选择,因为您需要跨这些数据中心的点对点链接:
/etc/elasticsearch/elasticsearch.yml:
network.host: [_tun1_]
您需要确保设置了一个发现主机列表,这意味着在集群中的每个主机上,如果它们的
cluster.name
参数名称匹配,它们将被发现并分配给该集群。 ElasticSearch 负责其余的工作,这太神奇了!您可以按名称添加主机(只有在您的/etc/hosts 或跨数据中心的 DNS 中定义时才能解析它)或 IP:
/etc/elasticsearch/elasticsearch.yml:
discovery.zen.ping.unicast.hosts: ["ip1", "ip2", "..."]
保存配置并重启 ElasticSearch:
sudo systemctl restart elasticsearch
OR
sudo service elasticsearch restart
如果您不使用 systemd(取决于您的操作系统),我强烈建议您使用它。
我会告诉你,虽然用 ElasticSearch 做快照是一个糟糕的主意,但要不惜一切代价避免它,因为 ElasticSearch 已经在应用程序中构建了高可用性的心态——这就是为什么这个应用程序如此强大并且被大量采用的原因社区和公司都一样。
关于elasticsearch - 如何同步两个 ElasticSearch 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37841924/