nginx 负载均衡
负载均衡
负载
名称 | 说明 |
---|---|
轮询 | 默认方式 |
weight | 权重方式 |
ip_hash | 依据ip分配方式 |
least_conn | 最少连接方式 |
fair(第三方) | 响应时间方式 |
url_hash(第三方) | 依据URL分配方式 |
策略
方法 | 作用 |
---|---|
fail_timeout | 与max_fails结合使用。 |
max_fails | 设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了。 |
fail_time | 服务器会被认为停机的时间长度,默认为10s。 |
backup | 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。 |
down | 标记服务器永久停机了。 |
配置
默认轮询
text
http{
upstream httpd{
# 默认轮询
server 192.168.152.101;
server 192.168.152.102;
}
server {
listen 80;
location / {
proxy_pass http://httpd;
}
}
}
权重
text
http{
upstream httpd{
# 按照权重分配链接
server 192.168.152.101 weight=10;
server 192.168.152.102 weight=20;
}
server {
listen 80;
location / {
proxy_pass http://httpd;
}
}
}
ip_hash
text
http{
upstream httpd{
ip_hash; #保证每个访客固定访问一个后端服务器
server 192.168.152.101 weight=10;
server 192.168.152.102 max_fails=3 fail_timeout=20s;
server 192.168.152.103 down; #下线
server 192.168.152.104 backup; #主节点宕机时启用
}
server {
listen 80;
location / {
proxy_pass http://httpd;
}
}
}
最少链接
bash
http{
upstream httpd{
least_conn; #把请求转发给连接数较少的后端服务器
server 192.168.152.101 weight=10;
server 192.168.152.102 max_fails=3 fail_timeout=20s;
server 192.168.152.103 down; #下线
server 192.168.152.104 backup; #主节点宕机时启用
}
server {
listen 80;
location / {
proxy_pass http://httpd;
}
}
}
第三方 (fair|url_hash)
同理第三方模块需要提前安装 https://github.com/gnosek/nginx-upstream-fair