九、ES集群实验
一、ES集群说明
1、什么是数据分片
跟MySQL不同的是,ES数据库叫分片,主库叫主分片,用粗框表示,域名前用黑色五角星标识
从库叫副分片,用细框表示,域名前用黑色的圆标识
主分片:实际存储数据,负责读写
副分片:主分片数据的副本,提供读(只是建议,当然也支持写),同步主分片的数据
副分片相当于主分片的备份,且副本数量可以自定义
2、集群健康状态
接着看上图,集群健康值:green
这里是绿色的,集群健康状态分为三种颜色
绿色:所有数据都完整,副本分片都正常
黄色:所有数据都完整,但是有个别副本分片宕机
红色:一个或多个索引数据不完整,索引相当于MySQL的库,也就是数据库数据不完整
3、数据分片颜色
看上图所示,数据分片颜色是绿色的,也就是有个框里面有个0的颜色。
数据分片的颜色除了绿色还有其他颜色,如下所示,不明白不要紧,接下来用实验来证明。
紫色:正在迁移数据
黄色:正在复制数据
绿色:正常
二、故障转移实验
主机名 | 服务 | IP |
---|---|---|
es01 | es+kibana | 10.0.0.80 |
es02 | es | 10.0.0.81 |
es03 | es | 10.0.0.82 |
1、实验一
实验要求
模拟es01宕机,查看数据分片颜色变化
目前集群状态
关闭es01的es服务,集群状态如下图所示
这时会发现集群健康值
变为黄色,是因为原本预设的一主一副分片,即有一份原始数据,一份备份数据,因为es01宕机,原本副本分片变为主分片,没有备份数据,所以变黄。
过一会完成迁移,这时集群es02跟es03组成主备,数据满足一个主分片,一个副本分片,所以集群健康值变为绿色
2、实验二
实验要求
向es02插入数据,启动es01,查看数据迁移中的分片颜色变化
目前集群状态
向es02插入多条数据,这里注意不写ID,让其随机生成ID号
#多执行几次如下命令,多添加一些数据
$ curl -XPOST 'http://10.0.0.81:9200/linux/_doc/' -H 'Content-Type:application/json' -d '
{
"name":"tz",
"age":"68"
}'
启动es01服务
systemctl start elasticsearch
会发现es02数据分片变为紫色,紫色表示正在迁移数据,迁移的是kibana的索引,并在es01上成为主分片
这里linux索引没有迁移到es01上,因为主分片副本分片是随机分布在服务器上的,但是迁移的是kibana的索引,也看到了分片颜色变化的过程
完成迁移
3、实验三
实验要求
关闭es01跟es02,查看集群状态
使用es-head连接es03,发现连接不上
使用curl访问es03的服务,发现是可以的
健康状态无法查看,一直卡在此页面
查看集群日志
看第一行,MasterNotDiscoveredException,找不到主节点了,故保证集群正常运行需要至少两个节点存活才行。
4、补充
补充一下集群颜色为红色的情况,这里的.kibana索引所在的节点宕机了,在其他节点没有备份,所以数据不完整,故集群颜色为红色。
这里仅为演示集群健康值为红色的情况,其他内容可在后续章节学到
4、实验总结
- 插入数据跟读写数据在任何节点都能执行
- es-head插件可以连接集群内任何一台存活的es服务器
- 主节点负责读写,数据节点(也就是副本分片)负责读,当然这是建议。
- 主节点宕机,数据节点会升级为主节点
- 主分片坏掉,副本分片会升级为主分片
- 如果副本数不满足(默认是一个主分片,一个副本分片),会复制数据到其他节点成为新的副本分片
- ES至少两个节点存活集群才能正常工作
- 集群宕机节点恢复上线会自动同步数据
- ES工作端口有9200跟9300,如果开启防火墙需要放行这两个端口
参考资料
老男孩教育_day105_视频