5.2-分片与集群的故障转移

Primary Shard - 提升系统存储容量

  • 分⽚是 Elasticsearch 分布式存储的基⽯

    • 主分⽚ / 副本分⽚
  • 通过主分⽚,将数据分布在所有节点上

    • Primary Shard,可以将⼀份索引的数据,分散在多个 Data Node 上,实现存储的⽔平扩展

    • 主分⽚(Primary Shard)数在索引创建时候指定,后续默认不能修改,如要修改,需重建索引

Replica Shard - 提⾼数据可⽤性

  • 数据可⽤性

    • 通过引⼊副本分⽚ (Replica Shard) 提⾼数据的可⽤性。⼀旦主分⽚丢失,副本分⽚可以 Promote 成主分 ⽚。副本分⽚数可以动态调整。每个节点上都有完备的数据。如果不设置副本分⽚,⼀旦出现节点硬件故 障,就有可能造成数据丢失
  • 提升系统的读取性能

    • 副本分⽚由主分⽚(Primary Shard)同步。通过⽀持增加 Replica 个数,⼀定程度可以提⾼读取的吞吐量

分⽚数的设定

  • 如何规划⼀个索引的主分⽚数和副本分⽚数

    • 主分⽚数过⼩:例如创建了 1 个 Primary Shard 的 Index

      • 如果该索引增⻓很快,集群⽆法通过增加节点实现对这个索引的数据扩展
    • 主分⽚数设置过⼤:导致单个 Shard 容量很⼩,引发⼀个节点上有过多分⽚,影响性能

    • 副本分⽚数设置过多,会降低集群整体的写⼊性能

单节点集群

  • 副本⽆法分⽚,集群状态⻩⾊
PUT tmdb
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}
image.png

增加⼀个数据节点

image.png
  • 集群状态转为绿⾊

  • 集群具备故障转移能⼒

  • 尝试着将 Replica 设置成 2 和 3, 查看集群的状况

再增加⼀个数据节点

image.png
  • 集群具备故障转移能⼒

  • Master 节点会决定分⽚分 配到哪个节点

  • 通过增加节点,提⾼集群 的计算能⼒

故障转移

image.png
  • 3 个节点共同组成。包含了 1 个索引,索引设 置了 3 个 Primary Shard 和 1 个 Replica

  • 节点 1 是 Master 节点,节点意外出现故障。集 群重新选举 Master 节点

  • Node 3 上的 R0 提升成 P0,集群变⻩

  • R0 和 R1 分配,集群变绿

集群健康状态

GET _cluster/health

res:
{
  "cluster_name" : "geektime",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 7,
  "active_shards" : 14,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

  • Green:健康状态,所有的主分⽚和副本分⽚都可⽤

  • Yellow:亚健康,所有的主分⽚可⽤,部分副本分⽚不可⽤

  • Red:不健康状态,部分主分⽚不可⽤

Demo

  • 启动⼀个节点,3 个 Primary shard,⼀个 Replica,集群⻩⾊,因为⽆法分配 Replica

  • 启动三个节点,1 个索引上包含 3 个 Primary Shard,⼀个 Replica

  • 关闭 Node 1(Master)

  • 查看 Master Node 重新选举

  • 集群变⻩,然后重新分配

本节知识点回顾

  • 主分⽚,副本分⽚的作⽤

    • 主分⽚的分⽚数,设置后不能修改,除⾮重新索引数据

    • 副本分⽚可以随时修改

  • 集群的故障转移

    • 需要集群具备故障转移的能⼒,必须将索引的副本分⽚数设置为 1,否则,⼀点有节点就是,就会造成数据 丢失
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容