配置文件
首先复制样例到指定目录
cd /usr/share/doc/heartbeat-3.0.4/
cp ha.cf authkeys haresources /etc/ha.d/
cd /etc/ha.d/
1.首先编辑authkeys #用来主从验证通讯,对方是否存活。而且是加密通讯。
vim authkeys
其中
123代表加密程度,1最简单,2md5复杂,3sha最复杂
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
比如我们选2,首先auth 3去掉注释,1改3,同时把3的md5这一行去掉注释,如:
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!
保存退出后,chmod修改此文件权限为600,只允许root用户读取。不修改权限,heartbaet启动不了。
2.然后编辑haresources文件,此文件为全部注释。需要打开并修改如下一行即可:
#node1 10.0.0.170 Filesystem::/dev/sda1::/data1::ext2
改为
wyp 192.168.1.80/24/eth0:1 nginx
wyp为主节点hostname, 192.168.1.80为虚拟IP和虚拟网卡 后面为启动的资源,如我们要做nginx的高可用,也可以用NFS的网络共享存储。
3.最后编辑ha.cf 次文件大多是注释掉的,去掉注释后剩下一下几行
vim ha.cf
改为如下内容:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 192.168.1.70
auto_failback on
node wyp
node client
ping 192.168.1.1
respawn hacluster /usr/lib/heartbeat/ipfail
配置说明:
debugfile /var/log/ha-debug:该文件保存 heartbeat 的调试信息
logfile /var/log/ha-log:heartbeat 的日志文件,和上面记录信息差不多
logfacility local0 关于日志的级别
keepalive 2:心跳的时间间隔,默认时间单位为秒,探测时间。
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 60: 在某些系统上, 系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为 deadtime 的两倍。
udpport 694:设置广播通信使用的端口,694 为默认使用的端口号。
ucast eth0 192.168.2.70:设置对方机器心跳检测的网卡和 ip。也可用bcast广播来找。线上业务,建议用另外一块网卡来做心跳检测。而不是一块网卡来进行。
auto_failback on: heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务, 遇到故障时把资源交给从节点并由从节点运行服务。 在该选项设为 on 的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
node 指定主和从,各占一行,主在上从在下。
ping 用来裁判地址,是否存活的检测地址。比较强势。而不是主机之间相互探测。
respawn hacluster /usr/lib/heartbeat/ipfail:指定与 heartbeat 一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是 ipfail,该进程用于检测和处理网络故障,需要配合 ping 语句指定的 ping node 来检测网络连接。如果你的系统是 64,请注意该文件的路径。
hacluster是指定运行/usr/lib/heartbeat/ipfail脚本的身份,此脚本用来检测网络连通性,对方是否存活。respawn为此脚本死掉后,重启这个脚本进程。
4.三个配置文件修改完成后,复制到从上去,做小修改
scp ha.cf authkeys haresources client:/etc/ha.d/
选择yes
由于此前hosts文件定义出错,修改好后,无法复制文件到从,提示秘钥文件改变,拒绝连接。可以删除/root/.ssh/known_hosts来重置。
从上authkeys haresources配置不动,只修改ha.cf一行
ucast eth0 192.168.1.70改为对方IP
ucast eth0 192.168.1.60
最后主从yum安装nginx,用来测试。
yum install -y nginx
课后答疑:
nginx不是个软件吗,怎么能用yum安装?而且我以前安装的nginx还在跑着呢,为什么还能yum安装?
答:所有的包都可以用yum或者源码安装。你源码安装的nginx和yum安装的不冲突。