Я хотел бы попросить помощи в достижении постоянства уровня приложения на балансировщике нагрузки HAProxy. В нашей настройке есть один балансировщик нагрузки, на котором запущен HAProxy, и несколько бэкэндов, на которых запущены Shiny Servers с идентичным приложением R Shiny. (Все серверные ВМ подключены к одной и той же базе данных.) Для достижения постоянства я использую файлы cookie, вставленные балансировщиком нагрузки, как описано в этом сообщении: https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/ (как в части «Настройка файлов cookie сеанса с помощью балансировщика нагрузки»)
После того, как файлы cookie введены, браузер всегда перенаправляется на тот же сервер, пока файлы cookie не будут очищены. Это не обязательное поведение, так как оно слишком «липкое» - все последовательные сеансы перенаправляются на основе файла cookie. Балансировщик нагрузки должен использовать алгоритм балансировки нагрузки для каждого нового сеанса, однако я не могу следить за сообщением в части «Использование cookie сеанса приложения для сохранения», поскольку приложения Shiny их не используют. Я застрял на этом этапе и был бы благодарен за любое понимание или обмен опытом.
Я заметил, что в URI HTTP-запросов есть идентификатор сеанса, например:
Request URI Path: /[our_shiny_app]/session/e75cc0c2efff0ac7650eef1616a1f7eb/dataobj/clicked_features_tab
Может ли это помочь? Или я должен использовать веб-сокеты?
Буду признателен за любые предложения.
Когда вы говорите: «Балансировщик нагрузки должен использовать алгоритм балансировки нагрузки для каждого нового сеанса», вы должны указать балансировщику нагрузки, как узнавать о различных блестящих сеансах на основе того, что находится в ответе сервера. Я имею в виду, что в какой-то момент сервер отправит клиенту блестящий идентификатор сеанса (но вопрос в том, в какой именно части ответа?), И именно здесь HAProxy должен его выбрать и использовать.