初识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地址接收用户访问。

操作步骤

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端口接收到的请求全部转发至上游服务器

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

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

结果验证

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

补充说明

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

时间: 2024-10-11 15:56:26

初识keepalived(三)——keepalived与nginx代理实现高可用的相关文章

Keepalived+Nginx+Tomcat 实现高可用Web集群(转)

Keepalived+Nginx+Tomcat 实现高可用Web集群 溯水心生 关注 2018.01.08 20:28* 字数 1382 阅读 965评论 1喜欢 9 集群规划图片 一.Nginx的安装过程 1.下载Nginx安装包,安装依赖环境包 (1)安装 C++编译环境 yum -y install gcc #C++ (2)安装pcre yum -y install pcre-devel (3)安装zlib yum -y install zlib-devel (4)安装Nginx 定位到n

利用keepalived实现nginx调度器高可用(一)

利用keepalived实现nginx调度器高可用 声明:提供四台主机,其中两台nginx做前端调度器(一台做主调度器,一台做备用调度器), 另外两台主机做web服务器向外提供http服务: 框架如图: 1.在两台nginx上配置nginx反代服务 # vim /etc/nginx/nginx.conf 在http上下文中添加下文: upstream webser {             server 172.16.1.12:80 weight=1;             server 1

nginx全面解析【负载均衡、反向代理、高可用、宕机容错】

nginx全面解析[负载均衡.反向代理.高可用.宕机容错]原创itcats_cn 最后发布于2018-09-06 10:24:33 阅读数 15799 收藏展开什么是nginx?nginx是一款高性能的http服务器,官方测试nginx能够支支撑5万并发链接,并且cpu.内存等资源消耗却非常低,运行非常稳定,所以现在很多知名的公司都在使用nginx. nginx有什么作用?1.负载均衡(可以减轻单台服务器的压力) 2.反向代理(隐藏企业真实的ip地址) 3.搭建虚拟服务器 4.用做静态服务器(实

haproxy+keepalived来实现mariadb galera cluster的高可用架构

网络拓扑图如下: mariadb galera cluster集群基于wsrep协议可以实现mysql多主复制架构,详细说明如下: galera cluster复制: galera cluster本身是基于wsrep协议工作在底层的文件复制通道而已,只需要指明复制的文件,它会自动在多个节点之间的检测文件状态并完成数据同步.并且galera cluster向上提供API,其他组件只需调用其API,即可完成所需的文件复制功能. galera cluster向上提供API,mysql只需调用其API即

Keepalived现实Web双机热备(高可用)

Keepalived现实Web双机热备(高可用) 通过在两台主.备调度器上实现Keepalived高可用解决调度器单点失败问题 主.备调度器上配置LVS,正常情况下主调度器工作 主调度器异常时,Keepalived启用备用调度器,保证了调度器的高可用 调度器保证了后台服务的高可用 Keepalived机制把同一个IP一直分配在同一个Web服务器 如下实现web服务器的高可用: web1 :  192.168.10.20     主 web2:   192.168.10.22     备 虚拟IP

[转帖]【MySQL+keepalived】用keepalived实现MySQL主主模式的高可用

[MySQL+keepalived]用keepalived实现MySQL主主模式的高可用 https://www.jianshu.com/p/8694d07595bc 一.实验说明 MySQL主主模式,是两台MySQL数据库互为主从. 此实验是用keepalived实现MySQL主主模式的高可用,基于已经安装好了主主架构的MySQL,然后配置keepalived,验证高可用性! 二.实验环境 操作系统:CentOS 7.5 serverA:192.168.1.104 serverB: 192.1

keepalived实现WEB服务集群的高可用负载均衡

要求:利用keepalived实现WEB服务集群的高可用负载均衡,即在lvs_dr模型中扮演director的角色,对来自用户的请求按照一定的算法分配至后端服务器中:且keepalived服务器可实现高可用. keepalived是vrrp协议的一种实现,专门为lvs设计,以实现对lvs高可用就集群中的dirctor进行冗余以及对realserver进行健康检测.当一台主机(MASTER)出现问题后,keepalived能够将VIP自动的分配到备用的主机上(BACKUP),从而实现了自身(dir

Nginx负载均衡高可用

1.   Nginx负载均衡高可用 要实现nginx的高可用,需要实现备份机. 1.1. 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx(对外服务的唯一入口,唯一公网IP),可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重. 为了屏蔽负载均衡服务器的宕机,需要建立一个备份机.主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况.当备

Windows Server 2016之RDS部署之添加RD连接代理的高可用

根据以下概述,上片我简单写了一下RDS添加RD虚拟化主机,如下简单介绍RD连接代理的高可用:慢慢完善RDS整个部署,请敬请期待吧! 主题 部署环境 先决条件 配置高可用 添加服务器 部署环境 RD连接代理我这里也是使用的Windows Server 2016,这里只介绍RDCB服务器 编号 服务器名称 IP地址 操作系统 001 RDCB1 192.168.1.205 Windows Server 2016 Datacenter Evaluation 002 RDCB2 192.168.1.20