昨天写了一篇关于drbd的文章,今天是通过heartbeat实现drbd的主从切换,这样挂了一台服务器也不打紧了.
下面我们部署这一高可用.首先安装heartbeat,执行 yum install heartbeat
即可.
我们的主机ip是192.168.79.130,备机ip:192.168.79.131,虚拟ip:192.168.79.135,drbd同步的分区 /dev/sdb1
,挂载的目录 /data
.
drbd配置:
1、首先对 /dev/sdb
分区出 /dev/sdb1
,建立目录 /data
.
2、配置global和resource. 配置drbd.conf:
vi /usr/local/drbd/etc/drbd.conf
写入:
include "drbd.d/global_common.conf";
include "drbd.d/*.res";
配置global_common.conf:
vi /usr/local/drbd/etc/drbd.d/global_common.conf
写入:
global {
usage-count yes;
}
common {
net {
protocol C;
}
}
配置r0资源:
vi /usr/local/drbd/etc/drbd.d/r0.res
写入:
resource r0 {
on node1 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.79.130:7789;
meta-disk internal;
}
on node2 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.79.131:7789;
meta-disk internal;
}
}
3、设置hostname
vi /etc/sysconfig/network
修改HOSTNAME为node1. 编辑hosts:
vi /etc/hosts
添加:
192.168.79.130 node1
192.168.79.131 node2
使node1 hostnmae临时生效:
hostname node1
node2设置类似.
4、设置resource 以下操作需要在node1和node2操作.
modprobe drbd //载入 drbd 模块
dd if=/dev/zero of=/dev/sdb1 bs=1M count=100 /把一些资料塞到 sdb 內 (否则 create-md 时有可能会出现错误)
drbdadm create-md r0 //建立 drbd resource
drbdadm up r0 //启动 resource r0
5、设置Primary Node 以下操作仅在node1执行. 设置node1为primary node:
drbdadm primary --force r0
6、创建DRBD文件系统 以下操作仅在node1执行. 上面已经完成了 /dev/drbd1
的初始化,现在来把 /dev/drbd1
格式化成ext3格式的文件系统.
mkfs.ext3 /dev/drbd1
然后将 /dev/drbd1
挂载到之前创建的/data目录.
mount /dev/drbd1 /data
heartbeat配置: ha.cf 监控配置文件 haresources 资源管理文件 authkeys 心跳线连接加密文件 1、同步两台节点的时间
rm -rf /etc/localtime
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install -y ntp
ntpdate -d cn.pool.ntp.org
7、配置ha.cf
vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug #打开错误日志报告
keepalive 2 #两秒检测一次心跳线连接
deadtime 10 #10 秒测试不到主服务器心跳线为有问题出现
warntime 6 #警告时间(最好在 2 ~ 10 之间)
initdead 120 #初始化启动时 120 秒无连接视为正常,或指定heartbeat
#在启动时,需要等待120秒才去启动任何资源.
udpport 694 #用 udp 的 694 端口连接
ucast eth0 192.168.79.131 #单播方式连接(主从都写对方的 ip 进行连接)
node node1 #声明主服(注意是主机名uname -n不是域名)
node node2 #声明备服(注意是主机名uname -n不是域名)
auto_failback on #自动切换(主服恢复后可自动切换回来)这个不要开启
respawn hacluster /usr/lib/heartbeat/ipfail #监控ipfail进程是否挂掉,如果挂掉就重启它
8、配置authkeys
vi /etc/ha.d/authkeys
写入:
auth 1
1 crc
9、配置haresources
vi /etc/ha.d/haresources
写入:
node1 IPaddr::192.168.79.135/24/eth0 drbddisk::r0 Filesystem::/dev/drbd1::/data::ext3
node1:master主机名
IPaddr::192.168.79.135/24/eth0:设置虚拟IP
drbddisk::r0:管理资源r0
Filesystem::/dev/drbd1::/data::ext3:执行mount与unmout操作
node2配置基本相同,不同的是ha.cf中的192.168.79.131改为192.168.79.130. DRBD主从自动切换测试: 首先先在node1启动heartbeat,接着在node2启动,这时,node1等node2完全启动后,相继执行设置虚拟IP,启动drbd并设置primary,并挂载 /dev/drbd1到/data
目录,启动命令为:
service heartbeat start
这时,我们执行ip a命令,发现多了一个IP 192.168.79.135,这个就是虚拟IP.
cat /proc/drbd
查看drbd状态,显示primary/secondary状态,df -h显示/dev/drbd1已经挂载到/data目录. 然后我们来测试故障自动切换,停止node1的heartbeat服务或者断开网络连接,几秒后到node2查看状态. 接着恢复node1的heartbeat服务或者网络连接,查看其状态. 好了,这样我们就完成了今天的教程,如果大家有什么问题欢迎留言~