九、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、实验总结

  1. 插入数据跟读写数据在任何节点都能执行
  2. es-head插件可以连接集群内任何一台存活的es服务器
  3. 主节点负责读写,数据节点(也就是副本分片)负责读,当然这是建议。
  4. 主节点宕机,数据节点会升级为主节点
  5. 主分片坏掉,副本分片会升级为主分片
  6. 如果副本数不满足(默认是一个主分片,一个副本分片),会复制数据到其他节点成为新的副本分片
  7. ES至少两个节点存活集群才能正常工作
  8. 集群宕机节点恢复上线会自动同步数据
  9. ES工作端口有9200跟9300,如果开启防火墙需要放行这两个端口

参考资料
老男孩教育_day105_视频

posted @ 2021-08-31 22:53  努力吧阿团  阅读(422)  评论(0编辑  收藏  举报