
Tengo un servidor NGINX que se utiliza como equilibrador de carga TCP. El equilibrio de carga por turnos está predeterminado, por lo que mi expectativa es que para una IP de cliente determinada, cada vez que lleguen al punto final obtendrán un servidor backend ascendente diferente para cada solicitud. Pero lo que sucede es que siempre obtienen el mismo servidor ascendente y cada vezdistintoLa IP del cliente está obteniendo un servidor ascendente distinto. Esto es malo porque mis clientes generan mucho tráfico y está provocando puntos de acceso porque un cliente determinado solo puede utilizar un servidor ascendente. Parece rotar lentamente la IP de un cliente determinado entre los servidores ascendentes; Nuevamente quiero que asigne aleatoriamente cada solicitud a un flujo ascendente por solicitud.
¿Cómo puedo hacer que NGINX asigne aleatoriamente el servidor ascendente paracada solicitud? Probé la palabra clave aleatoria y no tuvo ningún efecto. Cualquier ayuda sería muy apreciada.
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;
}
}
Respuesta1
Porque deberías dejar de usar nginx como balanceador de carga TCPpara otros servidores weby cámbielo a un proxy inverso HTTP completo, que es. De esa manera, obtendrá el RR por solicitud que desea (con las conexiones persistentes deshabilitadas de forma predeterminada), en lugar de la distribución de sesiones TCP.