Am un server NGINX folosit ca echilibrator de încărcare TCP. Este implicit la echilibrarea încărcăturii round-robin, așa că așteptarea mea este ca pentru un anumit IP client, de fiecare dată când atinge punctul final, vor primi un server backend în amonte diferit pentru fiecare cerere. Dar, în schimb, ceea ce se întâmplă este că primesc același server în amonte de fiecare dată și fiecare distinct IP-ul clientului primește un server distinct în amonte. Acest lucru este rău pentru că clienții mei generează mult trafic și provoacă hotspot-uri, deoarece orice client poate utiliza doar un server din amonte. Se pare că rotește încet un anumit IP client pe serverele din amonte; din nou, vreau să atribuie aleatoriu fiecare cerere la o cerere în amonte.
Cum pot face NGINX să aloce aleatoriu serverul upstream pentru fiecare cerere? Am încercat cuvântul cheie aleatoriu și nu a avut niciun efect. Orice ajutor ar fi foarte apreciat.
utilizator nginx;
worker_proceses auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Încărcați module dinamice. Vedeți /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
evenimente {
conexiuni_muncitor 1024;
}
curent {
în amonte 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;
}
în amonte 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 {
asculta 80;
proxy_pass api_backend_http;
dimensiunea_buffer_proxy 16k;
proxy_connect_timeout 1s;
}
Server {
asculta 443;
proxy_pass api_backend_https;
dimensiunea_buffer_proxy 16k;
proxy_connect_timeout 1s;
}
}