云搜索服务 CSS-OpenSearch集群规划建议:规划集群可用区

时间:2024-10-23 20:30:39

规划集群可用区

为防止数据丢失,并确保在服务中断情况下能降低集群的停机时间,从而增强集群的高可用性, CSS 服务支持跨可用区(即多可用区)部署。用户可以在同一个区域内选择两个或三个不同的可用区进行集群部署。

在创建集群时,如果用户选择了两个或三个可用区, CS S服务将自动开启跨AZ的高可用性特性,确保节点在这些可用区内均匀分配。系统均匀分配的节点满足各个AZ之间节点数量的差小于等于1,具体的节点分布情况,包括不同数量的节点如何在各个可用区中分布,可以参考表1
  • 在创建集群时,选择的任意类型的节点数量都要大于等于所选的AZ数量,否则跨可用区部署会失败。
  • 部署跨AZ集群时,任意类型的节点都会被均匀的分布在不同的AZ上,满足各个AZ之间节点数量的差小于等于1。
  • 当集群中数据节点和冷数据节点的数量和可用区的数量不是整数倍关系时,集群的数据会分布可能会不均匀,从而影响数据查询或写入业务。
表1 节点数量和AZ分布

集群节点个数

单AZ

两AZ

三AZ

AZ1

AZ1

AZ2

AZ1

AZ2

AZ3

1个节点

1

不支持

不支持

2个节点

2

1

1

不支持

3个节点

3

2

1

1

1

1

4个节点

4

2

2

2

1

1

在选择多可用区部署时,建议合理配置副本数量,以更高效地利用跨可用区的高可用性特性。
  • 在跨两个可用区的部署中,当其中一个AZ不可用时,剩下的AZ需要继续提供服务,因此索引的副本个数至少为1个由于Elasticsearch默认副本数为1个,因此如果您对读性能没有特殊要求,可以直接使用默认值。
  • 在跨三个可用区部署中,为了保证其中任意一个AZ不可用时,剩余的AZ可以继续提供服务,因此索引的副本数至少要为1个。为了提高集群的查询能力,也可以设置更多的副本。由于Elasticsearch默认的副本数为1个,因此需要用户修改setting配置来实现修改索引副本个数。

    可以通过如下命令修改索引的副本个数,如:

    curl -XPUT http://ip:9200/{index_name}/_settings -d '{"number_of_replicas":2}'

    也可以通过在模板中指定所有索引的副本个数,如:

    curl -XPUT http://ip:9200/ _template/templatename -d '{ "template": "*", "settings": {"number_of_replicas": 2}}'

    其中,“ip”表示集群内网访问地址,“index_name”表示索引名称,“number_of_replicas”表示修改后的索引副本个数,此处以修改为2个索引副本为例。

当采用多可用区部署时,如果某个可用区发生故障,相关的业务故障行为分析及应对策略请参见表2
表2 AZ故障的业务故障行为分析

可用区数量

主节点个数

业务中断行为及应对建议

2

0

  • 如果节点个数为2的倍数:

    一半的数据节点故障,需要替换故障可用区中的一个节点,才能继续选择主节点。

  • 如果节点数为奇数:
    • 故障AZ含多一个节点,需要替换故障可用区中一个节点,才能继续选择主节点。相关替换请联系技术支持。
    • 故障AZ含少一个节点,不中断业务,能够继续选择主节点。

2

3

有50%机会的停机时间。当两个专用主节点分配到一个可用区中,一个主节点分配到另一个可用区中时:

  • 如果具有一个专用主节点的可用区遇到中断,则剩余可用区具有两个专用主节点,这两个专用主节点可以选择出主节点。
  • 如果具有两个专用主节点的可用区遇到中断,剩余可用区只有一个专用主节点,无法选择出主节点,业务中断,需要联系技术支持。

3

0

当您选择3个可用区,节点个数为4,三个可用区的节点分布数为2,1,1,如果节点个数为2的可用区故障,那么此时业务中断,建议您选择三个可用区时避免选择4个节点。

一般不会出现业务中断时间。

3

3

无业务中断时间。

当集群创建完成后,支持切换可用区,具体操作请参见切换OpenSearch集群可用区

切换可用区包含两大场景:可用区高可用改造和可用区平移切换。
  • 可用区高可用改造:适用于单AZ改造成两AZ、单AZ改造成三AZ或两AZ改造成三AZ的场景,目的是为了提升集群的高可用性。
  • 可用区平移切换:适用于从一个AZ完全迁移到另一个AZ的场景,目的是为了解决当前可用区资源不足的问题。
support.huaweicloud.com/usermanual-css/css_01_0028.html