温馨提示×

如何在Debian上实现Nginx高可用

小樊
45
2025-10-07 10:35:35
栏目: 智能运维

在Debian上实现Nginx高可用可以通过多种方式来完成,其中最常见的是使用Keepalived和Heartbeat来创建一个虚拟IP(VIP)和一个故障转移机制。以下是实现Nginx高可用的基本步骤:

1. 安装Nginx

首先,在两台或多台服务器上安装Nginx。

sudo apt update
sudo apt install nginx

2. 配置Nginx

确保Nginx配置文件在所有服务器上保持一致。通常配置文件位于/etc/nginx/nginx.conf

3. 安装Keepalived

Keepalived用于管理虚拟IP地址和健康检查。

在所有服务器上安装Keepalived:

sudo apt install keepalived

4. 配置Keepalived

编辑Keepalived配置文件,通常位于/etc/keepalived/keepalived.conf

主服务器配置示例(假设IP地址为192.168.1.100):

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1234
    }

    virtual_ipaddress {
        192.168.1.100
    }

    track_script {
        chk_nginx
    }
}

virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.1.100 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            connect_port 80
        }
    }
}

备份服务器配置示例(假设IP地址为192.168.1.101):

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1234
    }

    virtual_ipaddress {
        192.168.1.100
    }

    track_script {
        chk_nginx
    }
}

virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.1.100 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            connect_port 80
        }
    }
}

5. 配置健康检查脚本

创建一个脚本来检查Nginx的健康状态。

sudo nano /etc/keepalived/chk_nginx.sh

脚本内容:

#!/bin/bash

if ! nginx -t; then
    exit 1
fi

exit 0

赋予脚本执行权限:

sudo chmod +x /etc/keepalived/chk_nginx.sh

6. 启动Keepalived

在所有服务器上启动Keepalived服务:

sudo systemctl start keepalived
sudo systemctl enable keepalived

7. 验证配置

确保虚拟IP地址已经分配,并且可以通过浏览器访问。

ip addr show eth0 | grep 192.168.1.100

通过以上步骤,你可以在Debian上实现Nginx的高可用性。主服务器和备份服务器将共享一个虚拟IP地址,当主服务器宕机时,备份服务器将接管虚拟IP地址,确保服务的连续性。

0