upstream test_server {
ip_hash;
server unix:/tmp/test_0.sock max_fails=3 fail_timeout=10s;
server unix:/tmp/test_1.sock max_fails=3 fail_timeout=10s;
server unix:/tmp/test_2.sock max_fails=3 fail_timeout=10s;
}
server {
listen 80;
server_name 192.168.1.100;
client_max_body_size 4G;
location / {
proxy_redirect off;
proxy_connect_timeout 75s;
proxy_read_timeout 300s;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://test_server;
}
}
所有访问请求值落在了一个 sock 上面,导致连接数多了,就挂了,需要重启服务。 怎么解决这个问题?
1
vus520 2017-08-02 14:35:23 +08:00
业务都是本机,有必要用 ip_hash 吗?
|
2
coolyujiyu 2017-08-02 18:30:35 +08:00
如果你能解决 session 的问题,那就不用 ip_hash 了
按你的情况,你应该选择轮询 轮询(默认算法)——每个请求会依次分配给后端不同的应用程序服务器,不理会后端服务器的实际压力 加权轮询——权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况 IP HASH ——当同 IP 进行重复访问时会被指定到上次访问到的服务器,可以解决动态网站 SESSION 共享问题 |