跨可用区部署可提升集群的容灾能力。本文介绍部署和使用跨可用区的阿里云Elasticsearch(简称ES)实例时的注意事项。
在购买阿里云ES实例时,您可以选择可用区数量。当选择两个或三个可用区时,系统将部署跨可用区的阿里云ES实例。部署时,您无需手动选择多个可用区,系统会自动配置对应个数的可用区,详情请参见创建阿里云Elasticsearch实例。
注意 目前仅杭州、北京、上海和深圳四个区域支持部署跨三个可用区的阿里云ES实例。
节点
- 必须购买专有主节点。
- 所选择的数据节点、冷数据节点以及协调节点个数必须为可用区个数的整数倍。有关可用区的详细信息请参见地域和可用区。
索引副本
- 如果您使用跨两个可用区的阿里云ES实例,当其中一个可用区为不可用时,剩下的可用区需要继续提供服务,因此索引的副本个数至少为1。
由于阿里云ES实例默认的主分片数为5个,副本数为1个,因此如果您对读性能没有特殊要求,可以直接使用默认值。
- 如果您使用跨三个可用区的阿里云ES实例,当其中一个可用区或两个可用区不可用时,剩下的可用区需要继续提供服务,因此索引的副本个数至少为2。
由于阿里云ES实例默认的主分片数为5个,副本数为1个,因此需要您通过修改索引模板调整索引默认的副本个数,详情请参见索引模板。例如,使用索引模板设置索引副本个数为2,示例代码如下。
PUT _template/template_1 { "template": "*", "settings": { "number_of_replicas": 2 } }
集群配置
系统会自动为跨可用区的阿里云ES实例配置与分片分配策略相关的集群配置,详情请参见Shard allocation awareness。
例如,跨可用区的阿里云ES实例部署在可用区cn-hangzhou-f和cn-hangzhou-g,则集群配置相关的参数配置如下。
参数 | 说明 | 示例值 |
---|---|---|
cluster.routing.allocation.awareness.attributes |
注意 请不要通过API修改此参数值,否则会引起异常。
用于告知阿里云ES,使用哪些节点属性来设置分片的分配策略。跨可用区的阿里云ES实例通过在节点的启动参数中加入
Enode.attr.zone_id ,来标识节点的可用区,因此该参数值固定为zone_id 。
说明 使用跨可用区的阿里云ES实例时,系统会在节点的启动参数中加入
-Enode.attr.zone_id 参数。例如某个节点部署在cn-hangzhou-g可用区,则在该节点的启动参数中加入-Enode.attr.zone_id=cn-hangzhou-g 。
|
"zone_id" |
cluster.routing.allocation.awareness.force.zone_id.values |
用于告知阿里云ES在跨可用区部署时,强制均分shard。假设阿里云ES实例的索引包含了1个主分片,3个副本分片,并且部署在cn-hangzhou-f和cn-hangzhou-g两个可用区。按照分片分配策略,系统会在cn-hangzhou-f分配两个分片,在cn-hangzhou-g分配两个分片。当cn-hangzhou-f不可用时,如果指定了cluster.routing.allocation.awareness.force.zone_id.values 参数,则cn-hangzhou-f可用区的两个分片不会自动迁移到cn-hangzhou-g可用区。
说明 该参数值支持修改,默认配置为不会自动迁移。
|
["cn-hangzhou-f", "cn-hangzhou-g"] |
在文档使用中是否遇到以下问题
更多建议
匿名提交