案例要求:

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

案例拓扑:

162909685.jpg

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

163035585.jpg

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

163101734.jpg

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

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

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

163119924.jpg

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/

163320318.jpg

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

163341707.jpg

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

163405280.jpg

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

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

163444592.jpg

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

163531358.jpg

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

163550122.jpg

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

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

163606976.jpg

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

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

ha-1上执行:

#/usr/share/heartbeat/hb_standby

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

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

163629162.jpg

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

163640525.jpg

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



实验结束。

本文出自 “刘园的博客” 博客,请务必保留此出处http://colynn.blog.51cto.com/5971950/1104057