背景知识
内容来源自:https://blog.csdn.net/crazymakercircle/article/details/124009218
Nginx的upstream目前支持以下几种方式的分配:
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
举例
http {
upstream www.test1.com {
ip_hash;
server 172.16.125.76:8066 weight=10;
server 172.16.125.76:8077 down;
server 172.16.0.18:8066 max_fails=3 fail_timeout=30s;
server 172.16.0.18:8077 backup;
}
}
案例分析
已知:
- 预计部署两个ws服务器,一个在192.168.0.10:8054,192.168.0.11:8054
- 对外使用wss://www.test.com访问ws
- 使用Nginx做负载均衡,用轮询模式
nginx的配置方式:
http {
upstream test_com {
server 192.168.0.10:8054;
server 192.168.0.11:8054;
}
server {
listen 443;
server_name www.test.com;
location /{
proxy_pass http://test_com;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
keepalive_timeout 120s; #客户端链接超时时间。为0的时候禁用长连接。
#在一个长连接上可以服务的最大请求数目。
keepalive_requests 10000; #当达到最大请求数目且所有已有请求结束后,连接被关闭。默认值为100
}
}
关于反向代理的配置:
https://blog.51cto.com/lookingdream/2487955