
TCP 로드 밸런서로 사용되는 NGINX 서버가 있습니다. 이는 라운드 로빈 로드 밸런싱이 기본값이므로 지정된 클라이언트 IP에 대해 엔드포인트에 도달할 때마다 각 요청에 대해 다른 백엔드 업스트림 서버를 얻게 될 것으로 예상됩니다. 하지만 대신에 일어나고 있는 일은 그들이 매번 동일한 업스트림 서버를 얻는다는 것입니다.별개의클라이언트 IP가 고유한 업스트림 서버를 얻고 있습니다. 내 클라이언트가 많은 트래픽을 생성하고 특정 클라이언트가 하나의 업스트림 서버만 사용할 수 있기 때문에 핫스팟이 발생하기 때문에 이는 좋지 않습니다. 업스트림 서버에서 특정 클라이언트 IP를 천천히 회전시키는 것 같습니다. 다시 한 번 각 요청을 요청별로 업스트림에 무작위로 할당하고 싶습니다.
NGINX가 업스트림 서버를 무작위로 할당하도록 하려면 어떻게 해야 합니까?모든 요청? 무작위 키워드를 사용해 보았지만 아무런 효과가 없었습니다. 어떤 도움이라도 대단히 감사하겠습니다.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
stream {
upstream api_backend_http {
server node1.mydomain.com:80;
server node2.mydomain.com:80;
server node6.mydomain.com:80;
server node14.mydomain.com:80;
server node18.mydomain.com:80;
server node19.mydomain.com:80;
server node21.mydomain.com:80;
server node22.mydomain.com:80;
server node24.mydomain.com:80;
}
upstream api_backend_https {
server node1.mydomain.com:443;
server node2.mydomain.com:443;
server node6.mydomain.com:443;
server node14.mydomain.com:443;
server node18.mydomain.com:443;
server node19.mydomain.com:443;
server node21.mydomain.com:443;
server node22.mydomain.com:443;
server node24.mydomain.com:443;
}
server {
listen 80;
proxy_pass api_backend_http;
proxy_buffer_size 16k;
proxy_connect_timeout 1s;
}
server {
listen 443;
proxy_pass api_backend_https;
proxy_buffer_size 16k;
proxy_connect_timeout 1s;
}
}
답변1
nginx를 TCP 로드 밸런서로 사용하는 것을 중단해야 하기 때문입니다.다른 웹 서버의 경우완전한 HTTP 역방향 프록시로 전환합니다. 이렇게 하면 TCP 세션 배포 대신 원하는 요청별 RR(기본적으로 영구 연결이 비활성화됨)을 얻을 수 있습니다.