如何同步两个ElasticSearch集群

时间:2016-06-15 17:23:59

标签: elasticsearch

我需要在数据中心II中设置复制的ES clusterII,ES clusterII只需要与数据中心I中的ES clusterI同步。到目前为止,我的想法是在custerII中存储快照并恢复快照以同步clusterI。但这种方式有点延迟。有没有更好的方法请。

1 个答案:

答案 0 :(得分:1)

集群能力是ElasticSearch的一个概念。但是,它不是为跨数据中心扩展而设计的,因为这涉及网络延迟,但它可以做到这一点。

ElasticSearch背后的理念是拥有一个高度可用的集群,可以在其自身内复制分片(即集群中的副本级别为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_]

您需要确保设置发现主机列表,这意味着在群集中的每个主机上,如果它们的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已经在应用程序中构建了高可用性的心态 - 这就是为什么这个应用程序如此强大并且正在被社区和公司大量采用。