Heartbeat实现web服务高可用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Heartbeat实现web服务高可用相关的知识,希望对你有一定的参考价值。

在之前的部署过程中,成功的部署并配置了heartbeat,而且也能实现两节点之间VIP的高可用,这里来配置并实现httpd服务的高可用。

一、安装Apache

两台heartbeat节点服务器都先停止heartbeat服务。

/etc/init.d/heartbeat stop

分别在heartbeat01和heartbeat02上安装httpd服务

yum -y install httpd

分别在两个节点上执行

echo $HOSTNAME >>/var/www/html/index.html

chown -R apache:apache /var/www/html

/etc/init.d/httpd start

在浏览器中查看一下web服务

技术分享

技术分享

二、配置heartbeat资源

定义资源:在资源管理器的配置文件中定义;/etc/ha.d/haresources,在/etc/ha.d/resource.d下有各种资源类型,当在资源配置文件中定义时就会调用这里的资源类型来运行相应的程序; 

Heartbeat控制的脚本要求:

1)脚本路径要放入/etc/init.d/或/etc/ha.d/resource.d/目录下。

2)脚本执行需要以/etc/init.d/脚本名 stop|start方式。

3)脚本需要具备可执行权限

4)脚本的名称要和haresources中的名称一致(如:heartbeat01.contoso.com IPaddr::172.16.49.100/24/eth1 httpd)

这里把两个节点的haresources都修改为如下内容:

heartbeat01.contoso.com  IPaddr::172.16.49.100/24/eth1 httpd

三、启动heartbeat并测试故障切换

分别在两个节点上执行

echo $HOSTNAME >>/var/www/html/index.html

然后,因为没有配置DNS服务器,所以在客户端windows的hosts文件中,添加如下内容:

172.16.49.100   www.contoso.com

技术分享

下面的操作需要同时在两个heartbeat节点上进行:

/etc/init.d/httpd stop

/etc/init.d/heartbeat stop

检查一下服务的状态:

技术分享

技术分享

可以看到,两个节点上的httpd服务和heartbeat服务都是停止的状态。

然后同时执行/etc/init.d/heartbeat start命令,启动两个节点上的heartbeat服务。

技术分享

这里可以看到VIP在节点1 heartbeat01上,而且heartbeat01上的httpd服务也已经启动了。

技术分享

而heartbeat02上没有VIP,且httpd服务出于关闭状态。

Windows客户端访问:

技术分享

这时候我手动关闭heartbeat01上的heartbeat服务,再次查看两个节点的状态:

节点1:

[[email protected] ~]# /etc/init.d/heartbeat stop

Stopping High-Availability services: Done.


[[email protected] ~]# ip addr |grep 172.16.49

    inet 172.16.49.133/24 brd 172.16.49.255 scope global eth1

[[email protected] ~]# service httpd status

httpd is stopped

节点2:

[[email protected] ha.d]# ip a|grep 172.16.49

    inet 172.16.49.134/24 brd 172.16.49.255 scope global eth1

    inet 172.16.49.100/24 brd 172.16.49.255 scope global secondary eth1

[[email protected] ha.d]# service httpd status

httpd (pid  13469) is running...

[[email protected] ha.d]# 

Windows客户端访问:

技术分享

在heartbeat01停止服务后,heartbeat02成功的接管资源,并能提供服务。

下面再重新启动heartbeat01上的heartbeat服务,再分别查看一下两个节点的状态:

节点1:

[[email protected] ~]# /etc/init.d/heartbeat status

heartbeat is stopped. No process

[[email protected] ~]# /etc/init.d/heartbeat start

Starting High-Availability services: INFO:  Resource is stopped

Done.


[[email protected] ~]# ip addr |grep 172.16.49

    inet 172.16.49.133/24 brd 172.16.49.255 scope global eth1

    inet 172.16.49.100/24 brd 172.16.49.255 scope global secondary eth1

[[email protected] ~]# service httpd status

httpd (pid  15545) is running...

节点2:

[[email protected] ha.d]# ip a|grep 172.16.49

    inet 172.16.49.134/24 brd 172.16.49.255 scope global eth1

[[email protected] ha.d]# service httpd status

httpd is stopped

Windows客户端访问:

技术分享

heartbeat01恢复之后,重新接管原有的服务,heartbeat02将资源交还给heartbeat01,并在同时关闭web服务。至此,heartbeat实现web服务高可用性完成。



本文出自 “IT小二郎” 博客,请务必保留此出处http://jerry12356.blog.51cto.com/4308715/1855918

以上是关于Heartbeat实现web服务高可用的主要内容,如果未能解决你的问题,请参考以下文章

Heartbeat实现web服务高可用

学习heartbeat-05 实现web服务高可用

heartbeat双机热备实现Web服务的高可用

Mysql DBA 高级运维学习笔记-Heartbeat实现web服务的高可用案例及维护要点

使用HeartBeat实现高可用HA的配置过程详解

使用HeartBeat实现高可用HA的配置过程详解