前言
前段时间线上发生了一次事故,有一台服务器磁盘坏了宕机了导致es集群发生了问题,在恢复的过程中遇到了一些问题,在这里记录一下,也算是对知识的总结
es集群的安装配置
准备
机器,三台服务器
安装包(官网下载)
https://www.elastic.co/downloads/elasticsearch
设置内核参数
vi /etc/sysctl.conf
设置文件描述符限制
vi /etc/security/limits.conf
安装
创建es用户
useradd elastic
安装包分别解压到三台服务器安装目录下,重命名区分
分配配置es配置文件
设置文件用户
chown -R elastic.elastic /home/elasticsearch-6.8.2-node-1
启动
cd elasticsearch-6.8.2-node-1/bin
./elasticsearch &
kibana安装和使用
下载kibana安装包(跟es版本一致)
https://www.elastic.co/downloads/kibana
解压并重命名
配置
启动
cd /usr/local/kibana/bin
./kibana &
访问并监控es集群
事故回顾
原因
刚开始在建集群的时候,没有太多机器,所以就把其中两个节点放在一台机器上。这次服务器宕机恰好是那两个节点的机器,导致了这次事故的发生
两个节点都挂了,分片部分丢失(默认五个分片,如果节点不多的情况下,会导致分片部分丢失,要注意节点放在不同的机器上)
集群恢复
停止kibana
删除kiabana产生的red索引
修改kibana配置文件中的index
重启kibana
重建索引
迁移数据(es reindex)
修改别名映射的源索引为新的索引
删除旧索引(代码中使用别名的话,就不需要改任何代码)
分片丢失导致恢复的时候找不到分片。
解决方法步骤:
应用索引全部恢复了之后,通过kibana发现应用索引部分都是green的,但是概览里面es还是red,通过排查发现,是kibana在运行的时候创建了一些系统索引,这部分也有索引缺失。
解决方法步骤:
总结
es在集群节点足够多的情况下,挂掉小部分节点,是不会对数据产生影响的,它的分片机制,在恢复的时候,只要存活节点上的分片都是存在的,数据会自动重新分片备份
在节点不多的情况下,如果有节点挂了,可能就会导致分片丢失的情况,等节点起来了,在自动同步的时候,发现分片缺失,自动同步就会有问题
除了平时开发加入的应用级索引外,es还有一部分的系统索引,比如引入kibana,就会创建一些系统索引
别名的使用很重要