[英]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.