案例要求:

   1、通过HA主备模式实现对lvs群集(web服务器)的高可用性,并实现对内部web服务器在线状态进行探测。

案例拓扑:

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha实现lvs群集的高可用性

 

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为首先要激活的

 HA(heartbeat)主备模式实现lvs群集的高可用性_ldiretord_02

#ll  /etc/ha.d/resource.d/ldir*   //查看该目录是否有ldirectord服务的控制脚本,若没有执行复制:#cp  -p /etc/init.d/ldirectord  /etc/ha.d/resource.d/

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha实现lvs群集的高可用性_03

 d、复制并编辑配置文件ldirectord.cf

#cp -p /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf   /etc/ha.d/

#vim /etc/ha.d/ldirectord.cf

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha高可用性_04

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 

3ha-1ha-2的配置相同,所以直接使用scp命令实现安全拷贝,将ha-1的相应修改内容拷贝到ha-2中,

#scp ha1.abc.com:/etc/ha.d/ha.cf  authkeys  haresources  ldirectord.cf  /etc/ha.d/

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha实现lvs群集的高可用性_05

# 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接口与地址

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha实现lvs群集的高可用性_06

查看日志可以看出,可以接收资源,启动相应接口、服务。

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha高可用性_07

   当然实验过程中,遇到错误时也可以通过查看日志来解决……

查看ipvsadm策略规则表:发现web服务器的权重为0,因为没有创建web服务器的测试页,

 HA(heartbeat)主备模式实现lvs群集的高可用性_ldiretord_08

web服务器上创建相应测试后(#echo "ok" > /var/www/html/.index.html),权重变为1,表示可以探测到,

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha实现lvs群集的高可用性_09

现在我们关闭一台web服务器,会发现权重值变为0,而我们采用的是rr调度算法,权重值的大小是不会影响轮循的,我们再次设置/etc/ha.d/ldirectord.cf不再采用静默模式,配置文件保存退出后,不需要重启heartbeat服务,是自动加载的

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha实现lvs群集的高可用性_10

注意:也要对ha-2下的/etc/ha.d/ldirectord.cf做同样配置。

现在再来测试一下,关闭一个web服务器,service httpd stop后,发现ipvsadm的策略规则表中马上就消失了关于该服务器的策略分配语句。

 HA(heartbeat)主备模式实现lvs群集的高可用性_ha实现lvs群集的高可用性_11

通过ha1作为主模式测试正常,并可以探测到内部web服务器的运行状态。

现在将ha1通过命令实现成为备份模式,来测试ha2的工作情况:

ha-1上执行: 

#/usr/share/heartbeat/hb_standby 

2012/12/28_19:43:49 Going standby [all].

再次查看ha1ipvsadm策略规则时,发现已经没有了,

 HA(heartbeat)主备模式实现lvs群集的高可用性_ldiretord_12

查看ha2ipvsadm策略表,会发现已经存在了,并成功探测到了内部web服务器,

 HA(heartbeat)主备模式实现lvs群集的高可用性_ldiretord_13

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、其他错误,查看日志一般可以解决了,祝你好运!

 

 

实验结束。