温馨提示×

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