ES集群中,节点的角色
1 master:保存集群的元数据
元数据:管理当前集群的所有数据内容,包括索引记录(切片数量,副本数量,切片和副本的存放位置,data节点的各自信息)
2 data:只负责切片数据的读取;
3 index:负责和客户端通信,通信之后,从客户端获取请求,到master获取权限,直接到data读取数据;
由于是master间保持通信,同步元数据,都能正确管理集群,
容易导致"脑裂"的现象
脑裂:在主节点集群管理的整个结构中,由于主节点间需要实时同步,完成数据的全面管理,会导致脑裂的产生;因为网络波动会产生相互通信的阻碍,这种阻碍持续一段时间,相互判断宕机–实际情况是没有宕机的.一旦出现这种情况,master就会自动决定,重新管理的集群结构,整个集群就切分成了由不同master管理的小团体,这种情况非常危险;
ES中解决脑裂情况的产生,需要配置最小集群的主节点数量;
discovery.zen.minimum_master_nodes: 1
配置最小主节点数量,计算公式是:
所有主节点角色的数量/2+1
设置过半数量
过半中,集群的节点数量一定要设定为奇数;
宕机容忍度的概念:集群允许宕机的个数
基于过半的逻辑,在集群中2n-1个节点与2n个节点允许宕机的个数相同;
3个节点,满足过半,允许宕机1 个
4 个节点,允许宕机1
5—2
6—2
7—3
8—3
过半计算的逻辑,能否解决脑裂现象;一旦不过半的主节点集群,不可用;
这种配置起效后,整个集群只有2中状态;
1 集群具有唯一一组满足最小主节点数量的集群,提供服务
2 所有主节点脑裂的集群都不可用
总结一句话:集群至多有一个可用的主,数据集群可用