Elasticsearch 数据存储目录调整
in Note with 0 comment
Elasticsearch 数据存储目录调整
in Note with 0 comment

事情是这样的:

副本策略做了调整:
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 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、监控面板很重要,可以提前发现问题,这次容量存储量不足就是通过监控面板来做预估判断,所以要时不时看一下监控面板。

Responses