Nginx是一个高性能的HTTP和反向代理服务器,可以非常方便地实现负载均衡功能。下面是在CentOS系统上使用Nginx配置负载均衡的详细步骤:
首先确保已安装Nginx:
sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
编辑Nginx配置文件(通常在/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
):
http {
upstream backend {
# 定义负载均衡服务器组
server backend1.example.com weight=3; # weight表示权重
server backend2.example.com;
server backend3.example.com;
# 负载均衡方法,默认为轮询(round-robin)
# least_conn; # 最少连接
# ip_hash; # 基于客户端IP的哈希
}
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;
}
}
}
Nginx支持多种负载均衡算法:
weight
参数指定权重
nginx
server backend1.example.com weight=5;
server backend2.example.com weight=1;
nginx
least_conn;
nginx
ip_hash;
nginx
hash $request_uri consistent;
Nginx可以配置被动健康检查:
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=3 fail_timeout=30s;
}
max_fails
:失败次数阈值fail_timeout
:服务器被标记为不可用的时间upstream backend {
# 保持连接池大小
keepalive 32;
# 服务器状态参数
server backend1.example.com backup; # 备用服务器
server backend2.example.com down; # 标记为永久不可用
}
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
可以使用nginx -T
查看完整配置,或通过nginx -s reload
重新加载配置而不中断服务。
ip_hash
或应用层会话共享keepalive
参数通过以上配置,Nginx就能将客户端请求分发到多个后端服务器,实现负载均衡功能。