Elasticsearch 集群构建及 分片、读写、容灾
起因:在项目开发过程中,要使用到搜索 引擎来对一些关键字实现逆向查询,如果仅用模糊搜索,那么搜索的时间会根据数据量的增大而增大,对比之下就学了elasticsearch,也记录一下,常常回顾。
分布式搜索引擎,如果是单机,那既不能HA,也不能实现分布式
分片机制
分片的逻辑
在elasticsearch.yml里进行配置
星:代表主节点
圆圈:代表从节点!
集群中有一个master节点:相当于一个管理节点
Node:elasticsearch的服务节点,安装ES的机器(主,从)
Index:是我们数据的一个逻辑集合,他拥有数据的结构,以及提前做好的分词内容,主要用来搜索的的对象
Shard:物理分片,进行数据的实际物理存储和管理的地方(主分片数不能修改,但副本分片可以增加)
当原来的Master因为网络问题无法和其他slave链接,就出现了其他slave选举出新的master的情况
脑裂的解决方案
master主节点应该要经过多个有资格成为master(node.master=true)的节点选举后才能成为新的节点,不是你一个人自己选自己就能决定
当你在Elasticsearch中将index的分片设置好后,主分片数量在集群中是不能进行修改的,即便是你发现主分片数量不合理也无法调整,那怎么办?
总结
集群所有Node都启动的状态
我要kill掉es-node-1,es-node-2和es-node-3上的副本分片就升级为主分片
过了一会,刚升级的主分片复制出副本分片
启动刚刚kill掉的es-node-1,数据还没有复制过来
过了一会数据进行了移动,通过9300内部通信端口进行数据的传输的
不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!