当前位置:文档之家› 如何实现的双机热备

如何实现的双机热备

如何实现的双机热备
如何实现的双机热备

如何实现的双机热备

2009-01-05 12:19:58

一.介绍

作为服务器,需要提供一定的24X7的安全保证,这样可以防止关键节点的宕机引起系统的全面崩溃。春笛公司在长期的邮件系统方案实施过程

中,利用OpenSource开源软件,结合金笛邮件系统,成功地为多家单位实施了大容量邮件系统的高可靠双机热备方案。

基于linux的 HA软件可靠稳定,比使用商业版本的HA软件降低成本约9成左右。

在这里我们用 lvs 和 DRBD 实现了一个真实环境下的双机热容错集群。

这里的关键技术是如何实现ip代换, mon/heartbeat检测, 文件同步。

同样这一方法稍加改动就可以实现oracle热备份、ldap热备份等。

二.方案描述

将真实服务地址绑定到一个虚拟网卡(eth0:1)上通过检测程序

(heartbeat)来将主机或是备份主机的虚拟网卡(eth0:1)激活。从而实现热备份。使用网络硬盘RAID来同步文件。检测程序通过内网进行监控。

金笛高可用邮件系统架构(双机系统)

F

2 工作模式

a) 正常状态:

正常工作状态

b) 备份激活:

node1失效,node2激活状态c) 主机就绪:

node1故障排除,恢复状态

d) 切换回正常模式:

需要手动停止备份服务器的服务,系统会自动切换回正常模式

三.软硬件需求

两台双网卡主机完全安装 redhat6.2

主机IP 10.0.0.126 备份主机IP 10.0.0.250

实际服务即浮动IP 202.93.204.68

邮件系统:

金笛邮件系统Jindi-Mail2.0 (https://www.doczj.com/doc/0a16554237.html,)

HA软件:

ftp://https://www.doczj.com/doc/0a16554237.html,/pub/ha/piranha-docs-0.4.17-2.i386.rpm ftp://https://www.doczj.com/doc/0a16554237.html,/pub/ha/piranha-gui-0.4.17-2.i386.rpm

ftp://https://www.doczj.com/doc/0a16554237.html,/pub/ha/piranha-0.4.17-2.i386.rpm

ftp://https://www.doczj.com/doc/0a16554237.html,/pub/ha/ipvsadm-1.11-4.i386.rpm

https://www.doczj.com/doc/0a16554237.html,plang.tuwien.ac.at/reisner/drbd/download/drbd-0.5 .8.1.tar.gz

安装软件:

rpm –Uvh ipvsadm* piranha*两台主机都要装

金笛邮件系统安装

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

#failovermail服务

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

将金笛邮件系统安装到 /home/webmail

启动主机的邮件系统 startup.sh

启动主机的pulse

/etc/rc.d/init.d/pulse start

启动备份主机的drbd

访问主机的smtp pop服务查看是否正常(这点很重要)

然后才能启动备份主机的 pules

以上顺序不能弄错

测试

相关主题
文本预览
相关文档 最新文档