1 准备机器
准备两台CentOS 6.5机器,每台机器两个网卡或一个网卡一个空闲串口。网卡用于连接公用网络,串口电线传输Heartbeat信号相对较好用于心跳监控,如果没有条件,也可以使用以太网交叉线连接两台机器的网卡。
2 IP规划
节点类型 | IP地址规划 | 主机名 | 类型 |
主节点(Master) | eth0 192.168.88.134 | node1 | 公用IP |
eth1 10.1.1.1 | priv1 | 私用IP | |
eth0:0 192.168.80.200 |
| 虚拟IP | |
备用节点(Backup) | eth0 192.168.88.135 | node1 | 公用IP |
eth1 10.1.1.2 | priv1 | 私用IP |
3 安装
由于yum源中没有Heartbeat安装包,因此,必须先安装epel包,才能使用yum安装Heartbeat包。
[root@localhost local]# cd /usr/local
[root@localhost local]# wget http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@localhost local]# rpm -ivh epel-release-6-8.noarch.rpm
[root@localhost local]# rpm -qa|grep epel
epel-release-6-8.noarch
安装Heartbeat。
[root@localhost local]# yum -y install heartbeat
将/usr/share/doc.heartbeat-3.0.4/下的模板配置文件复制到/etc/ha.d/下。
[root@localhost local]# cd /usr/share/doc/heartbeat-3.0.4
[root@localhost local]# cp ha.cf haresources authkeys /etc/ha.d/
修改主配置文件(ha.cf)。
# heartbeat的调试日志存放位置
debugfile /var/log/ha-debug
# heartbeat的日志存放位置
logfile /var/log/ha-log
# 如果未定义上述日志文件,那么日志信息送入local0(/var/log/messages)
# 如果这三个日志配置都没有定义,默认情况下,
# 将在/var/log下创建ha-debug和ha-log文件记录日志信息
logfacility local0
# 发送心跳报文的间隔,默认单位为秒,如果要设置为毫秒,需要在后面加ms
keepalive 2
# 备用节点在指定时间内没有收到心跳信息,则立即接管主节点的服务资源
deadtime 30
# 备用节点在指定时间内没有收到心跳信息,则写入警告日志到日志文件中,
# 此时不会切换服务
warntime 10
# 系统启动或重启需要经过一段时间才能正常工作,至少是deadtime两倍
initdead 120
# 在eth1接口进行以太网心跳广播
#bcast eth1
# 在eth1接口进行以太网心跳单播
#ucast eth1 <对方IP地址>
# 单播和广播使用的端口,默认端口为694
#udpport 694
# 在eth1接口进行以太网心跳组播
# 格式:mcast <接口> <组播IP地址> <端口> <经过路由跳数> <是否允许回环>
# 组播IP地址范围224.0.0.0~239.255.255.255,默认端口为694
# 单播、组播、广播任选一种方式
mcast eth1 255.0.0.1 694 1 0
# 主节点恢复后,是否自动切回服务,默认为on。
auto_failback off
# 主节点主机名,通过uname -n查看
node node1
# 备用点主机名
node node2
修改认证配置文件(authkeys)配置文件。
# authkeys文件用于设置Heartbeat的认证方式,
# 共有3种认证方式,安全性大小依次增强,占用资源依次增加
# crc<md5<sha1(推荐使用)
auth 2
# 1 crc
2 sha1 82fc19ed6e84905eb92364ccae8d86d20ade523e
# 3 md5 6fa337cce1383f9416ec05b17664c185
修改认证配置文件(authkeys)的权限为600。
[root@localhost local]# chmod 600 /etc/ha.d/authkeys
修改资源配置文件(haresouce)。
# haresouce文件中每一行可以包含一个货多个资源脚本名,
# 资源之间使用空格隔开,参数之间使用两个冒号隔开,
# 格式:node-name network <resource-group>
# node-name为主节点主机名
# network用于设定集群IP地址(虚拟IP地址)、子网掩码和网络设备标识等。
# <resource-group>指定Heartbeat托管的服务,
# 也就是这些服务可以由Heartbeat来启动和关闭
# 这些服务必须写成通过start/stop来启动和关闭的脚本
# 放置在/etc/init.d/或者/etc/ha.d/resource.d/目录下
# Heartbeat会根据脚本名称自动调用
node1 IPaddr::192.168.88.200/24/eth0/
设置IP地址。
Master:
- eth0:
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:0c:29:99:c4:d6
IPV6INIT=no
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="dfdaee22-a458-4e54-a862-f68447926fe1"
USERCTL=no
PEERDNS=yes
- eth1:
DEVICE=eth1
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
IPADDR=10.1.1.1
IPV6INIT=no
ONBOOT=yes
USERCTL=no
Slave:
- eth0:
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:0c:29:7d:75:c5
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="45b7addb-834d-40c0-804f-cc6b1d03001c"
USERCTL=no
IPADDR=192.168.88.135
NETMASK=255.255.255.0
- eth1:
DEVICE=eth1
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
IPADDR=10.1.1.2
IPV6INIT=no
ONBOOT=yes
USERCTL=no
设置主机名(/etc/sysconfig/network)。
Master:
HOSTNAME=node1
Slave:
HOSTNAME=node2
设置hosts文件(/etc/hosts)。
192.168.88.134 node1
192.168.88.135 node2
重启服务器。
[root@localhost local]# reboot
关闭iptables。
# service iptables stop
启动heartbeat服务。
# service heartbeat start
查看虚拟IP的绑定情况。
# ip add | grep -i 192.168.88
Master输出:
inet 192.168.88.134/24 brd 192.168.88.255 scope global eth0
inet 192.168.88.200/24 brd 192.168.88.255 scope global secondary eth0
Slave输出:
# ip add | grep -i 192.168.88
inet 192.168.88.135/24 brd 192.168.88.255 scope global eth0
关闭Master的Heartbeat服务后查看虚拟IP的绑定情况。
Master输出:
inet 192.168.88.134/24 brd 192.168.88.255 scope global eth0
Slave输出:
# ip add | grep -i 192.168.88
inet 192.168.88.135/24 brd 192.168.88.255 scope global eth0
inet 192.168.88.200/24 brd 192.168.88.255 scope global secondary eth0
重启Master的Heartbeat服务后查看虚拟IP的绑定情况。
Master输出:
inet 192.168.88.134/24 brd 192.168.88.255 scope global eth0
inet 192.168.88.200/24 brd 192.168.88.255 scope global secondary eth0
Slave输出:
# ip add | grep -i 192.168.88
inet 192.168.88.135/24 brd 192.168.88.255 scope global eth0
4 备注
如果除了漂移虚拟IP,还要管理类似于Apache的启动和停止,可以使用修改haresouce的内容为:
node1 IPaddr::192.168.88.200/24/eth0/ httpd
httpd脚本必须在/etc/ha.d/resource.d/或/etc/init.d/目录下。