如何在租用的物理服务器上部署Keepalived + Nginx高可用主备切换?

如何在租用的物理服务器上部署Keepalived + Nginx高可用主备切换?

在一些高流量的Web应用场景中,单个Nginx实例可能无法提供足够的性能和稳定性。为了避免单点故障带来的服务中断,通常需要将 Nginx 部署为一个高可用集群,其中一个节点作为主节点,另一个节点作为备节点。为了实现节点之间的自动故障切换,我们可以使用 Keepalived 作为一个高可用性解决方案,结合 Nginx 配置负载均衡功能,实现主备切换的功能。

1.部署目标

  • 使用 Keepalived 实现主备节点的高可用性。
  • 配置 Nginx 在两台服务器上进行负载均衡。
  • 在主节点出现故障时,自动切换至备节点,保持服务不中断。

2. 硬件与软件配置

硬件配置

假设我们有两台物理服务器,分别配置如下:

Server 1(主节点)

  • CPU:Intel Xeon E5-2620 v4 (8 核)
  • 内存:16 GB
  • 存储:500 GB SSD
  • 操作系统:CentOS 7
  • 公网 IP:203.0.113.1

Server 2(备节点)

  • CPU:Intel Xeon E5-2620 v4 (8 核)
  • 内存:16 GB
  • 存储:500 GB SSD
  • 操作系统:CentOS 7
  • 公网 IP:203.0.113.2

软件配置

  • Nginx:版本 1.18
  • Keepalived:版本 2.0
  • 操作系统:CentOS 7

为了便于理解,本文将使用 Keepalived 进行 VRRP(Virtual Router Redundancy Protocol)配置,通过虚拟 IP 来实现主备切换。主节点和备节点上将运行 Nginx 服务,并通过 Keepalived 管理虚拟 IP 的切换。

3. 安装与配置

安装 Nginx

在两台服务器上安装 Nginx:

sudo yum install epel-release
sudo yum install nginx

安装完成后,启动 Nginx 服务:

sudo systemctl start nginx
sudo systemctl enable nginx

可以通过访问 http://203.0.113.1 和 http://203.0.113.2 来检查 Nginx 是否成功启动。

安装 Keepalived

在两台服务器上安装 Keepalived:

sudo yum install keepalived

配置 Keepalived

①主节点配置(Server 1)

在主节点 Server 1 上配置 Keepalived。编辑 /etc/keepalived/keepalived.conf 文件:

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        203.0.113.100
    }
}

解释:

  • state MASTER:指定该服务器为主节点。
  • priority 101:主节点的优先级设置为 101,备节点的优先级应低于 101(例如 100)。
  • virtual_ipaddress:指定虚拟 IP 地址 203.0.113.100,这是主备切换时使用的虚拟 IP。

②备节点配置(Server 2)

在备节点 Server 2 上配置 Keepalived。编辑 /etc/keepalived/keepalived.conf 文件:

http {
    upstream backend {
        server 127.0.0.1:80;  # 指向本地 Nginx 服务
        # 可以添加更多的后端服务器(例如多个应用服务器)
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

解释:

  • state BACKUP:指定该服务器为备节点。
  • priority 100:备节点的优先级设置为 100。

③ 启动 Keepalived

在两台服务器上启动 Keepalived 服务:

sudo systemctl start keepalived
sudo systemctl enable keepalived

通过 ip addr show 命令可以查看虚拟 IP 地址是否已经被分配。

4. 配置 Nginx 负载均衡

Nginx 配置负载均衡用于在多个 Web 服务器之间分发流量。在主节点和备节点上,编辑 Nginx 配置文件 /etc/nginx/nginx.conf,配置负载均衡规则:

nginx
复制
编辑
http {
upstream backend {
server 127.0.0.1:80; # 指向本地 Nginx 服务
# 可以添加更多的后端服务器(例如多个应用服务器)
}

server {
listen 80;

location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
在每台服务器上都进行相同的配置,并重启 Nginx 服务:

bash
复制
编辑
sudo systemctl restart nginx
5. 测试与验证
验证虚拟 IP 的切换:在主节点 Server 1 上停掉 Keepalived 服务:

bash
复制
编辑
sudo systemctl stop keepalived
此时,虚拟 IP 203.0.113.100 会自动切换到备节点 Server 2。使用 ping 命令或访问虚拟 IP 地址来验证切换是否成功。

验证负载均衡:同时向虚拟 IP 地址发起请求,查看请求是否被负载均衡到正确的服务器上。可以通过查看 Nginx 日志来确认请求的处理情况。

验证故障恢复:恢复主节点上的 Keepalived 服务,验证虚拟 IP 是否能够自动切换回主节点,并且 Nginx 服务继续正常运行。

我们通过 Keepalived 和 Nginx 配置高可用主备切换方案,可以有效避免 Web 服务的单点故障,确保在一个节点发生故障时,另一个节点能够自动接管流量,保证服务的高可用性。

未经允许不得转载:A5数据 » 如何在租用的物理服务器上部署Keepalived + Nginx高可用主备切换?

相关文章

contact