动手搭建centos下用heartbeat实现双机热备

PHP 林涛 13202℃ 0评论

实战centos下双机热备

双机热备就是使用两台服务器共同执行同一服务,在运行过程中实时相互备份,当一台服务器出现故障时候,另一台可以立即发现故障并接管那天服务器的服务,从而在不需要人工干预的情况下自动保证系统能持续提供服务。常见的有两种情况:使用共同存储设备、使用不同存储设备(需要通过软件保持同步),在同一时间内主服务器保持激活状态,备份服务器处于监听状态,当主服务器出现故障无法启动时候,备份服务器会通过心跳诊断将备份服务器激活,保证服务正常使用。

这里主要是用在提供web服务的服务器,目的是防止服务器宕机引起的服务间断。采用的是linux+heartbeat方案。下面把我的实现过程写一下:

主服务器:

系统:centos
主机名称:sev1.example.com    #和从服务器名称不能相同
ip:10.0.0.211
心跳地址:100.0.0.211    #提供给心跳服务使用的,用来检控服务器运行状态

备份服务器:

系统:centos
主机名称:sev2.example.com    #和主服务器名称不能相同
ip:10.0.0.212
心跳地址:100.0.0.212     #提供给心跳服务使用的,用来检控服务器运行状态

注:每太服务器需要有两块网卡;心跳地址是心跳服务用来检控服务器运行状态使用的,心跳地址随意写,只要符合规范就行,网关、子网掩码不用写,用在两块网卡之间的通信只有ip就够了,并且和其它ip不会冲突。

服务器配置完毕后需要设置以下文件:

/etc/hosts
/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0    # 主网卡
/etc/sysconfig/network-scripts/ifcfg-eth1    # 心跳检测的网卡
sev1与sev2主机下/etc/hosts内容的配置相同:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost

10.0.0.211    sev1.example.com sev1    # 主服务器对外ip  --  主服务器名称
10.0.0.212    sev2.example.com sev2    # 从服务器对外ip  --  从服务器名称
100.0.0.211       sev1    # 主服务器心跳ip    主服务器名称
100.0.0.212       sev2    # 从服务器心跳ip    从服务器名称
分别在主服务器、从服务器安装httpd服务,用来测试,或者安装其它能提供web服务的程序:
#yum install  httpd
分别在主服务器、从服务器上编辑一个html文件用来做测试用,我安装的是WDCP整合包:
#vi /var/www/html/index.html
This is webserver : sev1/sev2
关闭防火墙与selinux,这样可以避免心跳服务的端口被屏蔽:
#vi /etc/sysconfig/selinux
SELINUX=disabled
#chkconfig --level 3 iptables off
安装ipvsadm和heartbeat:
#yum -y install ipvsad
#yum -y install heartbeat
到此,用到的服务就安装完了,接下来是非常非常重要的配置环节。
配置主服务器(sev1)下的ha.cf、authkeys、haresources:
只要是正确安装以上软件后,复制这个环节就问题不大了,把这三个文件复制到 /etc/ha.d/目录下:
#cp /usr/share/doc/heartbeat-2.1.3/ha.cf             /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/authkeys        /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/hareources     /etc/ha.d/
修改 /etc/ha.d/ 下的 ha.cf 文件:
# vi /etc/ha.d/ha.cf
logfile /var/log/ha-log    # 日志文件
logfacility     local0    # 登陆/调试日子同时记录给syslog
keepalive 2    # 设定heartbeat之间的检测时间间隔
deadtime 30    # 在30秒后宣布接点死亡,主服务器、从服务器切换
warntime 10    # 日志中发出"last hearbeat"警告之前等待的时间,单位秒
initdead 120   # 一些配置下,重启网络需要一些时间才能正常工作,就是这里设置,一般设置为deadtime的两倍
udpport 694    # 使用端口694进行bcast和ucast通信,这是默认的
bcast   eth1            # 表示在eth1接口上使用来发送心跳信息
ucast eth1 100.0.0.211  # 采用网卡eth1的udp单薄来通知心跳,ip为对方ip
#baud 19200    # 波特率,串口通信的速度
node    sev1.example.com    # 必须配置的,急群众机器的主机名,与"uname -n"输出相同
node    sev2.example.com    # 同上
ping 10.0.0.1    # 用来验证外网线联通的ip,推荐为上级路由器
<div>
以上需要修改的并不在一起,需要挨个去找
配置/etc/ha.d/ 下的 authkeys 文件:
# vi /etc/ha.d/authkeys
auth 1    # 认证算法选择,只要前后对应即可
1 crc
#2 sha1 HI!
#3 md5 Hello!
这个文件需要主从服务器一致,必须的,并且一定要把权限设置成 600 ,否则出错。
配置/etc/ha.d/下的 haresources:
# vi /etc/ha.d/haresources
#node-name resource1 resource2 ... resourceN    <span style="color: #ff0000;"># 主从服务器配置需相同: node1 IPaddr::10.0.0.60 httpd</span>
sev1.example.com 10.0.0.222 httpd    #默认主机    虚拟ip    需要实现高可用性的服务(启动脚本在 /etc/init.d内)
配置从服务器(sev2)下的ha.cf、authkeys、haresources:
首先将这三个文件复制:
#cp /usr/share/doc/heartbeat-2.1.3/ha.cf             /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/authkeys        /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/hareources     /etc/ha.d/
配置/etc/ha.d/ 下的 ha.cf:
# vi /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast   eth1            # Linux
ucast eth1 10.0.0.10
node    sev1.example.com
node    sev2.example.com
ping 10.0.0.1
配置/etc/ha.d/下的authkeys:
# vi /etc/ha.d/authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello
配置/etc/ha.d/下的haresources:
# vi /etc/ha.d/haresources
#node-name resource1 resource2 ... resourceN
sev1.example.com 10.0.0.222 httpd
启动心跳检测服务:
# service        heartbeat              start
下面测试一下.
查看是否有虚拟ip 10.0.0.222:
eth0:0    Link encap:Ethernet HWaddr 00:0C:29:1F:56:B7</div>
inet addr:10.0.0.222 Bcast:10.0.0.1 Mask:255.255.255.0</div>
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1</div>
Interrupt:185 Base address:0x2000</div>
若有,则说明配置hearbeat成功。
打开浏览器测试,只需打开虚拟ip:http://10.0.0.222 .
到此,配置完成。

如需转载请注明: 转载自26点的博客

本文链接地址: 动手搭建centos下用heartbeat实现双机热备

转载请注明:26点的博客 » 动手搭建centos下用heartbeat实现双机热备

喜欢 (0)
发表我的评论
取消评论

表情
(2)个小伙伴在吐槽
  1. 一个是主一个是从
    码农26点2015-04-22 12:12 回复
  2. 我想请问一下,你的两个ha.cf为何不一样呢?
    Blood_Zero2015-04-21 17:26 回复