Я пытаюсь найти лучшее решение для балансировки и сохранения устойчивости нашего приложения за HAProxy.
Вот наша базовая конфигурация: https://gist.github.com/endzyme/1804046b23c37beba520
После игры с опусканием и подъёмом участников, а также перезагрузкой haproxy (с -sf) я заметил, что appsession не эффективен на 100%, может показаться, что иногда это не всегда 'request-learn'
. Я также пытался добавить cookie JSESSION prefix
уравновесить в случае request-learn
не взял.
К сожалению, он будет представлять сценарии, в которых префикс будет перечислять svr2, но он был сбалансирован для другого сервера. Я предполагаю, что это потому, что таблица appsession сначала принимает, а затем придерживается этого, прежде чем использовать параметр cookie. Я не тестировал использование cookie в качестве вставляемой опции (не префикса для существующего файла cookie), но я думаю, что это даст аналогичные результаты.
У меня вопрос: Какой из них проверяется первый, appsession или cookie, и это сразу после чтения первого файла, или провал? Также в качестве продолжения - не рекомендуется ли использовать оба в одном бэкэнде?
Cookie, как я понимаю, требует меньше ресурсов памяти, не зависит от перезагрузки и имеет более высокую надежность сохранения. Я предполагаю, что Appsession требует меньше ресурсов процессора, поскольку он читает, а не пишет.
(Дополнительный вопрос: есть ли способ проверить карту таблицы приложений / файлов cookie? Socket> show table не показывает ничего, кроме таблиц-стикеров)
Спасибо заранее,
-Ник
После встречи с ребятами из Exceliance (которые помогают в разработке HAProxy) у меня появилась дополнительная информация.
Не получил четкого ответа, что проверяется в первую очередь, но было ясно, что вы должны либо использовать файл cookie, либо использовать таблицы стикеров. У обоих из них есть методы, которые сохраняются при перезагрузке HAProxy. Они также сообщают нам, что приложение помечено для депригации и использования файлов cookie или таблиц с файлами cookie. Appsession использует хэш-карту в памяти, которая не сохраняется при перезагрузках и имеет некоторые механизмы обнаружения, но ненадежна.
Exceliance также отметила, что при использовании cookie и appsession ресурсов не будет слишком много. Невозможно проверить карту привязки к хешу сервера. Более эффективно использовать cookie и проверять ведение журнала или сами файлы cookie, или если вы используете stick-tables - socket> show tables будут работать для проверки сохраняемости.