初识keepalived(三)——keepalived与nginx代理实现高可用

简介:

背景介绍

nginx除了可以作为web服务器外,同时也是一个反向代理软件,nginx不能完全取代apache,所以很多场景下nginx作为apache的反向代理服务器。nginx运行在用户空间,代替用户向服务器发起请求,请求返回时再经由nginx服务器返回给用户。不同于LVS的NAT模型,web服务器的网关不用必须指向nginx服务器,只要2者之间可以通信就可以,由于nginx作为代理服务器,所以支持端口转换。

网络拓扑

实验拓扑结构如下:

实验系统采用CentOS6.8,nginx采用1.12.1,所有设备连接在同一个虚拟交换机上,172.16.20.0/24网段模拟公网地址,172.16.10.0/24网段模拟内网地址。nginx服务器除配置内网地址外再安装keepalived服务,并创建2个vrrp实例,为vrrp实例配置公网地址实现keepalived双主模式高可用,同时对nginx服务进行健康检测,实现nginx反向代理高可用。用户通过修改host文件模拟域名绑定多个IP地址接收用户访问。

spacer.gif1.png

操作步骤

1.为web1和web2服务器安装httpd服务,默认端口改为8080,分别将主页面修改为RS1 Server和RS2 Server(略)

2.修改客户端host文件,设置www.abc.com的地址为172.16.20.100和172.16.20.200(略)

3.安装nginx软件,在配置文件中设置上游服务器地址和端口,将通过80端口接收到的请求全部转发至上游服务器

spacer.gif2.png

4.以nginx1服务器为例,在其上安装keepalived软件,创建2个vrrp实例并设置公网IP地址,实例1为主,实例2为备用。nginx2服务器上设置刚好相反,这样2个keepalived服务在实现双主模式的同时互为冗余,此时任何一个服务器keepalived服务掉线,另一个服务器都会添加该服务器的公网IP地址。此时虽然keepalived服务实现了多个公网IP地址的高可用但又会引入一个新的问题:如果一台nginx服务器上的keepalived服务正常,nginx服务没有启动或者意外中止,这台nginx服务器依然会保留公网IP地址,而通过此公网IP进来的用户则由于nginx服务的掉线无法正常访问到后端的apche服务器。针对此问题引入了红框中的nginx服务健康检测脚本,并在实例中进行调用

spacer.gifspacer.gif3.png33.png

5.当一个进程启动时,会在指定位置生成一个pid文件,该文件会随着进程的终止而消失。检测脚本就是利用该特性,当pid文件不存在时vrrp实例的权重-20,这样当一个服务器的nginx服务停止或未启动时,另一个服务器都会添加该服务器的公网IP地址,从而避开nginx掉线的服务器

spacer.gif4.png

结果验证

经测试,此时任何一台代理服务器上的keepalived服务或者nginx服务掉线后,另一台服务器都会接管该服务器的公网IP地址,从而实现keepalived和nginx的高可用。

补充说明

此方案中还有一个疑问:web服务器是否实现冗余,尽管nginx服务实现了高可用,如果web服务器宕机,nginx的upstream中是否会检测到掉线的web服务器并在调度用户请求时避开掉线的web服务器。经测试可以避开掉线的服务器,但无法通过upstream本身显示上游服务器健康状态



本文转自 qiao645 51CTO博客,原文链接:http://blog.51cto.com/arkling/2044272

相关文章
|
2月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
1月前
|
数据可视化 应用服务中间件 网络安全
简单易用的Nginx代理管理工具:体验便捷配置、高效管理
Nginx Proxy Manager是一款强大的代理服务器管理工具,提供简单直观的界面来配置和管理Nginx代理服务器,帮助用户轻松提升配置的简洁性和便捷性。
51 0
简单易用的Nginx代理管理工具:体验便捷配置、高效管理
|
1月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
216 0
|
3月前
Nginx---代理遇到的坑
Nginx---代理遇到的坑
18 1
|
4月前
|
负载均衡 前端开发 应用服务中间件
NGINX高可用之keepalived+nginx主从模式+主主模式配置实践
NGINX高可用之keepalived+nginx主从模式+主主模式配置实践
132 1
|
4月前
|
域名解析 网络协议 应用服务中间件
百度搜索:蓝易云【服务器配置到云上nginx代理?】
现在,您的云服务器已经配置为使用Nginx代理了。通过访问您的域名,请求将被转发到云服务器上的指定端口,并由Nginx进行代理。请确保在配置和使用过程中注意安全性和网络设置,并根据您的需求进行相应调整。
40 0
|
4月前
|
应用服务中间件 nginx Python
nginx代理目录
nginx代理目录
47 1
|
5月前
|
前端开发 JavaScript 应用服务中间件
nginx配置vue前端代理
nginx配置vue前端代理
79 0
|
5月前
|
运维 应用服务中间件 nginx
运维(27)-部署流量代理(Nginx+haproxy)
运维(27)-部署流量代理(Nginx+haproxy)
63 0
|
5月前
|
负载均衡 安全 应用服务中间件
Nginx实现websocket代理的方式
Nginx实现websocket代理的方式
84 0