实验环境:CentOS 6.5 (64位)
服务器:drbd1 192.168.18.132
服务器:drbd2 192.168.18.133
一.DRBD环境搭建
1.hosts解析
#vim /etc/hosts
2.同步时间
#ntpdate
3.添加附加库
(1)#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
(2)#rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
4.安装DRBD
# yum install drbd84 kmod-drbd84 -y
5.两台服务器上的分区/dev/sdb1作为drbd的网络mirror分区
#fdisk /dev/sdb 备注,每个环境的磁盘名称可能不一样,用fdisk -L 查看一下磁盘名称为准。
#mkfs.ext4 /dev/sdb1 #在主上面做此操作。
6.开始配置NFS(两个节点都要执行)
1.#yum -y install rpcbind nfs-utils
2.# mkdir /usr/local/ftp #创建要存放的文件目录
3.# vi /etc/exports
/usr/local/ftp *(rw,no_root_squash,no_all_squash,sync)
4.# service rpcbind start
5.# chkconfig rpcbind on
6.# chkconfig nfs off #NFS不需要启动,也不需要设置成开机启动,这些都将由后面的Heartbeat来完成。
7.# netstat -tunlp|grep rpcbind #查看rpcbind是否启动成功
7.开始配置DRBD
# modprobe drbd #加载drbd模块到内核中(两个节点都要执行)
# lsmod | grep drbd #查看drbd模块是否加载成功(两个节点都要执行)
显示以上信息说明模块加载成功。
# cat /etc/drbd.conf
#vim /etc/drbd.d/global_common.conf
global {
usage-count yes;
}
common {
protocol C;
disk {
on-io-error detach;
}
syncer {
rate 100M; #100M传输速度
}
}
resource nfs {
on dm1 { #主机名称
device /dev/drbd1; #drbd网络磁盘
disk /dev/sdb1; #本地需要挂载的磁盘
address 192.168.18.132:7899; #主ip地址加drbd端口
meta-disk internal;
}
on dm2 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.18.133:7899;
meta-disk internal;
}
}
# drbdadm create-md nfs #激活前面配置的DRBD资源nfs(两个节点都要执行)
# service drbd start #两个节点都要执行
# chkconfig drbd on #两个节点都要执行
# cat /proc/drbd
#drbdsetup /dev/drbd1 primary #初始化一个主机(这几步只在主节点上操作)
注意:如果执行drbdsetup /dev/drbd1 primary的时候报图下所示,最后面加上“--o”即可。
#drbdadm primary nfs
#drbdadm -- --overwrite-data-of-peer primary nfs
#watch -n1 'cat /proc/drbd' #查看格式化进度
说明:
cs:两台数据连接状态
ro:两台主机的状态
ds:磁盘状态是“UpToDate/UpToDate”,同步状态。
9.DRBD的使用
# mkfs.ext4 /dev/drbd1 #在主上执行
# mount /dev/drbd1 /usr/local/ftp #挂载在ftp文件上
注意:secondary节点上不允许对DRBD设备进行任何操作,包括只读。所有的读写操作只能在主节点上进行,只有当主节点挂掉时,secondary节点才能提升为主节点,继续进行读写操作。
主从都安装依赖库
#yum -y install epel-release*
主从都安装heartbeat
#yum -y install heartbeat
1.修改配置文件
#cd /usr/share/doc/heartbeat-3.0.4/
#cp authkeys ha.cf haresources /etc/ha.d/
#cd /etc/ha.d
#vim authkeys #打开下面两项:一共有三种认证方式供选择,第一种是CRC循环冗余校验,第二种是SHA1哈希算法,第三种是MD3哈希算法,其中他们的密码可以任意设置,但是两边密码必须保持一致。
#chmod 600 authkeys #给认证文件授权为600,否则启动会报错。
2.修改haresources文件
#vim haresources
再最底下加入这一行,设置VIP。
dm1 IPaddr::192.168.18.180/32/eth0 drbddisk::nfs Filesystem::/dev/drbd1::/usr/local/ftp::ext4 nfs
说明
dm1 IPaddr::192.168.18.180/32/eth0 #主机名 后跟虚拟IP地址、接口
drbddisk::nfs #管理drbd资源的名称
Filesystem::/dev/drbd1::/usr/local/ftp::ext4 nfs #文件系统::挂载的目录及格式::后跟nfs资源脚本
3.修改ha.cf文件
debugfile /var/log/ha-debug #设定debug文件目录
logfile /var/log/ha-log #设定日志文件目录
logfacility local0 #利用系统日志打印日志
keepalive 2 #设定检查时间间隔为1s
deadtime 30 #设定在10s内没有心跳信号,则立即切换服务
warntime 10 #设定告警时间为5s(5s内没有收到对方的回应就报警)
initdead 120 #设定初始化时间为60s
udpport 694 #设定集群节点间的通信协议及端口为udp694监听端口(该端口可以修改)
ucast eth0 192.168.18.137 #设定心跳方式使用单播方式,并且是在eth0接口上进行单播,ip地址为对方的IP(网卡名称要一致性的IP)从机要改成主机的IP
auto_failback off #当主节点恢复后,是否自动切回,一般都设为off
node dm1 #指定两个节点
node dm2
ping 10.0.0.254 #两个IP的网关
respawn hacluster /usr/lib64/heartbeat/ipfail #使用这个脚本去侦听对方是否还活着(使用的是ICMP报文检测)
4.启动Heartbeat(先主后从)
#service heartbeat start
# chkconfig heartbeat on
# netstat -tunlp|grep hear
查看主的IP是否有VIP地址出现
#ip a | grep eth0
# df -h
#ip a | grep eth0 #没看到VIP是对的,只有主宕了才会切。
# df -h #没有挂载盘是对的,主宕了才会挂载过来。
实验挂载盘的服务器:192.168.18.138
进入对应的要挂载的目录下创建同名的目录
#mkdir ftp
安装NFS
#yum -y install rpcbind nfs-utils
#service rpcbind start
#chkconfig rpcbind on
ping一下挂载VIP是否能ping通。
#showmount -e 192.168.18.180 #showmount -e 挂载的VIP地址
#mount -t nfs 192.168.18.180:/usr/loacal/ftp /usr/local/ftp #共享文件的目录挂载到138的/usr/local/ftp上
#df -h
挂在完成。
实验共享目录
#touch 566
读写成功。
6.测试高可用
1.进到主服务器上,把服务关了看看。
#/etc/init.d/heartbeat stop
#ip a|grep eth0 #图下可以看到VIP已经释放
查看drbd资源是否释放
#df -h #可以看到图下资源已经释放。
#cat /proc/drbd #查看资源状态变为从
2.进到从服务器查看VIP是否漂移过来。
#ip a|grep eth0 #已看到VIP飘移成功
#df -h #DRBD资源切换成功,并挂载
# cat /proc/drbd #我们看到dm2上的DRBD角色由原来的备,已转换成主
DRBD+Heartbeat+NFS的高可用至此结束,对高可用的测试,我们上面只是测试了一种情况,当然还有其它几种情况,留给大家去测试吧!