Nginx 实战系列(十 一)—— Nginx+Keepalived高可用集群搭建方案

前言

在企业级应用中,保证服务的高可用性是至关重要的。Nginx作为流行的Web服务器和反向代理服务器,其高可用性方案能够有效避免单点故障,确保业务连续性。本文将详细介绍在CentOS 7.9系统下,使用Keepalived实现Nginx高可用集群的完整方案。

一、环境准备

1.1 系统环境

  • 操作系统:CentOS 7.9
  • 服务器1:192.168.10.21(主节点)
  • 服务器2:192.168.10.22(备节点)
  • 虚拟IP(VIP):192.168.10.180
  • 已安装软件:Nginx

1.2 基础环境设置

1.2.1 关闭防火墙和SELinux

在两台服务器上执行以下操作:

# 停止并禁用防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

# 临时关闭SELinux
setenforce 0

# 永久关闭SELinux(需要重启生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 验证SELinux状态
getenforce

1.2.2 安装Keepalived软件包

在两台服务器上执行:

yum install -y keepalived

1.2.3 为nginx服务器准备网页文档

# 192.168.10.21
echo "<h1>192.168.10.21</h1>" > /usr/local/nginx/html//index.html
# 192.168.10.22
echo "<h1>192.168.10.22</h1>" > /usr/local/nginx/html//index.html

在这里插入图片描述

在这里插入图片描述

二、配置健康检查脚本

2.1 创建健康检查脚本

在两台服务器上创建相同的健康检查脚本:

vim /etc/keepalived/check_nginx.sh

脚本内容:

#!/bin/bash
# 检测 nginx 是否存活
# 存活  -> exit 0
# 死亡  -> exit 1
if /usr/bin/pgrep -x "nginx" >/dev/null 2>&1; then
    exit 0
else
    exit 1
fi

在这里插入图片描述

2.2 设置脚本权限

chmod +x /etc/keepalived/check_nginx.sh

三、配置Keepalived

3.1 主服务器配置(192.168.10.21)

创建或编辑Keepalived配置文件:

vim /etc/keepalived/keepalived.conf

配置文件内容:

! Configuration File for keepalived

global_defs {
    router_id nginx_master  # 唯一标识,备份节点要不同
}

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"  # 健康检查脚本
    interval 2   # 检查间隔(秒)
    weight -50   # 检查失败时权重减少值
    fall 2       # 连续失败2次才认为故障
    rise 1       # 成功1次就认为恢复
}

vrrp_instance VI_1 {
    state MASTER           # 初始状态
    interface ens33       # 网卡名称,根据实际情况修改
    virtual_router_id 51   # 虚拟路由ID,同一组keepalived必须相同
    priority 100           # 优先级,主节点要高于备份节点
    
    advert_int 1           # 心跳间隔(秒)
    
    authentication {
        auth_type PASS     # 认证方式
        auth_pass 1111     # 认证密码,同一组keepalived必须相同
    }
    
    track_script {
        chk_nginx         # 执行健康检查
    }
    
    virtual_ipaddress {
        192.168.10.180/24 dev ens33 # 虚拟IP地址
    }

}

3.2 备份服务器配置(192.168.10.22)

创建或编辑Keepalived配置文件:

vim /etc/keepalived/keepalived.conf

配置文件内容:

! Configuration File for keepalived

global_defs {
    router_id nginx_backup  # 唯一标识
}

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -50
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state BACKUP           # 初始状态为备份
    interface ens33      
    virtual_router_id 51   # 必须与主节点相同
    priority 90            # 优先级低于主节点
    
    advert_int 1
    
    authentication {
        auth_type PASS
        auth_pass 1111     # 必须与主节点相同
    }
    
    track_script {
        chk_nginx
    }
    
    virtual_ipaddress {
        192.168.10.180/24 dev ens33
    }
}

重要提示:请根据实际网络环境修改interface参数,使用ip addr命令查看正确的网卡名称。

四、启动服务

4.1 启动Keepalived和Nginx

在两台服务器上执行:

# 启动keepalived并设置开机自启
systemctl start keepalived
systemctl enable keepalived

# 检查服务状态
systemctl is-active keepalived
systemctl is-active nginx

在这里插入图片描述

五、验证配置

5.1 检查VIP绑定状态

在主服务器上执行:

ip addr show ens33

在这里插入图片描述

5.2 测试VIP访问

从客户端测试虚拟IP是否可访问:

http://192.168.10.180

在这里插入图片描述

六、故障切换测试

6.1 查看keepalived日志

tail -f /var/log/messages | grep keepalived

6.2 测试Nginx服务故障

在主服务器上停止Nginx服务:

systemctl stop nginx

等待几秒钟后,在备份服务器上检查VIP是否已切换:

ip addr show ens33

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 恢复测试

恢复主服务器服务:

systemctl start nginx
# 主服务器执行
ip addr show ens33

由于主服务器优先级更高,VIP应该会自动切回主服务器。

在这里插入图片描述

# 在客户端继续访问vip,查看区别
http://192.168.10.180

在这里插入图片描述

总结

本文详细介绍了在CentOS 7.9系统下搭建Nginx+Keepalived高可用集群的完整方案。通过该方案,可以实现:

  1. 自动故障检测:通过健康检查脚本实时监控Nginx服务状态
  2. 自动故障切换:当主节点出现故障时,VIP会自动切换到备用节点
  3. 服务高可用:确保Web服务在单点故障时仍可正常访问
  4. 快速恢复:故障节点恢复后,可自动或手动切回主节点

该方案具有配置简单、可靠性高、维护方便等特点,适合中小型企业的Web服务高可用需求。在实际生产环境中,建议结合监控系统对集群状态进行实时监控,并定期进行故障切换演练,确保高可用方案的有效性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值