本文转自金星工作室 介绍 作为服务器 需要提供一定的24X7的安全保证 这样可以防止关键节点的宕机引起系统的全面崩溃 在这里我们用 lvs 和 DRBD 实现了一个真实环境下的双机热容错集群。这里的关键技术是 如何实现ip代换, mon/heartbeat检测, 文件同步。同样这一方法稍加改动就可以实现oracle热备份 ldap热备份 如果你不理解FOS 可以参看我写的 \"自己动手安装Red Hat High Availability Server 《前篇》\"
方案描述 将真实服务地址帮定到一个虚拟网卡(eth0:1)上通过检测程序(heartbeat)来将主机或是备份主机的虚拟网卡(eth0:1)激活。从而实现热备份。使用网络硬盘RAID来同步文件。检测程序通过内网进行监控
拓扑结构
工作模式
正常状态:
备份激活:
主机就绪:
切换回正常模式:
需要手动停止备份服务器的服务,系统会自动切换回正常模式
软硬件需求 两台双网卡主机完全安装 redhat6.2
主机IP 10.0.0.126 备份主机IP 10.0.0.250
实际服务即浮动IP 202.93.204.68
下载需要的软件
ftp://ha.redhat.com/pub/ha/piranha-docs-0.4.17-2.i386.rpm ftp://ha.redhat.com/pub/ha/piranha-gui-0.4.17-2.i386.rpm ftp://ha.redhat.com/pub/ha/piranha-0.4.17-2.i386.rpm ftp://ha.redhat.com/pub/ha/ipvsadm-1.11-4.i386.rpm
安装软件 fos 安装 rpm –Uvh ipvsadm* piranha*两台主机都要装 qmaild脚本安装 DRBD 安装 Tar zvxf tar -zvxf drbd-0.5.8.1.tar.gz cd drbd make make install
有如下相关文件 /usr/sbin/drbdsetup /lib/modules/2.2.18pre11-va2.1/block/drbd.o /etc/ha.d/resource.d /etc/rc.d/init.d/drbd /sbin/insmod drbd进行测试 应返回”Using /lib/modules/2.2.18pre11-va2.1/block/drbd.o”
设置 编辑/etc/lvs.cf文件 #Example of /etc/lvs.cf #还需要smtpd popd这两个启动脚本
service =fos # 采用fos模式 primary =10.0.0.126 # 主ip地址(qmail) backup =10.0.0.250 # 备份主机ip地址(Backup) backup_active =1 # 激活备份 heartbeat =1 # 激活Heartbeat heartbeat_port =1050 # Heartbeat端口 keepalive =2 # heartbeat间隔 单位秒 deadtime =10 # 判定死机间隔
rsh_command =ssh # 文件同步方案 选ssh #failoverqmail服务 failover pop { active =1 # 激活监听服务 address =202.93.204.68 eth0:1 # port =110 #pop 端口 send =\"\\n\" #pop 连接特征串 expect =\"+OK\" #pop 反馈特征串 timeout =10 start_cmd =\"/etc/rc.d/init.d/popd start\" #pop 启动命令 stop_cmd =\"/etc/rc.d/init.d/popd stop\" #pop关闭命令 }
failover smtp { active =1 #激活监听服务 address =202.93.204.68 eth0:1 # port =25 #smtp端口 send =\"\\n\" #smtp 连接特征串 expect =\"220\" #smtp 反馈特征串 timeout =10 start_cmd =\"/etc/rc.d/init.d/smtpd start\" # smtp启动命令 stop_cmd =\"/etc/rc.d/init.d/smtpd stop\" # smtp关闭命令 }
failover mirror { active =1 timeout =10 start_cmd =\"/etc/ha.d/resource.d/datadisk start\" # DRBD启动命令 stop_cmd =\"/etc/ha.d/resource.d/datadisk stop\" # DRBD 关闭命令 }
同步LVS文件 scp /etc/lvs.cf 10.0.0.112:/etc/lvs.cf
编辑/etc/fstab加入 (两台都要加) /dev/nb0 /var/qmail ext2 noauto 0 0 #FOS RAID
如下
/dev/sda1 /boot ext2 defaults 1 1 /dev/sda2 / ext2 defaults 1 1 /dev/nb0 /var/qmail ext2 noauto 0 0 #FOS RAID /dev/sda4 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0
编辑/etc/drbd.conf
resource drbd0 {
protocol=B
fsck-cmd=fsck.ext2 -p -y
on thost1 {
device=/dev/nb0
disk=/dev/hda7
address=10.0.0.126
port=7789
}
on thost2 {
device=/dev/nb0
disk=/dev/hda7
address=10.0.0.250
port=7789
}
}
检查两台主机drbd是否载入 #/sbin/lsmod
Module Size Used by
drbd 37792 0 (unused)
3c59x 20880 1 (autoclean)
如果drbd没有载入用如下命令载入
/sbin/insmod /lib/modules/2.2.18pre11-va2.1/block/drbd.o
在备份主机上挂接镜像盘 /usr/sbin/drbdsetup /dev/nb0 disk /dev/sda2 /usr/sbin/drbdsetup /dev/nb0 net 10.0.0.250 10.0.0.126 B
在主机上挂接镜像盘 /usr/sbin/drbdsetup /dev/nb0 disk /dev/sda2 /usr/sbin/drbdsetup /dev/nb0 net 10.0.0.126 10.0.0.250 B
/usr/sbin/drbdsetup /dev/nb0 primary
两台主机安装文件卷 /sbin/mkfs -b 4096 /dev/nb0
mount /dev/nb0 /var/qmail
启动 启动主机的drbd
/etc/rc.d/init.d/brdb start
启动备份主机的drbd
将qmail 安装到 /var/qmail
并将maillog vpopmail(如果装的话)也移到/var/qmail 原处做个链接
启动主机的qmaild
/etc/rc.d/init.d/qmaild start
启动主机的pulse
/etc/rc.d/init.d/pulse start
启动备份主机的drbd
访问主机的smtp pop服务 查看是否正常(这点很重要)
然后才能启动备份主机的 pules
以上顺序不能弄错
测试 连接qmail测试是否正常工作
使用ifconfig 查看虚拟网卡是否工作
停止 主机的 qmaild服务
/etc/rc.d/init.d/qmaild stop
连接smtp pop 测试是否正常工作
使用 ifconfig 查看备份主机的网卡是否工作
正常的话应该将202.93.204.68绑定到这台主机上了
然后在停止备份主机的qmail服务 202.93.204.68应该被绑回到主机上了
参考文献 http://www.slackworks.com/~dkrovich/DRBD/
http://ha.redhat.com
http://linux-ha.org
http://www.linuxvirtualserver.org |