- index由多个shard组成(primary shard 和 replica shard)
- 每个shard都是一个最小的工作单位,承载部分数据,是一个luence的实例,拥有完整的建立索引和处理请求的能力
- 增删节点时,shard会自动负载数据
- 对于primary 和 replica shard来说,每个document肯定只存在于一个primary shard和对应的N个replica shard。永远不会存在于多个primary shard。 可以理解为主从节点
- replica shard是primary的副本,负责容错 以及承担 读请求
- primary shard的数量在创建索引的时候就固定了,replica shard可以修改
- primary shard的默认数量是5,replica shard的默认数量是1。即5个primary,每个primary有1个shard,所以总共是10个节点
- primary shard 和 replica shard不能放在同一个节点上
单个node环境下创建index:
- 单node下创建index,会默认分配3个primary shard 以及 1个replica shard
- 集群status 是 yellow
- 这时候 3个primary shard 分配到仅有的1个node上取,另外3个replica shard不可用
- 集群可以正常工作,但是一旦宕机,数据全部丢失,且集群不可用。
两个node环境下创建index:
- 单个node情况下,三个primary shard都在单个node里
- 当有新的node加入到集群里时,三个replica shard都会加入到新的node里
ES横向扩容、提升容错性
- 每个node有更少的shard,那么系统资源分配到的就越多
- 6个shard分配到3个node上时,允许有一台node宕机。因为无论哪一台挂了,另外两个节点都有完整的数据
- M1M2 R1R3 M3R1
- 9个shard分配到3个node上时,允许有两台node宕机。因为任意两台挂了,另外一个节点上都会有完整的数据
master选举
当有一个master节点挂了,那么集群会变成red,然后此时会进行选举,将一个replica选举为新的master,此时集群会变成yellow(因为副本没有完全active),如果后续将宕机的节点重启后,会重新加入到集群中,那么集群就会变成green。
