我需要在数据中心设置复制的ES clusterii,ES clusterii只需要与数据中心中的ES clusteri同步。到目前为止,我的想法是在Custerii中的存储快照并恢复快照以同步clusteri。但是这种方式有一些延迟。有什么更好的方法吗?
群集的能力是烤入Elasticsearch中的概念。但是,它的设计并不是要跨数据中心缩放,因为这涉及网络延迟,但可以做到。
Elasticsearch背后的想法是要拥有一个高度可用的群集,该集群在自身内部复制碎片(即集群中的2个副本级别2表示您在群集中具有2份数据副本)。这意味着仅一个群集就是它自己的备份。
首先,如果您没有将其配置为群集,请通过将以下内容添加到您的/etc/elasticsearch/elasticsearch.yml
(或任何放置配置):
/etc/elasticsearch/elasticsearch.yml:
cluster.name: thisismycluster
node.name: ${HOSTNAME}
另外,您可以随心所欲地制作node.name
,但最好放入主机名中。
您还需要确保您拥有绑定到特定地址和/或接口的Elasticsearch服务,其中接口可能是您最好的选择,因为您需要在这些数据中心上进行点对点链接:
/etc/elasticsearch/elasticsearch.yml:
network.host: [_tun1_]
您将需要确保设置Discovery主机的列表,这意味着在群集中的每个主机上,如果其cluster.name
参数名称匹配,则将被发现并分配给该群集。Elasticsearch照顾其余的,这是神奇的!
您可以按名称添加主机(仅在您的/etc/ett/host或数据中心上定义的情况下定义,可以解决它)或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已经在应用程序中构建了高可用性的心态 - 这就是为什么此应用程序如此强大并且正在变得如此社区和公司都大量采用。