1

Ich habe ein Problem mit dieser Konfiguration. Mein AWS ELB akzeptiert TCP-Verbindungen an Port 80 und leitet sie unter Verwendung des Proxy-Protokolls an eine nginx-Instanz weiter, die Port 8080 überwacht. Dieser Nginx-Knoten soll das ip_hash-Modul verwenden, um den Benutzer an einen bestimmten Knoten anzubinden.AWS ELB -> nginx -> socket.io node.js Sticky-Lastenausgleich

Das ist völlig in Ordnung zu arbeiten, aber nur 2 von den vier Knoten verwendet werden, statt Last unter allen von ihnen ausgeglichen zu sein, hier ist meine nginx Config

upstream socket_nodes { 
    ip_hash; 
    server a.server.com:2000; 
    server a.server.com:2001; 
    server a.server.com:2002; 
    server a.server.com:2003; 
} 

# Accept connections via the load balancer 
server { 
    listen 8080 proxy_protocol; 
    set_real_ip_from 0.0.0.0/32; 
    real_ip_header proxy_protocol; 
    charset utf-8; 
    location/{ 
     proxy_pass http://socket_nodes; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_set_header Host $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; 
    } 
} 

Antwort

0

Im Gegensatz zu „Round-Robin“ Ladeausgleich , ip_hash bedeutet, dass NGINX für eine bestimmte IP-Adresse immer an dieselbe Anwendungsinstanz weiterleitet.