行云管家高可用部署环境扩展数据磁盘分区方案

一、HA扩展磁盘概述

在以高可用方式部署行云管家时,某些磁盘分区在部署期即被指定了其分区尺寸大小。而随着行云管家的运行和数据的持续增加(如MongoDB、MySQL、行云管家审计录像等数据均会持续增长),可能会出现磁盘分区可用空间不足的情况。一旦出现磁盘分区可用空间不足的情况,则会导致行云管家的服务运行异常而失去响应。

以高可用方式部署行云管家时,会使用到两台主机(以下将称之为node1和node2)进行部署,扩展磁盘分区时,如果是以DRBD方式进行部署的环境,需要同时对两台主机的磁盘进行扩展;如果是以共享存储方式进行部署的环境,则仅需在其中一台主机进行磁盘扩展操作。

本文将介绍以共享存储方式部署时的磁盘分区扩展方案,以及以DRBD方式部署时的两种扩展磁盘分区的方案,作为扩展行云管家所用磁盘分区的指引。实际操作时,可根据实际情况采取相应方案来对磁盘分区进行扩展。

另外,可以设置对磁盘分区使用率进行监控,在磁盘分区占用率达到告警阈值时,管理员即可获得告警,从而提前对磁盘分区进行扩展,进而避免因为磁盘分区可用空间不足而导致的行云管家服务停机。

二、共享存储模式-磁盘扩展

以共享存储方式进行行云管家高可用部署时,其磁盘空间扩展方法如下。

2.1、扩展数据分区所在共享存储容量

首先,在node1和node2两台主机的操作系统外,将数据分区所在共享存储(磁盘)的容量扩大。

数据分区所在共享存储(磁盘)的容量扩大后,可能需要重启两台主机操作系统,方可识别到新增的共享存储(磁盘)容量。

如果需要重启两台主机的操作系统,则按以下步骤进行重启:

1、在node1主机执行以下命令,对SkybilityHA作全局禁用

hasvcadm --global --disable

2、在node1和node2主机中,分别执行以下命令,重启操作系统

reboot

3、待node1和node2主机操作系统重启完毕后,在两台主机中分别执行以下命令,取消SkybilityHA全局禁用,并启动行云管家服务

hasvcadm --global --enable

4、执行以下命令,查看磁盘,可以看到容量增加了

lsblk

命令执行后,将会查看到磁盘的容量,类似下图:

其中sdb即为共享存储磁盘,SIZE列的值即为其容量(从图中可以看出,sdb磁盘的总容量为80G,sdb1分区容量为70G,sdb盘新增了10G容量,新增容量尚未分区) 。

2.2、设置SkybilityHA全局禁用

如果当前共享存储磁盘状态正常,则可以做扩展共享存储盘容量操作,首先在node1主机执行以下命令,设置SkybilityHA全局禁用

hasvcadm --global --disable

2.3、创建新分区

以下以共享存储盘 /dev/sdb 为例,说明如何将新增的磁盘空间创建为一个新的分区。

1、在node1主机上,执行以下操作,修正分区表信息

1.1、执行以下命令,进入磁盘分区工具界面

parted /dev/sdb

执行上述命令后,将进入如下界面

1.2、在上述界面中输入 p ,并敲回车键,将进入如下界面

1.3、在上述界面中输入 Fix ,并敲回车键,将进入如下界面

1.4、在上述界面中输入 Fix ,并敲回车键,将进入如下界面

1.5、在上述界面中输入 q ,并敲回车键,完成分区表信息修正并退出parted工具界面

2、在node1主机上,执行以下操作,创建新的分区

2.1、执行以下命令,进入fdisk分区工具界面

fdisk /dev/sdb

2.2、在上述界面中,输入 p ,敲回车键,进入如下界面,显示当前分区情况

2.3、在上述界面中,输入 n ,敲回车键,进入如下界面,准备创建新的分区

2.4、在上述界面中,直接敲回车键,进入如下界面

2.5、在上述界面中,直接敲回车键,进入如下界面

2.6、在上述界面中,直接敲回车键,进入如下界面

2.7、在上述界面中,输入 w ,敲回车键,完成创建新的分区并退出fdisk分区工具界面

2.8、执行以下命令,更新分区表信息

partprobe

2.9、执行以下命令,将新的分区设置为lvm,从而完成新分区创建

parted --script /dev/sdb "set 2 lvm on"

2.4、扩展共享存储盘容量

以下假设新增的磁盘分区为 /dev/sdb2 ,并以此为例做命令操作说明。

1、在node1主机上,分别执行以下三行命令,将 /dev/sdb2 分区创建为物理卷,并加入卷组 vg_gj ,同时扩展逻辑卷 lv_cloudbility (将新分区sdb2的所有容量扩充到lv_cloudbility逻辑卷中)

pvcreate /dev/sdb2

vgextend vg_gj /dev/sdb2 

lvextend -l +100%FREE /dev/vg_gj/lv_cloudbility

执行上述命令后,再执行 lsblk 命令,将看到类似如下输出,可以看到,sdb2 分区被加入到了vg_gj卷组中,并作为了逻辑卷lv_cloudbility的底层磁盘

2、在node1主机中,执行以下命令,扩展逻辑卷lv_cloudbility的容量

resize2fs /dev/vg_gj/lv_cloudbility

3、在node2主机中,执行以下命令,更新分区表信息

partprobe

2.5、取消SkybilityHA全局禁用

在node1主机执行以下命令,取消SkybilityHA全局禁用

hasvcadm --global --enable

至此,即可完成共享存储磁盘扩展。

三、DRBD模式-磁盘扩展1-增加新磁盘

如果条件允许,可以为node1和node2两台主机分别增加一块磁盘(数据盘),例如行云管家部署在公有云主机中时,则可以为部署行云管家的两台主机分别增加一块数据盘。

以下以扩展Mongo数据分区为例进行说明,实现扩展Mongo数据分区的容量。

3.1、增加磁盘

首先,需要在操作系统外为两台部署行云管家的主机分别增加一块磁盘。增加的磁盘的大小根据实际需要来设置,例如50G。

添加磁盘后,可能需要重启主机操作系统,使其识别到新增的磁盘。

如果需要重启两台主机的操作系统,则按以下步骤进行重启:

1、在node1主机执行以下命令,对SkybilityHA作全局禁用

hasvcadm --global --disable

2、在node1和node2主机中,分别执行以下命令,重启操作系统

reboot

3、待node1和node2主机操作系统重启完毕后,在两台主机中分别执行以下命令,取消SkybilityHA全局禁用,并启动行云管家服务

hasvcadm --global --enable

4、执行以下命令,查看新增加的磁盘

lsblk

命令执行后,将会查看到新增加的磁盘,类似下图:

其中sdb即为新增加的磁盘,其路径为/dev/sdb 。

3.2、确认当前drbd状态

扩展drbd分区容量前,需要先保证当前drbd状态正常。

在node1主机中执行以下命令,查询drbd状态

cat /proc/drbd

执行上述命令后,如果看到类似以下输出,则表明node1和node2两个主机节点的drbd数据是同步的、状态时正常的

如上图,”Connected”表示两个drbd节点是处于连接状态的,”UpToDate/UpToDate”表明两个节点的drbd盘数据是同步的。

如果drbd状态不正常,则需要先参考《SkybilityHA_FAQ》,处理好drbd同步状态后,再做本文后述“扩展drbd盘容量”操作。

3.3、设置SkybilityHA全局禁用

如果drbd状态正常,则可以做扩展drbd盘容量操作,首先在node1主机执行以下命令,设置SkybilityHA全局禁用

hasvcadm --global --disable

3.4、扩展drbd盘容量

以下假设新增的磁盘为 /dev/sdb ,并以此为例做命令操作说明。

1、在node1和node2两台主机上,分别执行以下三行命令,对新增磁盘进行分区(注意:命令行中的 /dev/sdb 为新增的磁盘,执行命令前需要根据实际情况给出)

parted --script /dev/sdb "mklabel gpt"
parted --script /dev/sdb "mkpart primary 0% 100%"
parted --script /dev/sdb "set 1 lvm on"

上述命令执行后,再执行 lsblk 命令,将看到如下图的输出,可以看到新增了sdb1 分区

2、在node1和node2两台主机上,分别执行以下三行命令,将 /dev/sdb1 分区创建为物理卷,并加入卷组 vg_gj_b ,同时扩展逻辑卷 lv_gj_b

pvcreate /dev/sdb1 
vgextend vg_gj_b /dev/sdb1 
lvextend -l +100%FREE /dev/vg_gj_b/lv_gj_b

执行上述命令后,再执行 lsblk 命令,将看到类似如下输出,可以看到,sdb1 分区被加入到了vg_gj_b卷组中,并作为了逻辑卷lv_gj_b的底层磁盘

3、在node1和node2两台主机中,分别执行以下一行命令,扩展drbd盘空间

drbdadm resize drbd0

4、等待drbd同步完成,再执⾏后续命令,可通过在node1或node2主机中执行命令 cat /proc/drbd 查看drbd的同步状态,同步100%后再进⾏后续操作

[root@gj-a ~]# cat /proc/drbd 
version: 8.4.11-1 (api:1/proto:86-101) 
GIT-hash: 6cabe58ac8a400ca3c85ef8932f655f8d01f1e84 build by support@skybilityha.com, 2020-05-27 16:09:04 
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent B r----- 
ns:649944 nr:0 dw:633608 dr:54473017 al:115 bm:0 lo:0 pe:0 ua:4 ap:0 ep:1 wo:d oos:216396 
[==================>.] sync'ed: 99.6% (208/49584)M 
finish: 0:00:01 speed: 104,936 (107,344) K/sec 

5、在node1和node2两台主机上,分别执行以下一行命令,扩展drbd0所在pv,从而完成扩展drbd盘容量操作

if cat /proc/drbd | grep "Primary/Secondary"; then pvresize /dev/drbd0 ; fi

3.5、扩展数据分区容量

以下以为Mongo分区增加5G容量为例,进行分区容量扩展说明。

1、在node1和node2两台主机上,分别执行以下一行命令,为Mongo分区增加5G容量

if cat /proc/drbd | grep "Primary/Secondary"; then lvextend -L +5G /dev/vg_gj/lv_mongo ; fi

2、在node1和node2两台主机上,分别执行以下一行命令,重新检测Mongo所在⽂件系统⼤⼩,从而完成扩展数据分区容量操作

if cat /proc/drbd | grep "Primary/Secondary"; then resize2fs /dev/vg_gj/lv_mongo ; fi

3.6、取消SkybilityHA全局禁用

在node1主机执行以下命令,取消SkybilityHA全局禁用

hasvcadm --global --enable

至此,即可成功扩展数据盘分区容量,此时,可以运行行云管家,并进行操作,如果操作正常(例如查看原有的审计录像正常),即表示扩展磁盘分区成功。

四、DRBD模式-磁盘扩展2-扩大现有磁盘容量

可以增加node1和node2两台主机中用做drbd盘的磁盘的容量,然后将新增容量扩展至数据分区,从而扩展数据分区的容量。

以下以扩展Mongo分区为例进行说明,按以下步骤操作,实现扩展Mongo分区的容量。

4.1、扩展数据分区所在磁盘容量

首先,在node1和node2两台主机的操作系统外,将drbd所在磁盘的容量扩大。

drbd所在磁盘的容量扩大后,可能需要重启两台主机操作系统,方可识别到新增的磁盘容量。

如果需要重启两台主机的操作系统,则按以下步骤进行重启:

1、在node1主机执行以下命令,对SkybilityHA作全局禁用

hasvcadm --global --disable

2、在node1和node2主机中,分别执行以下命令,重启操作系统

reboot

3、待node1和node2主机操作系统重启完毕后,在两台主机中分别执行以下命令,取消SkybilityHA全局禁用,并启动行云管家服务

hasvcadm --global --enable

4、执行以下命令,查看磁盘,可以看到容量增加了

lsblk

命令执行后,将会查看到磁盘的容量,类似下图:

其中vdb即为drbd磁盘,SIZE列的值即为其容量 。

4.2、确认当前drbd状态

扩展drbd分区容量前,需要先保证当前drbd状态正常。

在node1节点执行以下命令,查询drbd状态

cat /proc/drbd

执行上述命令后,如果看到类似以下输出,则表明node1和node2两个主机节点的drbd数据是同步的、状态时正常的

如上图,”Connected”表示两个drbd节点是处于连接状态的,”UpToDate/UpToDate”表明两个节点的drbd盘数据是同步的。

如果drbd状态不正常,则需要先参考《SkybilityHA_FAQ》,处理好drbd同步状态后,再做本文后述“扩展drbd盘容量”操作。

4.3、设置SkybilityHA全局禁用

如果drbd状态正常,则可以做扩展drbd盘容量操作,首先在node1主机执行以下命令,设置SkybilityHA全局禁用

hasvcadm --global --disable

4.4、创建新分区

以下以数据盘 /dev/vdb 为例,说明如何将新增的磁盘空间创建为一个新的分区。

1、在node1和node2两台主机上,分别执行以下操作,修正分区表信息

1.1、执行以下命令,进入磁盘分区工具界面

parted /dev/vdb

执行上述命令后,将进入如下界面

1.2、在上述界面中输入 p ,并敲回车键,将进入如下界面

1.3、在上述界面中输入 Fix ,并敲回车键,将进入如下界面

1.4、在上述界面中输入 Fix ,并敲回车键,将进入如下界面

1.5、在上述界面中输入 q ,并敲回车键,完成分区表信息修正并退出parted工具界面

2、在node1和node2两台主机上,分别执行以下操作,创建新的分区

2.1、执行以下命令,进入fdisk分区工具界面

fdisk /dev/vdb

2.2、在上述界面中,输入 p ,敲回车键,进入如下界面,显示当前分区情况

2.3、在上述界面中,输入 n ,敲回车键,进入如下界面,准备创建新的分区

2.4、在上述界面中,直接敲回车键,进入如下界面

2.5、在上述界面中,直接敲回车键,进入如下界面

2.6、在上述界面中,直接敲回车键,进入如下界面

2.7、在上述界面中,输入 w ,敲回车键,完成创建新的分区并退出fdisk分区工具界面

2.8、执行以下命令,更新分区表信息

partprobe

2.9、执行以下命令,将新的分区设置为lvm,从而完成新分区创建

parted --script /dev/vdb "set 2 lvm on"

4.5、扩展drbd盘容量

以下假设新增的磁盘分区为 /dev/vdb2 ,并以此为例做命令操作说明。

1、在node1和node2两台主机上,分别执行以下三行命令,将 /dev/vdb2 分区创建为物理卷,并加入卷组 vg_gj_b ,同时扩展逻辑卷 lv_gj_b

pvcreate /dev/vdb2
vgextend vg_gj_b /dev/vdb2 
lvextend -l +100%FREE /dev/vg_gj_b/lv_gj_b

执行上述命令后,再执行 lsblk 命令,将看到类似如下输出,可以看到,vdb2 分区被加入到了vg_gj_b卷组中,并作为了逻辑卷lv_gj_b的底层磁盘

2、在node1和node2两台主机中,分别执行以下命令,扩展drbd

drbdadm resize drbd0

3、等待drbd同步完成,再执⾏后续命令,可通过在node1或node2主机中执行命令 cat /proc/drbd 查看同步状态,待同步100%后再进⾏后续“扩展数据分区容量”操作

4、在node1和node2两台主机上执行以下命令,扩展drbd0所在pv,完成扩展drbd盘容量操作

if cat /proc/drbd | grep "Primary/Secondary"; then pvresize /dev/drbd0 ; fi

4.6、扩展数据分区容量

以下以为Mongo分区增加5G容量为例,进行分区容量扩展说明。

1、在node1和node2两台主机上,分别执行以下一行命令,为Mongo分区增加5G容量

if cat /proc/drbd | grep "Primary/Secondary"; then lvextend -L +5G /dev/vg_gj/lv_mongo ; fi

2、在node1和node2两台主机上,分别执行以下命令,重新检测Mongo所在⽂件系统⼤⼩,即可完成扩展Mongo数据分区容量操作

if cat /proc/drbd | grep "Primary/Secondary"; then resize2fs /dev/vg_gj/lv_mongo ; fi

4.7、取消SkybilityHA全局禁用

在node1主机执行以下命令,取消SkybilityHA全局禁用

hasvcadm --global --enable

至此,即可成功扩展数据盘分区容量,此时,可以运行行云管家,并进行操作,如果操作正常(例如查看原有的审计录像正常),即表示扩展磁盘分区成功。

五、附录:设置磁盘空间监控告警

通过在SkybilityHA中设置数据磁盘分区监控,监控数据磁盘分区的消耗情况,在磁盘分区空间占用达到设定阈值时,可以获得邮件通知,进而在数据磁盘分区空间占满之前,对其进行扩展,避免因磁盘空间不足而引起服务停止。

设置SkybilityHA磁盘空间监控操作如下。

5.1、安装监控组件包

1、将SkybilityHA-disk-percent-5-0.x86_64.rpm组件包拷贝至两台部署了SkybilityHA的主机(以下将两台主机简称为 node1 和 node2)的/opt目录

2、在node1和node2两台主机中,分别执行以下命令,安装监控组件

cd /opt
yum -y install SkybilityHA-disk-percent-5-0.x86_64.rpm

5.2、开启SkybilityHA并配置邮件服务

SkybilityHA的监控告警信息将以电子邮件进行发送,邮件发送至指定的管理员邮箱。

配置SkybilityHA邮件服务操作如下。

1、以浏览器登录SkybilityHA管理控制台,行云管家部署环境中的SkybilityHA管理控制台登录地址为:http://node1_ip:9099 或 http://node2_ip:9099 ,其中 node1_ip 指的是node1主机的ip地址,node2_ip指的是node2主机的ip地址,登录后将进入SkybilityHA管理控制台

2、点击“全局配置”,进入全局配置界面

3、在全局配置界面下,找到“E-MAIL”区域,并勾选其中的“启用”,开启邮件配置

4、配置邮件发送设置,如下图,指定邮件发送服务器地址、端口、登录用户、接收邮件者地址等信息

5、设置完毕后,点击页面上方的“保存”,使得邮件设置生效,完成邮件配置

5.3、SkybilityHA监控服务设置

通过设置监控行云管家数据磁盘占用率,在磁盘空间占用率达到监控阈值时可以获得邮件通知。以下以设置磁盘占用率达到85%时,发送告警邮件为例进行设置。

1、在node1主机上执行以下命令,对SkybilityHA做全局禁用

hasvcadm --global --disable

2、在node1主机上执行以下一行命令(注意:是一行命令,可以整体拷贝粘贴到SSH终端中执行),设置HA资源监控服务

hacli << EOF
service add -n disk_mon_srv --node gj-a --node gj-b
resource add -n disk_mon_rsc -s disk_mon_srv
resource parameter add disk_percent/disk -n disk_mon_rsc --mountpoint /var/lib/mongo,/var/lib/mysql,/var/lib/influxdb,/var/lib/redis,/opt/cloudbility --percent 85
location add --parent mongo --child disk_mon_srv
bootfirst add --first mongo --second disk_mon_srv
saveconfig
exit
EOF

3、在node1主机上执行以下一行命令,同步HA配置到node2主机节点

haconf -sn

4、在node1主机上执行以下命令,取消SkybilityHA全局禁用

hasvcadm --global --enable

至此,即可完成磁盘空间占用监控告警设置。