Nginx集群可以提供高可用性、负载均衡和横向扩展能力。以下是搭建和使用Nginx集群的详细方案:
在所有节点上安装Nginx:
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
在主Nginx服务器上配置负载均衡(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/loadbalancer.conf
):
upstream backend {
# 配置后端服务器
server 192.168.1.101:80 weight=5;
server 192.168.1.102:80;
server 192.168.1.103:80 backup;
# 负载均衡算法
# least_conn; # 最少连接
# ip_hash; # IP哈希
}
server {
listen 80;
server_name yourdomain.com;
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;
}
}
每个后端Nginx服务器需要配置相同的应用服务。
在主备服务器上安装:
# Ubuntu/Debian
sudo apt install keepalived
# CentOS/RHEL
sudo yum install 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 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
}
/etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
}
sudo systemctl start keepalived
sudo systemctl enable keepalived
在负载均衡配置中添加健康检查:
upstream backend {
server 192.168.1.101:80 max_fails=3 fail_timeout=30s;
server 192.168.1.102:80 max_fails=3 fail_timeout=30s;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
对于需要会话保持的应用:
upstream backend {
ip_hash;
server 192.168.1.101:80;
server 192.168.1.102:80;
}
使用Nginx Plus或OpenResty实现动态配置更新:
# OpenResty示例
location /upstreams {
content_by_lua_block {
local upstream = require "ngx.upstream"
local servers = upstream.get_servers("backend")
ngx.say("当前后端服务器: ", cjson.encode(servers))
}
}
监控工具:
日志分析:
性能调优:
worker_processes auto;
worker_connections 10240;
multi_accept on;
502 Bad Gateway:
nginx
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
负载不均衡:
Keepalived VIP切换失败:
通过以上配置和管理方法,您可以构建一个稳定、高效的Nginx集群环境。