Ich habe eine Anwendung, die auf zwei verschiedenen AWS-Instanzen ausgeführt wird, und ich möchte "Sticky" - oder "Persistent" -Sitzungen basierend auf IP aktivieren, damit ich die Web-Socket-Technologien auf bestimmte Weise nutzen kann.
Ich habe zwei verschiedene Setups, die beide ip_hash
zum Aktivieren dieser Sticky-Sessions verwenden.
Beim ersten Setup werden die App-Prozesse auf derselben Instanz wie die Nginx-Konfiguration ausgeführt. Dies funktioniert , die Sitzungen sind erwartungsgemäß persistent.
upstream my_app {
ip_hash;
# local servers
server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300;
server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300;
keepalive 8;
}
Im zweiten Setup zeige ich auf externe Instanzen und versuche, den gleichen Effekt zu erzielen. Diese Einrichtung funktioniert nicht . Mit anderen Worten, die Sitzungen werden immer noch lastausgeglichen.
upstream my_app {
ip_hash;
# external servers
server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
keepalive 8;
}
Benutze ich ip_hash
richtig? Wie kann ich "klebrige" IP-basierte Sitzungen für externe Server aktivieren?