Elasticsearch 集群构建及 分片、读写、容灾

2020-10-22  本文已影响0人  dylan丶QAQ

起因:在项目开发过程中,要使用到搜索 引擎来对一些关键字实现逆向查询,如果仅用模糊搜索,那么搜索的时间会根据数据量的增大而增大,对比之下就学了elasticsearch,也记录一下,常常回顾。


1. Elasticsearch集群构建及分片原理分析

分布式搜索引擎,如果是单机,那既不能HA,也不能实现分布式

分片机制

分片的逻辑

![image-20200219203725366.png](https://img.haomeiwen.com/i19048787/77d9dab1ad86e2c6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.1. ES集群搭建

在elasticsearch.yml里进行配置

# elasticsearch.ymk
# 是我们的集群名称,每个集群的机器如果要加入同一个集群,这个名字必须一样
cluster.name: icoding-es
# 节点名,这个必须都不一样
node.name: es-node-1
# 存储路径
path.data: /usr/local/elasticsearch/esdata
path.logs: /usr/local/elasticsearch/eslogs
http.port:9200
# 主节点,设置后在主节点挂掉后有机会升级为master
node.master: true
# 数据节点
node.data: true
# 可以配置ip和域名,配置后ES会通过9300-9305的端口进行数据连接
discovery.seed_hosts: ["192.168.0.146", "192.168.0.147", "192.168.0.148"]
# 集群初始化设置的master节点
cluster.initial_master_nodes: ["es-node-1"]
image-20200219230127642.png

星:代表主节点

圆圈:代表从节点!

1.2. ES集群节点宕机测试

image-20200219230903697.png

2. Elasticsearch集群脑裂问题分析

集群中有一个master节点:相当于一个管理节点

Node:elasticsearch的服务节点,安装ES的机器(主,从)

Index:是我们数据的一个逻辑集合,他拥有数据的结构,以及提前做好的分词内容,主要用来搜索的的对象

Shard:物理分片,进行数据的实际物理存储和管理的地方(主分片数不能修改,但副本分片可以增加)

image-20200220201623593.png

当原来的Master因为网络问题无法和其他slave链接,就出现了其他slave选举出新的master的情况

脑裂的解决方案

master主节点应该要经过多个有资格成为master(node.master=true)的节点选举后才能成为新的节点,不是你一个人自己选自己就能决定

3. Elasticsearch集群中文档读写原理

3.1. 文档的写原理

image-20200220203755592.png

3.2. 文档的读原理

4. 如何合理设置集群中分片数和副本数

当你在Elasticsearch中将index的分片设置好后,主分片数量在集群中是不能进行修改的,即便是你发现主分片数量不合理也无法调整,那怎么办?

总结

# 创建索引过程中进行分片设置
PUT /index_test
{
 "settings": {
 "number_of_shards": 5,
 "number_of_replicas": 1
 }
}
# 修改副本分片数量
# 副本分片如果过多在写入的时候会消耗更多时间来复制数据
PUT /index_test/_settings
{
 "number_of_replicas": 2
}

5. ES集群分片容灾的机制

集群所有Node都启动的状态

image-20200220211206482.png

我要kill掉es-node-1,es-node-2和es-node-3上的副本分片就升级为主分片

image-20200220211350285.png

过了一会,刚升级的主分片复制出副本分片

image-20200220211603183.png

启动刚刚kill掉的es-node-1,数据还没有复制过来

image-20200220212202600.png

过了一会数据进行了移动,通过9300内部通信端口进行数据的传输的

image-20200220212232618.png

不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!

上一篇 下一篇

猜你喜欢

热点阅读