昨天写了一篇关于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服务或者网络连接,查看其状态. 好了,这样我们就完成了今天的教程,如果大家有什么问题欢迎留言~