ubuntu

ubuntu nginx如何实现高可用性

小樊
46
2025-09-03 07:58:23
栏目: 智能运维

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

1. 安装Nginx

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

sudo apt update
sudo apt install nginx

2. 配置负载均衡

使用Nginx的upstream模块来配置负载均衡。编辑/etc/nginx/nginx.conf或创建一个新的配置文件在/etc/nginx/conf.d/目录下。

http {
    upstream backend {
        server server1.example.com;
        server server2.example.com;
        server server3.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;
        }
    }
}

3. 配置健康检查

Nginx Plus支持内置的健康检查功能,但标准版Nginx需要借助第三方模块或脚本来实现。可以使用ngx_http_upstream_check_module模块。

安装模块

sudo apt install nginx-extras

配置健康检查

编辑Nginx配置文件,添加健康检查模块的配置。

http {
    upstream backend {
        server server1.example.com max_fails=3 fail_timeout=30s;
        server server2.example.com max_fails=3 fail_timeout=30s;
        server server3.example.com max_fails=3 fail_timeout=30s;

        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_http_send "HEAD /health HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
    }

    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;
        }
    }
}

4. 配置故障转移

使用Keepalived来实现故障转移。Keepalived可以监控Nginx服务的状态,并在主服务器宕机时自动将流量切换到备用服务器。

安装Keepalived

sudo apt install 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 1234
    }

    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
        }
    }
}

5. 启动服务

启动Nginx和Keepalived服务。

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start keepalived
sudo systemctl enable keepalived

6. 验证配置

确保所有服务器上的Nginx和Keepalived服务正常运行,并且虚拟IP地址已经分配到主服务器上。

通过以上步骤,你可以在Ubuntu上实现Nginx的高可用性。

0
看了该问题的人还看了