案例要求:
1、通过HA主备模式实现对lvs群集(web服务器)的高可用性,并实现对内部web服务器在线状态进行探测。
案例拓扑:
ha-1配置
环境准备:
a、用hostname修改主机名,
#hostname ha1.abc.com
b、并修改/etc/sysconfig/network
HOSTNAME=ha1.abc.com
c、因没有配置dns,所以直接hosts文件,
#vim /etc/hosts/
ha1.abc.com 192.168.2.60
ha2.abc.com 192.168.2.61
1.安装 heartbeat 相关软件包,有依赖关系,推荐使用yum安装
heartbeat-2.1.4-11.el5.i386.rpm
heartbeat-pils-2.1.4-11.el5.i386.rpm
heartbeat-stonith-2.1.4-11.el5.i386.rpm
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
额外依赖包:libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm
2.关闭相关服务,
# service ipvsadm stop 关闭服务并禁止开机启动,由ha来控制操作
# chkconfig ipvsadm off
#service ldirectord stop 关闭ldirectord服务并禁止开机启动
#chkconfig ldirectord off
3.拷贝配置文件
/usr/share/doc/heartbeat-2.1.4
# cp -p haresources ha.cf authkeys /etc/ha.d/
4.编辑配置文件
a、 # vim /etc/ha.d/ha.cf
95 bcast eth1
96 node ha1.abc.com
97 node ha2.abc.com
b、身份验证
[root@ha1 ~]# dd if=/dev/random bs=512 count=1| openssl md5
0+1 records in
0+1 records out
ec92b27792a008b420ec5adfe0a34ea0
17 bytes (17 B) copied, 6.1088e-05 seconds, 278 kB/s
# vim /etc/ha.d/authkeys
auth 3
3 md5 ec92b27792a008b420ec5adfe0a34ea0 //为刚才借助dd产生的随机md5加密值
# chmod 600 /etc/ha.d/authkeys //修改权限
c、资源
# vim /etc/ha.d/haresources
ha1.abc.com 192.168.2.254/24/eth0 ldirectord:ldirectord.cf //ha1.abc.com为首先要激活的
#ll /etc/ha.d/resource.d/ldir* //查看该目录是否有ldirectord服务的控制脚本,若没有执行复制:#cp -p /etc/init.d/ldirectord /etc/ha.d/resource.d/
d、复制并编辑配置文件ldirectord.cf
#cp -p /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
#vim /etc/ha.d/ldirectord.cf
4、启动heartbeat服务
# service heartbeat start //启动heartbeat服务
ha-2配置
环境准备:
a、用hostname修改主机名,
#hostname ha2.abc.com
b、并修改/etc/sysconfig/network
HOSTNAME=ha2.abc.com
c、因没有配置dns,所以直接hosts文件,
#vim /etc/hosts/
ha1.abc.com 192.168.2.60
ha2.abc.com 192.168.2.61
1、安装 heartbeat 相关软件包,
heartbeat-2.1.4-11.el5.i386.rpm
heartbeat-pils-2.1.4-11.el5.i386.rpm
heartbeat-stonith-2.1.4-11.el5.i386.rpm
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
依赖包:libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm
2、也要关闭相关服务
# service ipvsadm stop 关闭ipvsadm服务并禁止开机启动
# chkconfig ipvsadm off
#service ldirectord stop 关闭ldirectord服务并禁止开机启动
#chkconfig ldirectord off
3、ha-1与ha-2的配置相同,所以直接使用scp命令实现安全拷贝,将ha-1的相应修改内容拷贝到ha-2中,
#scp ha1.abc.com:/etc/ha.d/ha.cf authkeys haresources ldirectord.cf /etc/ha.d/
# service heartbeat start //启动heartbeat服务。
server1配置、server2配置相同(server2自形配置)
#解决arp不响应的问题
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore //只回答目标IP地址是来访网络接口本地地址的ARP查询请求
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce //对查询目标使用最适当的本地地址
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@server1 ~]# ifconfig lo:0 192.168.2.254 netmask 255.255.255.255 //lo:0的地址
#添加一条路由
[root@server1 ~]# route add -host 192.168.2.254 dev lo:0
注:对于server的配置是临时性的,重启配置消失,
下面为在ha-1上的操作:
正常启动heartbeat服务后,测试会发现可以正常高可用性,并且添加了eth0:0接口与地址
查看日志可以看出,可以接收资源,启动相应接口、服务。
当然实验过程中,遇到错误时也可以通过查看日志来解决……
查看ipvsadm策略规则表:发现web服务器的权重为0,因为没有创建web服务器的测试页,
在web服务器上创建相应测试后(#echo "ok" > /var/www/html/.index.html),权重变为1,表示可以探测到,
现在我们关闭一台web服务器,会发现权重值变为0,而我们采用的是rr调度算法,权重值的大小是不会影响轮循的,我们再次设置/etc/ha.d/ldirectord.cf,不再采用静默模式,配置文件保存退出后,不需要重启heartbeat服务,是自动加载的,
注意:也要对ha-2下的/etc/ha.d/ldirectord.cf做同样配置。
现在再来测试一下,关闭一个web服务器,service httpd stop后,发现ipvsadm的策略规则表中马上就消失了关于该服务器的策略分配语句。
通过ha1作为主模式测试正常,并可以探测到内部web服务器的运行状态。
现在将ha1通过命令实现成为备份模式,来测试ha2的工作情况:
ha-1上执行:
#/usr/share/heartbeat/hb_standby
2012/12/28_19:43:49 Going standby [all].
再次查看ha1的ipvsadm策略规则时,发现已经没有了,
查看ha2的ipvsadm策略表,会发现已经存在了,并成功探测到了内部web服务器,
对web服务器的探测也是正常的,不再附图。
在ha1执行:# /usr/share/heartbeat/hb_takeover 重新变为主动模式。
实验注意项:
1、ha群集中,两个node点的共享资源要相同,
2、心跳探测时,两个node点交流时,身份验证的的配置文件authkeys的权限值一定要修改,
heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Bad permissions on keyfile [/etc/ha.d/authkeys], 600 recommended.
heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Authentication configuration error.
heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Configuration error, heartbeat not started.
#chmod 600 /etc/ha.d/authkeys
3、其他错误,查看日志一般可以解决了,祝你好运!
实验结束。