Elasticsearch集群搭建

1. 前提

搭建集群前,首先将各个节点的索引库存储位置的数据清空,比如我的索引存放在 /usr/local/elasticsearch-7.4.2/data 目录下,就需要将该目录下的数据都删除。

2. 配置集群

修改 elasticsearch.yml 文件

修改内容主要有:

# 配置集群名称,保证每个节点的名称相同,如此就能都处于一个集群之内了
cluster.name: imooc-es-cluster

# 每一个节点的名称,必须不一样
node.name: es-node1

# http端口(使用默认即可)
http.port: 9200

# 主节点,作用主要是用于来管理整个集群,负责创建或删除索引,管理其他非master节点(相当于企业老总)
node.master: true

# 数据节点,用于对文档数据的增删改查
node.data: true

# 集群列表
discovery.seed_hosts: ["192.168.1.184", "192.168.1.185", "192.168.1.186"]

# 启动的时候使用一个master节点
cluster.initial_master_nodes: ["es-node1"]

 需要在每个 elasticsearch 节点都修改这些内容,对于所有节点,以下三点可以不同,但其他内容必须相同

# 每一个节点的名称,必须不一样
node.name: es-node1

# 主节点,作用主要是用于来管理整个集群,负责创建或删除索引,管理其他非master节点(相当于企业老总)
# 所有节点也都可以一样,设置为 true,就意味着主节点挂了之后,该节点有可能成为主节点
node.master: true

# 数据节点,用于对文档数据的增删改查,建议设置为true
node.data: true

最后可以通过如下命令查看配置文件的内容(不显示注释信息):

more elasticsearch.yml | grep ^[^#]

3. 集群脑裂现象

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

简而言之,就是一个集群出现了两个master节点,就会导致数据缺失,不一致,冲突等问题。 

解决方案:

master主节点要经过多个master节点(在配置文件中设置了 node.mastre: true 的那些节点)共同选举后才能成为新的主节点。就跟班级里选班长一样,并不是你1个人能决定的,需要班里半数以上的人决定。

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

需要设置的参数:discovery.zen.minimum_master_nodes=(N/2)+1

其中 N 为集群中master节点的数量,也就是那些node.master=true设置的那些服务器节点总数。

Elasticsearch 7.x 以及以后的版本中,minimum_master_node 这个参数已经被移除了,这一块完全由es自身去管理,这样就避免了脑裂的问题,选举也会非常快。

 4. es集群中文档读写原理

文档写操作

  • 用户访问服务器和es进行交互, 服务器都是指定一台 es节点服务器作为交互方;

  • 当服务器访问的这台es服务器时,这台服务器就会被es认作为 es集群中的协调节点(负责接收 响应用户请求);

    • 而是会做一个算法(hash算法),通过算法结果来决定 具体写到哪一个主分片;(路由转发)

  • 文档存入主分片之后, 再将数据同步到副本分片上 

  • 当主分片和副本分片的文档数据都写入之后, 再由[协调节点]响应客户端结果

  • P0,P1,P2是主节点,R0,R1,R2是副本节点

文档读操作 

  • 客户端请求 协调节点;

    • 协调节点 针对 文档id 做 路由转发(采用的算法类似hash算法,计算出文档保存在哪个位置)

  • 之后在存储该文档的 主节点或者备份节点之间通过 轮询的方式 转发到其中一个节点上 (这么做可以分担请求压力提高效率)

  • 之后数据返回给协调节点,由协调节点响应客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值