【Nginx + Keepalived 实现高可用的负载均衡架构】

使用 Nginx + Keepalived 可以实现高可用的负载均衡架构,确保在某个 Nginx 节点故障时,自动将流量转移到备用节点。以下是详细的实现步骤:


1. 架构概述

  • Nginx:作为负载均衡器,将流量分发到后端服务器。
  • Keepalived:实现虚拟 IP(VIP)的故障转移,确保高可用性。
  • VIP(Virtual IP):客户端通过该 IP 访问服务,Keepalived 负责将 VIP 绑定到主节点或备用节点。

2. 环境准备

  • 两台服务器(主节点和备用节点),均安装 Nginx 和 Keepalived。
  • 确保两台服务器之间可以互相通信。
  • 确保 VIP 未被其他服务占用。

3. 安装 Nginx

在两台服务器上安装 Nginx:

bash 复制代码
# Ubuntu/Debian
sudo apt update
sudo apt install nginx

# CentOS/RHEL
sudo yum install nginx

启动并启用 Nginx:

bash 复制代码
sudo systemctl start nginx
sudo systemctl enable nginx

4. 安装 Keepalived

在两台服务器上安装 Keepalived:

bash 复制代码
# Ubuntu/Debian
sudo apt install keepalived

# CentOS/RHEL
sudo yum install keepalived

启动并启用 Keepalived:

bash 复制代码
sudo systemctl start keepalived
sudo systemctl enable keepalived

5. 配置 Keepalived

5.1 主节点配置

编辑 /etc/keepalived/keepalived.conf

bash 复制代码
vrrp_instance VI_1 {
    state MASTER           # 主节点
    interface eth0         # 网卡名称(根据实际情况修改)
    virtual_router_id 51   # 虚拟路由 ID,主备节点必须相同
    priority 100           # 优先级,主节点高于备用节点
    advert_int 1           # 检查间隔(秒)

    authentication {
        auth_type PASS
        auth_pass 1234     # 认证密码,主备节点必须相同
    }

    virtual_ipaddress {
        192.168.1.100      # 虚拟 IP(VIP)
    }
}

5.2 备用节点配置

编辑 /etc/keepalived/keepalived.conf

bash 复制代码
vrrp_instance VI_1 {
    state BACKUP           # 备用节点
    interface eth0         # 网卡名称(根据实际情况修改)
    virtual_router_id 51   # 虚拟路由 ID,主备节点必须相同
    priority 90            # 优先级,低于主节点
    advert_int 1           # 检查间隔(秒)

    authentication {
        auth_type PASS
        auth_pass 1234     # 认证密码,主备节点必须相同
    }

    virtual_ipaddress {
        192.168.1.100      # 虚拟 IP(VIP)
    }
}

6. 配置 Nginx

在两台服务器上配置 Nginx,确保负载均衡功能正常。例如:

bash 复制代码
http {
    upstream backend {
        server 192.168.1.101;  # 后端服务器 1
        server 192.168.1.102;  # 后端服务器 2
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend;
        }
    }
}

7. 启动服务

7.1 启动 Keepalived

在主节点和备用节点上启动 Keepalived:

bash 复制代码
sudo systemctl restart keepalived

7.2 检查 VIP 绑定

在主节点上检查 VIP 是否绑定:

bash 复制代码
ip addr show eth0

输出示例:

复制代码
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.100/32 scope global eth0
       valid_lft forever preferred_lft forever

8. 测试故障转移

8.1 停止主节点的 Keepalived

在主节点上停止 Keepalived:

bash 复制代码
sudo systemctl stop keepalived

8.2 检查备用节点的 VIP

在备用节点上检查 VIP 是否绑定:

bash 复制代码
ip addr show eth0

8.3 恢复主节点

在主节点上重新启动 Keepalived:

bash 复制代码
sudo systemctl start keepalived

VIP 应重新绑定到主节点。


9. 日志与监控

9.1 查看 Keepalived 日志

bash 复制代码
journalctl -u keepalived

9.2 监控 Nginx 状态

确保 Nginx 正常运行:

bash 复制代码
systemctl status nginx

10. 总结

通过 Nginx + Keepalived 实现故障自动转移的步骤如下:

  1. 在两台服务器上安装 Nginx 和 Keepalived。
  2. 配置 Keepalived 的主备节点,设置 VIP。
  3. 配置 Nginx 实现负载均衡。
  4. 测试故障转移功能,确保高可用性。

这种架构可以确保在单点故障时,服务仍然可用,适合生产环境中的高可用需求。

相关推荐
技术小甜甜3 分钟前
[AI架构] 云模型 vs 本地模型:企业AI部署的架构选择
人工智能·ai·架构·创业创新
Densen20148 分钟前
发布blazor应用到Linux, 使用nginx作为WebSocket代理
linux·websocket·nginx
不是书本的小明20 分钟前
Apache vs Nginx vs Tomcat 核心区别与优化
nginx·tomcat·apache
裴云飞35 分钟前
Compose原理十二之CompositionLocal
架构
龙码精神40 分钟前
ClickHouse 容灾技术方案(两方案对比+落地细节)
后端·架构
shangjian0071 小时前
OpenClaw学习笔记-01-架构篇
笔记·学习·架构
code 小楊1 小时前
深度解析RAG系统与AI Agent:原理、架构及协同落地
人工智能·架构
无忧智库1 小时前
破局与重构:大型集团财务共享业财一体化的数字基因革命(PPT)
大数据·架构
weixin199701080162 小时前
《淘宝双11同款:基于 Sentinel 的微服务流量防卫兵实战》
微服务·架构·sentinel
Shining05962 小时前
AI 编译器系列(五)《拓展 Triton 深度学习编译器——DLCompiler》
人工智能·深度学习·学习·其他·架构·ai编译器·infinitensor