У меня очень особый вариант использования, и мне интересно, нет ли лучшего решения.
Вариант использования:
Несколько пользователей должны иметь возможность одновременного доступа к одному из примерно 1000 целевых экземпляров (от C1 до C1000), поступающих из экземпляра Nginx (A).
К сожалению, каждый из 100 целевых экземпляров должен быть расположен за отдельным экземпляром Nginx (от B1 до B10) в качестве обратного прокси-сервера.
Проблема:
Если несколько пользователей параллельно переходят от своего соответствующего клиента к A, а оттуда — к одному из экземпляров B Nginx, а оттуда — к одному из базовых целевых экземпляров C, возникает вопрос, как обеспечить согласованность сеансов каждого отдельного сеанса. . Кроме того, целевые экземпляры C должны иметь возможность устанавливать файлы cookie сеанса на соответствующем клиенте, который приходит к этому целевому экземпляру C через экземпляр A-Nginx, а оттуда — к соответствующему экземпляру B-Nginx.
Мое решение:
Каждый пользователь, который вызывает A, получает отдельный порт. Соединения между A и отдельными экземплярами B выполняются через отдельные порты, например. от A до B1 10000, от A до B2 11000 и т. д., от A до B10 20000. Соединения от экземпляров B к целевым экземплярам C также поддерживаются на выделенных портах, например. подключение B1 к C0001 через порт 10001, подключение B1 к C0002 через порт 10002 и т. д..
Я ненавижу эту конструкцию, но она работает. Вопрос - что я упускаю. Я не могу себе представить, что нет более элегантного способа.
У кого-нибудь есть хорошая идея, как решить проблему более элегантным способом? Может как-то с сессионными куками?
С уважением,
Д.