这是我参与8月更文挑战的第21天,活动详情查看:8月更文挑战;
备注:继Elasticsearch笔记(10)
集群
Elasticsearch集群的概念
单机es可以用,但是有一点我们需要去注意,就是高可用是需要关注的,一般我们可以把es搭建成集群,2台以上就能成为es集群了。集群不仅可以实现高可用,也能实现海量数据存储的横向扩展。
分片机制
每个索引可以被分片,就相当于吃披萨的时候被切了好几块,然后分给不同的人吃
-
每个主分片都包含索引的数据,由于目前是单机,所以副本分片是没有的,这个时候集群健康值显示为黄色。
-
副本分片是主分片的备份,主挂了,备份还是可以访问,这就需要用到集群了。
-
同一个分片的主与副本是
不会放在同一个服务器里的,因为一旦宕机,这个分片就没了
搭建Elasticsearch集群
前置操作
当克隆以后,es中的data目录,一定要清空,这里面包含了原先的索引库数据。
配置集群
修改elasticsearch.yml这个配置文件如下:
# 配置集群名称,保证每个节点的名称相同,如此就能都处于一个集群之内了
cluster.name: es-application
# 每一个节点的名称,必须不一样
node.name: es-node1
# http端口(使用默认即可)
http.port: 9200
# 主节点,作用主要是用于来管理整个集群,负责创建或删除索引,管理其他非master节点(相当于企业老总)
node.master: true
# 数据节点,用于对文档数据的增删改查
node.data: true
# 集群列表
discovery.seed_hosts: ["192.168.123.64", "192.168.123.65", "192.168.123.66"]
# 启动的时候使用一个master节点
cluster.initial_master_nodes: ["es-node1"]
Elasticsearch集群脑裂现象探讨
什么是脑裂
如果发生网络中断或者服务器宕机,那么集群会有可能被划分为两个部分,各自有自己的master来管理,那么这就是脑裂。
脑裂解决方案
master主节点要经过多个master节点共同选举后才能成为新的主节点。就跟班级里选班长一样,并不是你1个人能决定的,需要班里半数以上的人决定。
解决实现原理:半数以上的节点同意选举,节点方可成为新的master。
- discovery.zen.minimum_master_nodes=(N/2)+1
- N为集群的中master节点的数量,也就是那些
node.master=true设置的那些服务器节点总数。
- N为集群的中master节点的数量,也就是那些
ES 7.X
在最新版7.x中,minimum_master_node