天天看点

Heartbeat实现Web服务的高可用群集

 Heartbeat实现Web服务的高可用群集

   HA群集模型如下:对外的vip是192.168.2.1,处于活动状态的web的主机名node1,处于备份状态的web的主机名node2,当主状态的web死掉,处于备份状态的web立即变为主状态。以实现高可用性。(不考虑存储)

<a href="http://blog.51cto.com/attachment/201301/191732590.png" target="_blank"></a>

Node1的配置

1、配置主机名和ip地址

<a href="http://blog.51cto.com/attachment/201301/191743424.png" target="_blank"></a>

2、编辑hosts文件,使主备之间能相互解析

192.168.2.100  node1.server1.com

192.168.2.200  node2.server2.com

3、上传所需的heartbeat软件包,并安装

heartbeat-2.1.4-9.el5.i386.rpm

heartbeat-pils-2.1.4-10.el5.i386.rpm

heartbeat-stonith-2.1.4-10.el5.i386.rpm

libnet-1.1.4-3.el5.i386.rpm 

perl-MailTools-1.77-1.el5.noarch.rpm

yum localinstall heartbeat-2.1.4-9.el5.i386.rpm  heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm -y --nogpgcheck

4、将心跳探测配置文件、资源管理配置文件、之间身份验证配置文件拷贝到/etc/ha.d/目录下

cd  /usr/share/doc/heartbeat-2.1.4/

cp ha.cf  authkeys haresources  /etc/ha.d/

5、编辑ha.cf插入如下

bcast    eth1     --心跳探测接口

node node1.server1.com   --两个节点

node node2.server2.com 

6、编辑authkeys文件插入如下:

 auth 3     

 3 md5 adf25a5a79c3be8e1df5ff1ac64a21fc   --MD5的验证类型 后面是是密钥

chmod 600 authkeys

7、编辑haresources文件插入如下:

node1.server1.com   192.168.2.1/24/eth0   httpd (节点名称(激活的)-------节点vip---脚本资源)

8、将httpd的控制脚本拷贝到/etc/ha.d/resource.d/目录下,将有heartbeat控制httpd服务

cd /etc/ha.d/resource.d/

cp /etc/init.d/httpd  ./

9、确保httpd现在是stop状态,且开机不启动,因为他的控制权以后就交个了heartbeat,并启动集群heartbeat

<a href="http://blog.51cto.com/attachment/201301/191752750.png" target="_blank"></a>

启动群集后多了一个接口地址即vip

<a href="http://blog.51cto.com/attachment/201301/191802766.png" target="_blank"></a>

此时httpd也启动了

<a href="http://blog.51cto.com/attachment/201301/191814103.png" target="_blank"></a>

即node1.server1.com是处于活动状态,下面的node2.server2.com就只能是处于备份状态了,

将不会产生eth0:0接口,及httpd也处于stop状态

Node2是配置

与node1(1-9步)的配置基本完全相同,不在叙述

启动node2.server2.com的群集heartbeat

测试一下

<a href="http://blog.51cto.com/attachment/201301/191822448.png" target="_blank"></a>

活动状态node1的web

在一个client上长ping vip地址,并将node1.server1.com该为备份状态,看是否有丢包(在实际中你可以拔掉一根线)

这样做

cd /usr/share/heartbeat/

./hb_standby   -----模拟失效

再测试一下

<a href="http://blog.51cto.com/attachment/201301/191830942.png" target="_blank"></a>

node2的web,此时node2变成了活动状态

如果node1再抢占位活动状态执行如下命令

./hb_takeover

这个过程中ping没有被中断,高可用群集保证了服务的不间断。。。!!!

本文转自 abc16810 51CTO博客,原文链接:http://blog.51cto.com/abc16810/1107944