在Ubuntu上实现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;
}
}
}
Keepalived可以提供虚拟IP地址(VIP)和故障转移功能。
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 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
}
}
}
确保Nginx服务器的健康状态可以被Keepalived检测到。
在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;
}
}
启动Nginx和Keepalived服务:
sudo systemctl start nginx
sudo systemctl start keepalived
通过停止一个Nginx实例或断开其与Keepalived的连接,测试故障转移功能是否正常工作。
sudo systemctl stop nginx
如果配置正确,Keepalived会将虚拟IP地址切换到另一个健康的Nginx实例上。
通过以上步骤,你可以在Ubuntu上实现Nginx的高可用性。确保定期检查和维护系统,以确保其稳定运行。