集群多可用区部署可以提升集群的容灾能力,Elasticsearch集群可以选择双可用区(跨2个可用区)或三可用区(跨3个可用区)部署,集群的数据节点会均匀的分布到您选择的多个多用区中,所部署的数据节点支持可用区感知功能。在索引配置了副本的情况下,数据的副本会分布到多个可用区中,保证单个可用区仅有一份副本,当单个可用区出现故障时,剩余可用区仍然可以不间断的提供服务,显著增强了集群的可用性。
多可用区部署可显著增强了集群的可用性和数据的可靠性,但网络会有一定延迟,可根据业务要求选择使用。
多可用区部署支持单可用区、双可用区、三可用区三种部署方式,各部署方式的使用场景建议如下:
在购买京东云Elasticsearch实例时,您可以选择单可用区或者多可用区。当选择多可用区时,你可以选择两个或者三个可用区,系统将在您选择的可用区中部署Elasticsearch实例。
为了提高集群的可靠性,您在使用多可用区容灾功能时必须要创建三个专有主节点,且分布在三个不同的可用区中。这个部署方式,可以保证当一个可用区不可用时,集群依然有超过半数的法定主节点选举个数,可以保证集群的正常选主。
为了保证多可用区容灾的功能生效,你所选择的集群数据节点个数必须为可用区个数的整数倍,这些数据节点会均匀的部署在您选择的可用区上。
索引副本
PUT _template/template_1 { "template": "*", "settings": { "number_of_replicas": 2 } }
为了保证多可用区容灾的功能生效,你所选择的协调节点个数必须为可用区个数的整数倍,这些协调节点会均匀的部署在您选择的可用区上。
为使集群含有可用区感知的能力,保证每个可用区都有一份完整的数据副本,需要对集群做一些特殊配置。详细信息请参见:Shard Allocation Awareness
例如当集群跨2个可用区部署时、集群配置相关的参数说明如下:
cluster.routing.allocation.awareness.attributes | 用于告知ES使用哪些节点属性设置分片的分配策略。跨可用区实例通过在节点的启动参数中加入Enode.attr.zone_id、来标识节点的可用区(例如某个节点部署在az01可用区、则在该节点的启动参数中加入-Enode.attr.zone_id=az01) ,因此该参数值固定为zone_id。注意:不要通过ES API修改此参数值、否则会引起异常 |
zone_id |
cluster.routing.allocation.awareness.force.zone_id.values | 用于告知ES在跨可用区部署时强制均分shard。假设索引中包含了3个主分片、1个副本、并且部署在az01和az02两个可用区。按照分片分配策略、系统会在az01分配3个分片、在az02分配3个分片。如果指定了cluster.routing.allocation.awareness.force.zone_id.values参数为az01,az02、当az02不可用时、该可用区的3个分片不会自动迁移到az01。 | az01,az02 |
我们的产品专家为您找到最合适的产品/解决⽅案
1v1线上咨询获取售前专业咨询
专业产品顾问,随时随地沟通