双机热备(linux)邮件系统方案

heartbeat的概念
Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability)、可用性 availability)和可服务性(serviceability)(RAS)的群集解决方案。其 Heartbeat就是Linux-HA项目中 的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等,自1999年开始到现在,Heartbeat在行业内得到了广泛的应用,也发行了很多的版本,可以从Linux-HA的官方网站www.linux-ha.org下载到Heartbeat的最新版本。

 

1、初始化及网络配置

设备

配置

服务器一

系统:Redhat5.6

eth0:192.168.0.117   #常规网络

eth1:10.10.10.1 #heartbeat#心跳专用网络

hostname:node1.turbo.com

服务器二

系统:Redhat5.6

eth0:192.168.0.118  #常规网络

eth1:10.10.10.2 #心跳专用网络

hostname:node2.turbo.com  

共享存储

根据需求使用IP SANFC SAN,根据产品使用说明与服务器一,二搭建双机结构(这个一般产品代理商会提供技术支持)

虚拟IP

Vip192.168.0.200

 

2、节点(node
运行heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和 heartbeat软件服务,在 heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件 系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。

在两台节点服务器node1node2上安装heartbeat2.1搭建双机环境

#tar  -xf  heartbeat.tar.gz –C ./   #将下载的软件包解压到当前目录

#cd  ./Heartbeat_rpm

#rpm -ivh perl-* --force #解决依赖关系基本软件包已经存在,最好配好本地yum源随时补充

#rpm –ivh heartbeat-pils-2.1.3-3.el5.centos.i386.rpm

# rpm –ivh heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm

#rpm –ivh heartbeat-2.1.3-3.el5.centos.i386.rpm #因为没有hacluster用户报错,重新执行就行

# rpm -qa | grep heartbeat    #确认软件包的安装

heartbeat-stonith-2.1.3-3.el5.centos

heartbeat-pils-2.1.3-3.el5.centos

heartbeat-2.1.3-3.el5.centos

#拷贝turbomail的启动的脚步

#cp mailserver /etc/init.d/

#vim /etc/init.d/mailserver #修改turbomail的安装路径详细的修改看

#chmod 600 /etc/init.d/mailserver

 

3、配置主节点,以下三个文件是heartbeat的主要配置文件:

# cd /usr/share/doc/heartbeat-2.1.3  #通过模板创建HA配置文件

# cp ha.cf haresources  authkeys  /etc/ha.d/    

        ha.cf                         #HA主配置文件,相当于cman

         haresources       #资源管理配置文件,相当于rgmanager

         authkeys            #通信密钥协商配置文件

 

 

3.1配置Ha.cf

# vim /etc/ha.d/ha.cf      #ha.cf配置说明

#调试日志文件文件 - -搭建完以后要关闭调试

debugfile /var/log/ha-debug

#系统运行日志文件 这个很重要记录着heartbeat运行的一切!

logfile /var/log/ha-log

#日志等级

logfacility local0

#心跳频率

keepalive 2

#节点死亡时间阀值

deadtime 30

#发出警告时间阀值

warntime 10

#指定heartbeat 守护进程启动后等待120 秒再启动资源

initdead 120

#指定心跳信息传递使用的udp 端口

udpport 694

#eth1 使用广播方式发送心跳  也可以选择组播

bcast  eth1     #eth1设置的是10.10.10.0网段的地址

#确保自身网络和网关的通讯正常,一般是ping网关,告诉ipfail网络是否畅通。

ping 192.168.0.1      

#允许主节点重启成功后拿回资源(一般这个不打开)

auto_failback off       

#节点名称,与uname -n 保持一致

node node1.turbo.com

node node2.turbo.com

#守护进程ipfail检查网络故障的

respawn root /usr/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

Heartbeat模块的功能解析 

 *ipfail插件的用途是检测网络故障,并作出合理的反应,如果需要的话使集群资源failover。为了实现这样的功能ipfail使用ping节点或 ping节点组,这些节点在集群中作为节点出现。如果HA节点间可以相互通信ipfail便可以可靠地检测到其中一个网络连接失效的情况,并作出 补救。ipfail是在切换时由切换机发一个ARP包,告诉网关我现在的IP-MAC是这样的。要不然网关还会保留着以前VIPMAC的对应。

 

*watchdog的模块,watchdog是一个Linux内核模块,它通过定时向/dev /watchdog设备文件执行写操作,从而确定系统是否正常运行,如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。
linux中完成watchdog功能的软件叫softdogsoftdog维护一个内部计时器,此计时器在一个进程写入/dev/watchdog 设备文件时更新,如果softdog没有看到进程写入/dev/watchdog文件,就认为内核可能出了故障。watchdog超时周期默认是一分钟, 可以通过将watchdog集成到Heartbeat中,从而通过Heartbeat来监控系统是否正常运行。

使用关门狗模块来使有故障节点重启的设置:

1)修改ha.cf 使用看门狗重启故障节点

# vim /etc/ha.d/ha.cf   搜索watchdog

watchdog /dev/watchdog   把前面的注析“#”去掉

#service heartbeat restart

2) 加载模块

# modprobe softdog

#echo  modprobe softdog >> /etc/rc.d/rc.local  下次启动自动加载softdog模块

#10,heartbeat进程没有对dog发信号,就会导致系统重启(可以按照默认

# echo "10" > /proc/sys/kernel/panic   #这个根据需求按照默认配置就可以了

 

3.2配置认证方式authkeys

# vim /etc/ha.d/authkeys         #指定使用认证的方式

auth 1

1 crc

#2 sha1 HI!  

#3 md5 Hello!

# chmod 600 authkeys   #设置文件只有管理员可读写提高安全,否则heartbeat启动不了!

 

3.3资源(resource

资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管,heartbeat中,可以当做资源的实体有:
     
磁盘分区、文件系统l
      IP
地址l
     
应用程序服务

# vim /etc/ha.d/haresources 

node1.turbo.com IPaddr:: 192.168.0.200/32/eth0 mailserver   #没有共享存储暂时不挂

虚拟ip   IPaddr:: 192.168.0.200/eth0   

文件系统Filesystem::/dev/sdb::/turbomail::gfs2

         Filesystem::设备符::挂载点::系统格式

设备符主要就是共享存储,用于存放邮件用户

# fdisk –l  来查看共享存储在服务器上对应的设备符

服务     mailserver   这个我们系统的启动文件拷贝在/etc/init.d/目录

 

4、将node1配置文件同步至node2

# rsync -avzlR /etc/ha.d/ node2:/

 

5、在两个节点上依次启动Heartbeat服务:

# /etc/init.d/heartbeat start

# chkconfig heartbeat on      #开机自动启动设置

 

6heartbeat2.x无法对自身资源实现健康监控(vip或者mailserver其中一个down掉了,系统是无法完成资源的切换的),下面将用脚本结合heartbeat资源绑定监控

#cat /root/monitor.sh

#!/bin/bash

#For Turbomail Mail Server

#Editor Xming

 

#监控heartbeat资源的状态(VIPmailserver)

vip=192.168.0.200

port=8080

/bin/ping -c 5 $vip

if [ $? -eq 0 ] ;then    #vip正常

   /usr/bin/links -dump 1 http://$vip:$port &> /dev/null

   if [ $? -eq 0 ];then

          echo "The Vip and mailserver is well."   #正常结果

     else

         /sbin/ifconfig | /bin/grep $vip     #服务不正常时,检测是否主机     

        rel=$?

        if [ $rel -eq 0 ] ;then

            /usr/bin/pkill -9 heartbeat #如果是就异常关闭heartbeat,让watchdog重启

主机让备机接管资源

            echo "Some error with the mailserver,need to kill heartbeat:">>/var/lo

g/message

        fi

     fi

else               #vip异常

     rel=`/sbin/service mailserver status`  #查看服务状态

     if [ $rel == "Running" ] ;then

        /usr/bin/pkill -9 heartbeat         #如果服务进程还在,异常关闭heartbeat

        echo "Some error with the floatIP,need to kill heartbeat:">>/var/log/messa

ge

     else

        sleep 30s

        /bin/ping -c 3 $vip  #如果vip和服务都有异常,30秒后再ping,如果还有异常关闭heartbeat

        if [ $? -ne 0 ] ;then

           /usr/bin/pkill -9 heartbeat

        fi

     fi

fi

 

 

6.1创建时间任务:

#chmod +x /root/monitor.sh

#vim /var/spool/cron/root

*/2 * * * * /bin/bash /root/monitor.sh & > /dev/null #设置每两分钟监控一次,保存退出!

#crontab  -l      #确认任务

* /2* * * * /bin/bash /root/monitor.sh & > /dev/null

*一般任务计划执行都会向管理员root发邮件,你也可以用#mutt 查看邮箱确认任务的执行

 

7、验证:

         1)主动让资源给另外一个节点

                   # /usr/share/heartbeat/hb_standby

         2)主动把资源抢过来

                   # /usr/share/heartbeat/hb_takeover

         3)只关闭心跳网络

                   会出现脑裂现象

4)轮流关闭heartbeat,查看资源是否切换正常

5)在拥有资源的主机上downvip或者mailserver,查看主机是否会重启,并且资源是否已经切换

如有建议请浏览,随时候教!谢谢