三个节点
9200(master)
9201
9202
参考:Elasticsearch实战-ES集群-搭建
一、实战
1、新增
用kibana连接到主节点9200
POST /itcast/_doc/1
{
"title": "设置插入一条id = 1"
}
用工具
分别插入id=1,3,5三条数据
2、 查询
GET /itcast/_search
{
"query": {
"match_all": {}
}
}
3、从节点查询
从9201/9202查询,发现也是3条数据
4、分析存储情况
增加explain命令,发现数据存储在不同的分片,说明协调节点发挥了作用
二、分布式存储
1、分片算法
2、新增文档流程
P是分片,R是备份
三、分布式查询
请求会发送到所有节点
四、分布式总结
分布式新增如何确定分片
- coordinating node 根据id做hash运算,得到结果对shard数量取余,余数就是对应的分片
分布式查询
- 分散阶段:coordinating node将查询请求分发到不同的分片
- 收集阶段:将查询结果汇总到coordinating node,整理并返回给用户
五、故障转移
集群的master节点会监控集群中节点状态,如果发现有节点宕机,会立即将宕机节点的分片数据迁移到其他节点,确保数据安全,这个叫做故障转移。
- master宕机后,EligibleMaster选举为新的主节点
- master节点监控分片、节点状态,将故障节点上的分片转移到正常节点,确保数据安全
实战
原本状态
- 停掉01
docker-compose stop es01
-
此时cerebro查看状态
-
稍等迁移之后
-
重启es01
docker-compose start es01
-
查看状态