Home  Contact  访问新版  访问旧版1  访问旧版2
销售热线: 固话、手机均可拨打
首页 产品 下载 公司 购买 服务 论坛 案例 金笛子
金笛邮件系统双机热备方案
一.介绍

    作为服务器,需要提供一定的24X7的安全保证,这样可以防止关键节点的宕机引起系统的全面崩溃。春笛公司在长期的邮件系统方案实施过程中,利用OpenSource开源软件,结合金笛邮件系统,成功地为多家单位实施了大容量邮件系统的高可靠双机热备方案。

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

    在这里我们用 lvs 和 DRBD 实现了一个真实环境下的双机热容错集群。这里的关键技术是如何实现ip代换, mon/heartbeat检测, 文件同步。同样这一方法稍加改动就可以实现oracle热备份、ldap热备份等。

二.方案描述

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


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

    工作模式

      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 (http://www.mailer.com.cn)

    HA软件:
    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
    http://www.complang.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

    以上顺序不能弄错

    测试
    连接qmail测试是否正常工作

    使用ifconfig 查看虚拟网卡是否工作

    停止 主机的邮件系统服务

    shutdown.sh

    连接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.or



            关于此方案的技术咨询