本次试验环境
OS:5台RHEL6.4 x86_64 最小化安装
图1为本次试验示意图
其中上图DRBD为添加的5g硬盘,用来DRBD同步数据使用
oss1也添加一块5g的硬盘作为ost使用
MDS采用active-standby模式,示意图如下所示
所有节点的hosts文件如下
[root@mds1~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
# Public Entries
192.168.78.12 mds1
192.168.78.13 mds2
192.168.78.14 oss1
# LnetEntries
172.16.1.254 mds1-eth1
172.16.1.253 mds2-eth1
172.16.1.252 oss1-eth1
#HeartBeat Entries
10.1.1.1 mds1-eth2
10.1.1.2 mds2-eth2
# DRBD Entries
192.168.10.1 mds1-eth3
192.168.10.2 mds2-eth3
软件版本
lustre-2.4.3
heartbeat-3.0.4
drbd-8.4.4.tar.gz
一:首先在所有节点上安装lustre
1.首先配置好本地yum源
下载好的lustre包如下所示
[root@mds1 lustre-2.4.3]# ls
e2fsprogs-1.42.9.wc1-7.el6.x86_64.rpm
e2fsprogs-libs-1.42.9.wc1-7.el6.x86_64.rpm
e2fsprogs-static-1.42.9.wc1-7.el6.x86_64.rpm
kernel-2.6.32-358.23.2.el6_lustre.x86_64.rpm
kernel-devel-2.6.32-358.23.2.el6_lustre.x86_64.rpm
kernel-firmware-2.6.32-358.23.2.el6_lustre.x86_64.rpm
kernel-headers-2.6.32-358.23.2.el6_lustre.x86_64.rpm
libcom_err-1.42.9.wc1-7.el6.x86_64.rpm
libss-1.42.9.wc1-7.el6.x86_64.rpm
lustre-2.4.3-2.6.32_358.23.2.el6_lustre.x86_64.x86_64.rpm
lustre-iokit-1.4.0-1.noarch.rpm
lustre-ldiskfs-4.1.0-2.6.32_358.23.2.el6_lustre.x86_64.x86_64.rpm
lustre-modules-2.4.3-2.6.32_358.23.2.el6_lustre.x86_64.x86_64.rpm
lustre-osd-ldiskfs-2.4.3-2.6.32_358.23.2.el6_lustre.x86_64.x86_64.rpm
lustre-source-2.4.3-2.6.32_358.23.2.el6_lustre.x86_64.x86_64.rpm
lustre-tests-2.4.3-2.6.32_358.23.2.el6_lustre.x86_64.x86_64.rpm
perf-2.6.32-358.23.2.el6_lustre.x86_64.rpm
python-perf-2.6.32-358.23.2.el6_lustre.x86_64.rpm
[root@mds1 lustre-2.4.3]#
开始安装lustre
[root@mds1 lustre-2.4.3]# yum -y --nogpgcheck install *.rpm && reboot
查看是否安装成功
uname -r
2.6.32-358.23.2.el6_lustre.x86_64
可看到内核已经更改,可知安装成功
2.配置LNET
本实验用eth1作为lnet
cd /etc/modprobe.d
touch lnet.conf
cat lnet.conf
options lnet networks=tcp0(eth1)
检查一下lnet配置是否正确
有上图可知,配置正确
3.在mds1,mds2上安装drbd
yum -y install flex kernel-devel libxslt
tar xzvfdrbd-8.4.4.tar.gz -C /usr/local/src
cd drbd-8.3.11
./configure--prefix=/usr \
--localstatedir=/var \
--sysconfdir=/etc \
--with-km
make
make install
测试drbd是否安装成功
如上图所示可知drbd安装成功
4.配置drbd
cd /etc/drbd.d/
vi global_common.conf
把usage-count yes改为usage-count no;(不是必须)
在net {}里添加protocol C;
[root@mds1 drbd.d]# touch r0.res
[root@mds1 drbd.d]# cat r0.res
resource r0 {
meta-disk internal;
device /dev/drbd0;
disk /dev/sdb;
on mds1 {
address 192.168.10.1:7898; //这里要直接使用IP地址
}
on mds2 {
address 192.168.10.2:7898;
}
}
[root@mds1 drbd.d]#
在启动drbd之前,需要分别在mds1和mds2上创建drbd元数据块
启动DRBD
chkconfig drbd on
目前状态为secondary/secondary,还未进行同步,使用下面命令进行同步
有上图ds:UoToDate/UpToDate可知同步完成
首先在mds1上(因为此时mds1为primay)创建lustre文件系统
mkfs.lustre --fsname=lustre \
--mgs \
--mdt \
--failnode=mds2-eth1 \
--index=0 /dev/drbd0
把drbd主备状态恢复
drbdadm secondaryall
在mds1,mds2上创建目录/mdt
5.在mds1,mds2上安装heartbeat
本次实验我图省事用yum安装heartbeat(实际生产环境中建议自己编译heartbeat)
yum -y install heartbeat*
二:配置mds的高可用(active-standby模式)
在mds1节点上
cp/usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/
cp/usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/haresources/etc/ha.d/
[root@mds1 ~]# grep -v "^#" /etc/ha.d/authkeys |grep ^[^$]
auth 1
1 crc
[root@mds1 ~]# ls -l /etc/ha.d/authkeys
-rw------- 1 root root 643 Oct 24 09:05 /etc/ha.d/authkeys
[root@mds1 ~]#
[root@mds1 ~]# grep -v "^#" /etc/ha.d/ha.cf |grep ^[^$]
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 1
deadtime 15
warntime 5
initdead 60
udpport 694
ucast eth2 10.1.1.2 //采用单播模式,在mds2上IP要改成对方的IP即10.1.1.1
auto_failback off
node mds1
node mds2
ping 192.168.78.2
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
[root@mds1 ~]#
[root@mds1 ~]# grep -v "^#" /etc/ha.d/haresources |grep^[^$]
mds1 drbddisk::r0 Filesystem::/dev/drbd0::/mdt::lustre
[root@mds1 ~]#
复制authkeys,ha.cf,haresources到mds2上
scp/etc/ha.d/ha.cf mds2:/etc/ha.d/
scp/ec/ha.d/authkeys mds2:/etc/ha.d/
scp/etc/ha.d/haresources mds2:/etc/ha.d/
分别在两台机器上启动heartbeat
/etc/init.d/heartbeatstart ; chkconfig heartbeat on
有上图后台日志可知,heartbeat启动成功,资源启动成功
由上图可知,lustre挂载成功
现在测试一下能否自动切换
第一种情况:mds1正常重启
在mds2上tail -f /var/log/messages &观察后台日志
正常重启是可以正常切换的
第二种情况:不正常关机(把mds2断电)
因为现在已经切换到mds2上了,所以这次在mds1上观察日志
drbd首先发现mds2 dead如上图所示
mds1又重新开始接管资源(上图)
此时的mds2的drbd状态为unkonwn
把mds2插电开机
mds2开机后drbd又开始同步,这是因为mds2为非正常关机,为了保持数据的一致性,所以又开始重新同步
三:配置oss
1.在oss1上创建lustre文件系统
mkfs.lustre--fsname=lustre \
--mgsnode=mds1-eth1@tcp0\
--mgsnode=mds2-eth1@tcp0\
--index=0 \
--ost /dev/sdb
创建/ost目录mkdir /ost1
vi /etc/fstab添加
/dev/sdb /ost1 lustre defaults,_netdev 0 0
挂载ost1分区mount /ost1 -v
在mds1上查看是否可以看到刚才的ost
有上图可看到刚才的ost并且为activate状态
四:客户端挂载
创建挂载目录/lustre
mkdir /lustre
挂载lustre
在/etc/fstab中添加挂载选项
mds1-eth1@tcp0:mds2-eth1@tcp0:/lustre /ost lustre defaults,_netdev 0 0
五:测试mds高可用是否正常
1.在客户端/lustre目录下创建一个测试目录和几个测试文件
mkdir /lustre/abcd
touch/lustre/sortware
目前mds服务运行在mds1上,现在把mds1关机,看是否还是可以继续往/lustre目录里写文件
由上图可知客户端发现连接到172.16.1.254@tcp0丢失,此时ll命令会卡住2到3秒钟后,目录abcd,文件software又再次出现,当然现在也可以往里写新文件
由上图hpc1日志可知连接被恢复连接到了mds2
至此lustre—mds高可用配置成功完成
本文出自 “永不止步” 博客,谢绝转载!
通过heartbeat配置lustre元数据服务器mds高可用
原文地址:http://wjcaiyf.blog.51cto.com/7105309/1585990