NGINX TCP 로드 밸런싱은 요청별로 무작위로 수행되어야 하는 경우 IP 고정입니다.

NGINX TCP 로드 밸런싱은 요청별로 무작위로 수행되어야 하는 경우 IP 고정입니다.

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(기본적으로 영구 연결이 비활성화됨)을 얻을 수 있습니다.

관련 정보