Am un caz de utilizare foarte special - și mă întreb dacă nu există o soluție mai bună.
Utilizare caz:
Mai mulți utilizatori ar trebui să poată ajunge la una dintre cele aproximativ 1000 de instanțe țintă (C1 până la C1000) care provin dintr-o instanță Nginx (A) în același timp.
Din păcate, fiecare 100 de instanțe țintă trebuie să fie situate în spatele unei instanțe Nginx separate (de la B1 la B10) ca proxy invers.
Problemă:
Dacă mai mulți utilizatori sar în paralel de la clientul lor respectiv la A și de acolo apoi la una dintre instanțele B Nginx și de acolo apoi la una dintre instanțele țintă C subiacente, se pune întrebarea cum să se asigure consistența sesiunii a fiecărei sesiuni individuale. . În plus, instanțele țintă C trebuie să poată seta cookie-uri de sesiune pe clientul respectiv care vine la această instanță țintă C prin instanța A-Nginx, de acolo instanța respectivă B-Nginx.
Solutia mea:
Fiecare utilizator care apelează A primește un port separat. Conexiunile dintre A și instanțele B individuale rulează prin porturi separate, de ex. de la A la B1 10000, A la B2 11000 etc., A la B10 20000. Conexiunile de la instanțele B la instanțele țintă C sunt menținute și pe porturi dedicate, de ex. conexiunea B1 la C0001 pe portul 10001, conexiunea B1 la C0002 pe portul 10002 etc.
Urăsc această construcție, dar funcționează. Întrebarea este - ce îmi lipsește. Nu-mi pot imagina că nu există un mod mai elegant.
Are cineva o idee bună cum să rezolve problema într-un mod mai elegant? Poate cumva cu cookie-uri de sesiune?
Salutări calde,
D.