515439429 发表于 2019-1-7 07:14:47

双机热备heartbeat2.1

双机热备(linux)邮件系统方案
http://blog.运维网.com/attachment/201203/161922949.jpg
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 SAN或FC SAN,根据产品使用说明与服务器一,二搭建双机结构(这个一般产品代理商会提供技术支持)
虚拟IP
Vip:192.168.0.200

2、节点(node)
运行heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和 heartbeat软件服务,在 heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件 系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。
在两台节点服务器node1,node2上安装heartbeat2.1搭建双机环境
#tar-xfheartbeat.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 haresourcesauthkeys/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 使用广播方式发送心跳也可以选择组播
bcasteth1   #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是这样的。要不然网关还会保留着以前VIP和MAC的对应。

*watchdog的模块,watchdog是一个Linux内核模块,它通过定时向/dev /watchdog设备文件执行写操作,从而确定系统是否正常运行,如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。
在 linux中完成watchdog功能的软件叫softdog,softdog维护一个内部计时器,此计时器在一个进程写入/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
#echomodprobe 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      #开机自动启动设置

6、heartbeat2.x无法对自身资源实现健康监控(vip或者mailserver其中一个down掉了,系统是无法完成资源的切换的),下面将用脚本结合heartbeat资源绑定监控
#cat /root/monitor.sh
#!/bin/bash
#For Turbomail Mail Server
#Editor Xming

#监控heartbeat资源的状态(VIP,mailserver)
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)在拥有资源的主机上down掉vip或者mailserver,查看主机是否会重启,并且资源是否已经切换
如有建议请浏览,随时候教!谢谢



页: [1]
查看完整版本: 双机热备heartbeat2.1