ubuntu

ubuntu nginx如何实现高可用

小樊
34
2025-09-19 15:23:19
栏目: 智能运维

在Ubuntu上实现Nginx的高可用性,通常涉及以下几个关键步骤:

1. 配置负载均衡

使用Nginx作为反向代理服务器,将流量分发到多个后端服务器上。

安装Nginx

sudo apt update
sudo apt install nginx

配置负载均衡

编辑Nginx配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default),添加负载均衡配置:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    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;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

2. 使用Keepalived实现虚拟IP和故障转移

Keepalived可以提供虚拟IP地址(VIP)和故障转移功能。

安装Keepalived

sudo apt install keepalived

配置Keepalived

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

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

    authentication {
        auth_type PASS
        auth_pass 42
    }

    virtual_ipaddress {
        192.168.1.100
    }
}

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.1 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            connect_port 80
        }
    }

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

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

3. 配置健康检查

确保Nginx服务器的健康状态可以被Keepalived检测到。

配置Nginx健康检查

在Nginx配置文件中添加健康检查端点:

server {
    listen 80;

    location /health {
        return 200 "OK";
    }

    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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

4. 启动服务

启动Nginx和Keepalived服务:

sudo systemctl start nginx
sudo systemctl start keepalived

5. 测试高可用性

通过停止一个Nginx实例或断开其与Keepalived的连接,测试故障转移功能是否正常工作。

sudo systemctl stop nginx

如果配置正确,Keepalived会将虚拟IP地址切换到另一个健康的Nginx实例上。

通过以上步骤,你可以在Ubuntu上实现Nginx的高可用性。确保定期检查和维护系统,以确保其稳定运行。

0
看了该问题的人还看了