Elasticsearch笔记(11)

98 阅读2分钟

这是我参与8月更文挑战的第21天,活动详情查看:8月更文挑战

备注:继Elasticsearch笔记(10)

集群

Elasticsearch集群的概念

单机es可以用,但是有一点我们需要去注意,就是高可用是需要关注的,一般我们可以把es搭建成集群,2台以上就能成为es集群了。集群不仅可以实现高可用,也能实现海量数据存储的横向扩展。

分片机制

每个索引可以被分片,就相当于吃披萨的时候被切了好几块,然后分给不同的人吃

  • 每个主分片都包含索引的数据,由于目前是单机,所以副本分片是没有的,这个时候集群健康值显示为黄色。

  • 副本分片是主分片的备份,主挂了,备份还是可以访问,这就需要用到集群了。

  • 同一个分片的主与副本是不会放在同一个服务器里的,因为一旦宕机,这个分片就没了

image-20200905044421013.png

搭建Elasticsearch集群

前置操作

当克隆以后,es中的data目录,一定要清空,这里面包含了原先的索引库数据。

5e01c89108cc98c711550138.jpg

配置集群

修改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"]

image-20200905042821029.png

Elasticsearch集群脑裂现象探讨

什么是脑裂

如果发生网络中断或者服务器宕机,那么集群会有可能被划分为两个部分,各自有自己的master来管理,那么这就是脑裂。

脑裂解决方案

master主节点要经过多个master节点共同选举后才能成为新的主节点。就跟班级里选班长一样,并不是你1个人能决定的,需要班里半数以上的人决定。

解决实现原理:半数以上的节点同意选举,节点方可成为新的master。

  • discovery.zen.minimum_master_nodes=(N/2)+1
    • N为集群的中master节点的数量,也就是那些 node.master=true 设置的那些服务器节点总数。

ES 7.X

在最新版7.x中,minimum_master_node