nginx+keepalived高可用

目录

一、项目背景

1nginx+keepalived原理

1.1 Nginx

1.2 Keepalived

二、nginx+keepalived原理

2.1 keepalived主要作用

2.2 nginx+keepalived原理图

三、环境准备

四、keepalived配置编辑

1、两台nginx代理服务器安装keepalived:

2、keepalived默认配置文件路径:

3、修改配置文件(将原来的配置文件全删除)

3.1修改主节点keepalvied的配置

3.2修改从节点keepalvied的配置

4、启动keepalive服务,查看虚拟地址是否存在·

五、项目测试

5.1本章小节

六、shell判断nginx运行状态



一、项目背景

1nginx+keepalived原理

1.1 Nginx

Nginx 是一个高性能的开源反向代理服务器,也可以用作负载均衡器、HTTP缓存以及作为Web服务器。它的主要优点包括:

  • 高性能:Nginx 能够处理大量并发连接和高流量。
  • 低资源消耗:相比传统的Web服务器,Nginx 的内存消耗较低。
  • 可扩展性:支持插件和模块,可以扩展其功能。
  • 灵活性:支持多种协议(HTTP、HTTPS、SMTP、POP3等)和配置选项。

在高可用架构中,Nginx 常用作前端的负载均衡器,将流量分发到多个后端服务器上。

1.2 Keepalived

Keepalived 是一个用于实现高可用性的工具,主要功能是通过虚拟IP(VIP)实现故障转移和负载均衡。它的关键特点包括:

  • 虚拟IP管理:Keepalived 可以维护一个虚拟IP地址,客户端访问这个IP时,请求会被转发到实际的服务器上。
  • 健康检查:Keepalived 可以定期检查后端服务器的健康状态,如服务器是否存活、服务是否可用等。
  • 故障转移:如果某个服务器或服务发生故障,Keepalived 可以自动切换到备用服务器,以确保服务的可用性。
  • 优先级管理:可以设置服务器的优先级,以决定哪个服务器成为主服务器处理请求。 

二、nginx+keepalived原理

2.1 keepalived主要作用

这儿主要介绍keepalived工作与原理:

  1. 虚拟IP(VIP)管理

    • Keepalived 在多台服务器(节点)上运行,并通过协作来管理一个虚拟IP地址(VIP)。
    • 这个VIP被配置为服务的前端地址,客户端访问这个VIP时,请求会被转发到实际的服务器上。
  2. 故障检测和切换

    • 如果在健康检查中发现某个节点或者其服务不可用,Keepalived 将其标记为故障状态。
    • 故障节点的 VIP 将自动迁移到备用节点上,确保服务的可用性。
    • 迁移过程通常包括通知网络设备,以确保流量被正确地重定向到新的活跃节点。
  3. 优先级和权重管理

    • Keepalived 允许管理员设置节点的优先级和权重,以便在决定主节点时进行权衡。
    • 主节点通常是处理流量的首选节点,备用节点则用于故障转移时接管服务。

2.2 nginx+keepalived原理图

高可用Web服务:通过使用 Keepalived 管理虚拟IP,实现Nginx负载均衡器的高可用性。如果主 Nginx 节点发生故障,Keepalived 可以将虚拟IP迁移到备用节点,确保服务的连续性。

  • 1、keepalived是一个程序,它的作用是相互判断两台服务器上面的keepalived是否宕机,相互发送数据包;两台服务器上的keepalive是靠相互通讯来判断的,如果一台服务器上keepalived挂掉了,keepalived就会把虚拟的ip就会转移到备用的nginx服务器上,实现服务转移

  • 2、需要在两台服务器上分别安装keepalived程序,并修改配置文件(详细参考项目步骤)

  • 3、客户端就只能访问虚拟的ip才能访问到nginx服务器了,因为有两台nginx代理,但是作为一个站点就只能访问keepalived虚拟出来的这个ip  192.168.128.200

  • 缺点:

  • 当代理服务nginx坏了 但是keepalive没有挂这时候就可能存在服务无法访问了 (见附加详解)

三、环境准备

2台nginx服务     1台或者多台业务服务器 

本项目采用的是两台nginx服务 2台业务服务器  

四、keepalived配置编辑

1、两台nginx代理服务器安装keepalived:

[root@localhost ~]# yum install keepalived -y

2、keepalived默认配置文件路径:

[root@localhost conf]# vim /etc/keepalived/keepalived.conf 

3、修改配置文件(将原来的配置文件全删除
  3.1  修改主节点keepalvied的配置

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL

}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.128.200
    }
}

其他配置可以不用修改,默认就好

3.2  修改从节点keepalvied的配置

! Configuration File for keepalived

global_defs {
   router_id 222

}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.128.200
    }
}

 

其他配置可以不用修改,默认就好

4、启动keepalive服务,查看虚拟地址是否存在·

[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl status  keepalived

可以看到现在多了一个ip地址,就是keppalive虚拟出来的地址(我这儿虚拟IP地址在从节点上)

五、项目测试

1、测试服务器宕机了,keepalived虚拟IP地址是否会自动转移ip,使用windows cmd窗口ping命令测试

>ping 192.168.128.200 -t

2、ping虚拟IP地址,ping通后将虚拟ip地址的那台服务器(从节点)直接关机,观察还能继续ping通不

3、测试发现当关闭从节点服务器ping直接中断了,但是稍后又可以ping通了,说明虚拟ip地址转移成功了

4、这时的虚拟ip地址已经转移到主节点上面去了

5、最后使用虚拟ip地址访问web项目是可以正常访问到的

5.1本章小节

      以上是整个keepalived部署的所有步骤。但是还存在以下下缺点:

      keepalive只能相互检查对方的进程是否还存活,所以对nginx没有任何一点监控作用,当nginx宕机后,keepalived进程还存活着就会导致web项目无法访问,所以后续需要编写一个shell脚本来完成对nginx进程的判断

六、shell判断nginx运行状态

脚本实现:

当判断nginx进程挂掉时,脚本会强制干掉keepalive的进程,这样nginx挂掉后keepalive也会挂掉,最后虚拟ip地址转移到另外一台nginx服务器上

将以上脚本放到nginx上就可以检查nginx的存活状态了

注意   执行脚本的时候加上 &符号,让脚本后台运行

#!/bin/bash

while true; do
    # 检查Nginx进程是否存在
    if ! pgrep nginx > /dev/null; then
        systemctl stop keepalived
    fi
    sleep 5   # 等待5秒后再次检查
done

 

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值