Heartbeat安装与配置
1. 搭建环境
master | slave | |
os version | Linux heartA 4.1.12-61.1.28.el6uek.x86_64 | Linux heartA 4.1.12-61.1.28.el6uek.x86_64 |
hostname | heartA | heartB |
ip eth0 | 192.168.232.101 | 192.168.232.103 |
ip eth1 | 192.168.232.102 | 192.168.232.104 |
eht0:0 ( VIP ) | 192.168.232.105 |
heartA 上增加如下主机路由:
/sbin/route add host 192.168.232.104 dev eth1
-->这个命令的意思是,从 heartA Server上访问 192.168.232.104 走 eth1 网卡出去,即使用心跳线路
echo '/sbin/route add -host 192.168.232.104 dev eth1'>>/etc/rc.local
-->加入开机自启动配置里,这样下次启动后会自动加载这个路由的配置。
heartB 上增加如下主机路由:
/sbin/route add host 192.168.232.102 dev eth1
-->这个命令的意思是,从 heartB Server上访问 192.168.232.102 走 eth1 网卡出去,即使用心跳线路
echo '/sbin/route add -host 192.168.232.102 dev eth1'>>/etc/rc.local
-->加入开机自启动配置里,这样下次启动后会自动加载这个路由的配置。
2. 安装
2.1 联网主机的安装方法
如果是联网的主机,则相对简单,这里简单说明下,不做详细介绍(本人重点讲述非联网主机的安装)。
先安装 epel ,然后安装 heartbeat 即可,语句如下:
yum -y install epel-release
yum -y install heartbeat*
2.2 非联网主机的安装方法
2.2.1下载安装包
先找一台联网的机器,安装 epel 扩展源:
yum install -y epel-release
然后安装yum-plugin-downloadonly:
yum install yum-plugin-downloadonly
安装完就可以使用yum只下载不安装功能了
yum install --downloadonly --downloaddir=*** -y ***
downloadonly:只下载模式;downloaddir:指定下载目录;-y后面是要安装的软件(会下载下来该软件的rpm包及相关依赖包)
创建createrepo文件夹(用于配置本地yum源):
cd /opt/
mkdir createrepo
下载createrepo相关软件包:
yum install --downloadonly --downloaddir=/opt/createrepo/ -y createrepo
在/opt/下创建rpm文件夹:
mkdir rpm
下载heartbeat、libnet、nginx包 :
yum install --downloadonly --downloaddir=/opt/rpm/ -y heartbeat* libnet* nginx
截图是一部分
然后把下载好的这些包(createrepo 和 rpm 这2个文件夹) copy 到我们需要安装 heartbeat 的 2台服务器上
2.2.2 配置本地yum 源
copy到目标机器后,配置本地yum源。
cd /opt/createrepo/
安装这 3 个包(主、从):
再安装 libxml2 相关包(主、从)
yum install libxml2*
安装成功后创建yum仓库(主、从):
createrepo /hbrpm/heartbeat_package/rpm
修改repo源文件(主、从):
vi /etc/yum.repo.d/ty.repo
修改内容如下:
初始化yum缓存(主、从):
yum clean all
yum makecache
yum repolist(主、从)
本地仓库搭建完毕。
2.3 安装
yum 安装(主、从)
yum -y install heartbeat*
3.配置
3.1 拷贝配置文件(主、从):
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources /etc/ha.d/
3.2 修改配置文件(主、从)
ha.cf文件内容修改如下:
#the start by ty
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth1 192.168.232.104 # (對方的心跳IP)
auto_failback on
node heartA
node heartB
ping 192.168.232.1
respawn hacluster /usr/lib64/heartbeat/ipfail
#the end by ty
配置说明:
debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息。
logfile /var/log/ha-log:heartbeat的日志文件。
keepalive 2:心跳的时间间隔,默认时间单位为秒s。
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 60:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
ucast eth0 192.168.60.137:设置对方机器心跳检测的网卡和IP。
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
ping 192.168.60.200:设置的VIP。
respawn heartbeat /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。
haresources文件内容修改如下:
heartA IPaddr::192.168.232.105/24/eth0:0
配置说明:其中master为主节点hostname,192.168.60.200为vip,/24为掩码为24的网段,eth0:0为vip的设备名
authkeys文件内容修改如下:
auth 3
#1 crc
#1 sha1 HI!
3 md5 Hello!
编辑完后把这3个文件copy给从机
scp ha.cf haresources authkeys root@192.168.232.103:/etc/ha.d/
然后将ha.cf文件中的
ucast eth1 192.168.232.104 改为 ucast eth1 192.168.232.102
修改 authkeys 文件的权限
chmod 600 authkeys
4. 启动
启动 heartbeat 服务(主、从)
service heartbeat start
ip add 查看
可以看到192.168.232.105 这个 VIP 已经启动
5. 测试
停止 heartA 主机的 heartbeat 服务器
service heartbeat stop
ip add 查看状态
heartA:
heartB:
可以看到当 heartA 主机停止 heartbeat 服务后,VIP 被 heartB 从机接管,至此,实验成功;
PS:当 heartA 主机开启heartbeat 服务后,VIP 会重新转移到 heartA 主机上,这是 ha.cf 配置文件中auto_failback 参数控制的。