事情是这样的:
副本策略做了调整:
1、es 集群机器多,节点多,为了达到更高的稳定性,决定启用一个主分片,两个副分片的存储策略,也就是一份数据存三份,允许最多两台机器同时挂掉;
2、数据较之前多存了一份,整体容量也直接飙升了三分之一。
集群可用容量变化:
1、每个节点只有 900G 的盘容量,11个节点共 9900G;
2、每个节点每周增长30G+,每个节点每月增长130G+。
导致的问题:
1、副本调整前,数据可以存储到 5~6 个月;
2、副本调整后,数据只能存储到 2~3 个月。
集群可用存储容量严重不够,需要紧急解决。
解决思路:
1、每台机器给到存储盘都是两个 SSD 做软 RAID1,可以把做了 RAID1 的目录解除,恢复到两个盘;
2、重新配置,让该节点使用两个盘作为数据目录,做到了每个节点有 1800G 的存储量。
调整操作:
我们的做了 RAID1 的两个盘分别为下面,可通过lsblk
命令查找
/dev/sdb1
/dev/sdc1
1、停掉需要调整的机器
这个停止操作会导致集群状态变为yellow,因为某些索引的分片总数变为2,需要恢复到3。停掉就行,先不用管这个状态。
sudo systemctl stop elasticsearch
2、配置 ip 卡为高性能模式
找到内网的 ip 卡,一般为 ib0
, 如果不一样就要修改下面的 ib0
为对应的卡,之前没有配置,这次顺便配上。
ip a
echo "connected" > /sys/class/net/ib0/mode
vim /etc/infiniband/openib.conf
找到SET_IPOIB_CM
,设置为yes
3、卸载原来的目录
umount /exports_data
4、删除 RAID
停止运行 RAID
mdadm -S /dev/md0
删除自动配置文件(可能没有这个文件)
cat /dev/null > /etc/mdadm/mdadm.conf
- 删除元数据
mdadm --zero-superblock /dev/sdb1 mdadm --zero-superblock /dev/sdc1
至此软 RAID 1 已彻底删除,重启后也不会自动安装了。
5、去掉挂载配置
vim /etc/fstab
删掉原来挂在的 exports_data 那行
6、初始化 SSD
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdc1
6、创建新目录
这里新目录使用 es_data
作为前缀目录,存储目录使用storage0*
来命名规范
mkdir -p /es_data/storage01 /es_data/storage02
7、配置fstab
sdb1uuid=`ll /dev/disk/by-uuid/ | grep sdb1 | awk '{print $9}'`; echo "UUID=$sdb1uuid /es_data/storage01 ext4 defaults 0 0" >> /etc/fstab
sdc1uuid=`ll /dev/disk/by-uuid/ | grep sdc1 | awk '{print $9}'`; echo "UUID=$sdc1uuid /es_data/storage02 ext4 defaults 0 0" >> /etc/fstab
8、启动目录
mount -a
9、创建 es 生产存储目录
mkdir -p /es_data/storage01/production/elasticsearch/lib
mkdir -p /es_data/storage02/production/elasticsearch/lib
chown -R elasticsearch:elasticsearch /es_data
10、修改 es 配置文件
vim /etc/elasticsearch/elasticsearch.yml
找到path.data
并修改为
path.data: [ /es_data/storage01/production/elasticsearch/lib, /es_data/storage02/production/elasticsearch/lib ]
11、启动服务
sudo systemctl start elasticsearch
至此该 es 节点数据存储目录调整结束。
12、检查恢复状态
GET _cluster/health
检查发现,一般1小时左右就会恢复正常。
后面将会逐步把所有节点都调整完。
总结
1、机器硬件配置需求提得不合理,尤其是存储盘,没有作数据增长量的预估,增加了副本数才暴露了问题;
2、监控面板很重要,可以提前发现问题,这次容量存储量不足就是通过监控面板来做预估判断,所以要时不时看一下监控面板。
本文由 Chakhsu Lau 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。