繁体   English   中英

ElasticSearch 实现高可用性

[英]ElasticSearch for High availability

我有一个位于 3 个数据中心的 5 节点 ElasticSearch 集群

DC1:

  • ES01(硕士合格,数据
  • ES02(数据

DC2:

  • ES03(硕士合格,数据
  • ES04(数据

DC3:

  • ES05(仅主节点

所以我需要在任何DC故障的情况下继续读/写操作,例如如果DC2关闭,集群现在由 3 个节点(ES-01, ES-02 and ES-05) ,它可以工作,所以有多少分片/或其他设置,比如读/写的一致性,我应该是一个 DC 容错吗?

我认为(1 个主分片和 3 个副本分片适用于这种情况)有什么建议吗?

不建议跨不同数据中心运行单个 ES 集群。 为 HA 设置的 ES 集群最好在具有不同可用区(AZ) 的单个 DC 中运行。

由于您有两个包含数据的可用区,N 个主(数量取决于您的数据量)和 1 个具有分片分配意识的副本就足够了。 不需要每个节点上的数据副本,只需在每个可用区中(至少)一个节点上。

ES01 和 ES02 应配置为:

node.attr.zone: zone1

ES03 和 ES04 应配置为:

node.attr.zone: zone2

ES01、ES03 和 ES05(即所有符合 master 资格的节点)应配置为:

cluster.routing.allocation.awareness.attributes: zone

这将确保主分片和副本分片在两个区域之间保持平衡。 如果 zone2 失败,则 zone1 仍包含数据的完整副本。 ES 还将做的是为 zone1 内的每个主分片重新创建一个副本。 如果您认为单个 zone 中可能没有足够的容量来包含数据的完整副本,则可以使用强制感知来防止 ES 将新的副本分片分配给单个 zone。

为此,您需要将以下行添加到 ES01、ES03 和 ES05:

cluster.routing.allocation.awareness.force.zone.values: zone1,zone2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM