Nginx负载均衡搭建与权重策略配置
Nginx负载均衡搭建与权重策略配置一、Nginx负载均衡基础搭建
1. 安装Nginx
确保已安装Nginx,如果未安装可以通过以下命令安装(以Ubuntu为例):
sudo apt update
sudo apt install nginx
2. 配置负载均衡
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default):
http {
upstream backend_servers {
# 默认轮询策略
server 192.168.1.101:80;
server 192.168.1.102:80;
server 192.168.1.103:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend_servers;
# 其他代理设置...
}
}
}
二、权重策略配置
Nginx支持为后端服务器分配不同的权重,权重越高的服务器将被分配更多的请求。
1. 基本权重配置
upstream backend_servers {
server 192.168.1.101 weight=3;# 权重3
server 192.168.1.102 weight=2;# 权重2
server 192.168.1.103 weight=1;# 权重1
}
权重比例解释:
[*]总权重 = 3 + 2 + 1 = 6
[*]101服务器将获得约50%(3/6)的请求
[*]102服务器将获得约33%(2/6)的请求
[*]103服务器将获得约17%(1/6)的请求
2. 其他负载均衡策略
除了默认的轮询和权重策略,Nginx还支持:
ip_hash
基于客户端IP的会话保持:
upstream backend_servers {
ip_hash;
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
}
least_conn
将请求分配给当前连接数最少的服务器:
upstream backend_servers {
least_conn;
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
}
三、高级配置选项
1. 服务器状态标记
upstream backend_servers {
server 192.168.1.101 weight=5 max_fails=3 fail_timeout=30s;
server 192.168.1.102 weight=3 backup;# 备份服务器
server 192.168.1.103 down;# 标记为不可用
}
[*]max_fails:允许的失败次数
[*]fail_timeout:失败超时时间
[*]backup:标记为备份服务器,只有当其他服务器不可用时才使用
[*]down:标记服务器为不可用
2. 健康检查
Nginx本身不提供主动健康检查,但可以通过以下方式实现:
[*]使用商业版的Nginx Plus
[*]使用第三方模块如nginx_upstream_check_module
[*]结合外部监控工具定期检查服务器状态
四、完整配置示例
http {
upstream backend_servers {
# 权重配置 + 健康检查参数
server 192.168.1.101 weight=4 max_fails=2 fail_timeout=15s;
server 192.168.1.102 weight=3 max_fails=2 fail_timeout=15s;
server 192.168.1.103 weight=1 max_fails=2 fail_timeout=15s backup;
# 可以混合使用不同策略(但通常不推荐)
# least_conn;# 如果要使用least_conn,需要去掉权重或确保策略一致
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
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_connect_timeout 5s;
proxy_read_timeout 30s;
}
}
}
五、配置验证与重载
[*]测试配置是否正确:
sudo nginx -t
[*]重载Nginx配置(不中断服务):
sudo nginx -s reload
六、监控与调优
[*]查看Nginx状态(如果启用了stub_status模块):
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
[*]访问http://your-server/nginx_status查看请求分布情况
[*]根据实际流量调整权重比例
通过合理配置权重策略,可以有效地分配后端服务器负载,提高系统整体性能和可靠性。
页:
[1]