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服务

wKiom1fk9o7CGDRHAAB2xla7bsM134.png-wh_50

wKiom1fk9o6ALLBVAABvqvTxR00451.png-wh_50

二、配置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

wKioL1fk-BjDhl57AACBZrO4qco056.png-wh_50

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

/etc/init.d/httpd stop

/etc/init.d/heartbeat stop

检查一下服务的状态:

wKioL1fk9uOzNOdiAAAc7_yQ9nk494.png-wh_50

wKiom1fk9uPh1lPXAAAZhIBk5yk825.png-wh_50

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

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

wKioL1fk9w2grN8uAAAtgGOCnHc781.png-wh_50

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

wKiom1fk9w3jUg2VAAAfBpmeF7I375.png-wh_50

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

Windows客户端访问:

wKioL1fk-GWRTwVIAACKToh2vJM617.png-wh_50

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

节点1:

[root@heartbeat01 ~]# /etc/init.d/heartbeat stop

Stopping High-Availability services: Done.


[root@heartbeat01 ~]# ip addr |grep 172.16.49

    inet 172.16.49.133/24 brd 172.16.49.255 scope global eth1

[root@heartbeat01 ~]# service httpd status

httpd is stopped

节点2:

[root@heartbeat02 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

[root@heartbeat02 ha.d]# service httpd status

httpd (pid  13469) is running...

[root@heartbeat02 ha.d]# 

Windows客户端访问:

wKiom1fk9kjiE09SAABymRSQhf8612.png-wh_50

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

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

节点1:

[root@heartbeat01 ~]# /etc/init.d/heartbeat status

heartbeat is stopped. No process

[root@heartbeat01 ~]# /etc/init.d/heartbeat start

Starting High-Availability services: INFO:  Resource is stopped

Done.


[root@heartbeat01 ~]# 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

[root@heartbeat01 ~]# service httpd status

httpd (pid  15545) is running...

节点2:

[root@heartbeat02 ha.d]# ip a|grep 172.16.49

    inet 172.16.49.134/24 brd 172.16.49.255 scope global eth1

[root@heartbeat02 ha.d]# service httpd status

httpd is stopped

Windows客户端访问:

wKiom1fk-YnC3TYPAABuzrTskEA833.png-wh_50

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



本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1855918,如需转载请自行联系原作者

相关文章
|
1月前
|
XML JSON 数据安全/隐私保护
Web服务
【10月更文挑战第18天】Web服务
48 9
|
1月前
|
XML JSON 安全
Web服务是通过标准化的通信协议和数据格式
【10月更文挑战第18天】Web服务是通过标准化的通信协议和数据格式
150 69
|
14天前
|
Go UED
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
33 3
|
15天前
|
JSON Go UED
Go Web服务中如何优雅关机?
在构建 Web 服务时,优雅关机是一个关键的技术点,它确保服务关闭时所有正在处理的请求都能顺利完成。本文通过一个简单的 Go 语言示例,展示了如何使用 Gin 框架实现优雅关机。通过捕获系统信号和使用 `http.Server` 的 `Shutdown` 方法,我们可以在服务关闭前等待所有请求处理完毕,从而提升用户体验,避免数据丢失或不一致。
16 1
|
21天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
1月前
|
XML JSON 安全
定义Web服务
【10月更文挑战第18天】定义Web服务
62 12
|
1月前
|
XML 关系型数据库 MySQL
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
28 0
|
JavaScript 前端开发 API
Hello.js – Web 服务授权的 JavaScript SDK
  Hello.js 是一个客户端的 Javascript SDK,用于实现 OAuth2 认证(或者基于 OAuth 代理实现的 OAuth1)的 Web 服务和查询 REST API。 HelloJS 标准化路径和对通用的 API 响应 ,如谷歌的数据服务, Facebook 的图形和 Windows Live 连接。
1096 0
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
113 3
|
23天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
124 45
下一篇
无影云桌面