Серверы Nginx не знают друг друга с их собственными таблицами ip_hash. Таким образом, конкретный сервер будет направлять трафик на бэкэнд на основе своего собственного пула ip_hash. Любая согласованность между интерфейсными серверами Nginx могла бы быть чисто случайной.
На практике это может быть менее серьезной проблемой, потому что DNS клиента вряд ли изменится во время их сеанса. В результате они попадут на один и тот же интерфейсный сервер и будут перенаправлены на один и тот же внутренний сервер.
Другой подход к этому - использовать что-то вроде HAProxy, который может балансировать по ряду показателей, например, как параметр URL . Ваше приложение может установить параметр, чтобы гарантировать, что клиент будет перенаправлен на тот же сервер. Конечно, предпочтительнее нормализовать данные через бэкэнд с помощью распределенного инструмента, но с устаревшими приложениями это может быть проблематично.
Согласно документации:
Ключ для хеш-функции - это сетевой адрес класса C или весь IPv6-адрес клиента.
Итак, теоретически это должно работать.
Другая проблема, которая может возникнуть, - это отказ одного из ваших бэкэндов. Nginx не дает никаких обещаний относительно того, к какому бэкэнду клиент обратится дальше.
Но да, HAProxy ftw.