Я провел много исследований и экспериментов по этому поводу, и я действительно наткнулся на стену:
Я пытаюсь настроить HAProxy в качестве обратного прокси для среды с высокой доступностью. Весь трафик, входящий в эту среду и исходящий из нее, зашифрован с помощью SSL, поэтому исходный дизайн заключался в том, чтобы HAProxy выполнял завершение SSL и передавал трафик в анклав в открытом виде, а затем транслировал обратно в другую сторону. Пока все хорошо, есть много отличной документации по этому поводу.
Проблема заключается в следующем: объем трафика слишком велик для того, чтобы один оконечный модуль HAProxy с завершением SSL мог обработать, что требует наличия более одного оконечного обратного прокси-сервера SSL.
Хорошо, я внимательно изучил этот вопрос и нашел много статей, которые, казалось, вели в правильном направлении, но всегда заканчивались 1 основным HAProxy и 1 резервной копией (например, все решения для проверки пульса и поддержки активности, такие как так как Вот и Вот) или вообще игнорировать завершение SSL и поговорить с вашими балансировщиками нагрузки о циклическом переходе DNS.
Итак, я думаю, что я действительно искал, так это возможность более чем одного оконечного устройства haproxy ssl для одновременного разделения нагрузки. Есть ли способ сделать это за пределами кругового перебора DNS?
Думаю, я думал, что есть способ, которым они могут использовать один и тот же виртуальный IP-адрес и разделять трафик между ними одновременно, все как в кластере. Если один из боксов выходит из строя, то аварийное переключение можно решить с помощью вышеупомянутого метода keepalived или чего-то еще. Кажется, это не обычный вариант использования ... возможно ли это вообще?
(Конечно, существует проблема, как совместно использовать SSL-сеансы между процессами HAProxy, но если это невозможно, повторное создание нового сеанса время от времени не является убийственным в этом случае.)
Заранее спасибо!
Два экземпляра haproxy могут разделять нагрузку, используя 2 виртуальных IP-адреса, каждый из которых является главным для одного из них. Циклический DNS примерно балансирует между двумя виртуальными IP-адресами (и, следовательно, между двумя экземплярами haproxy). Этот метод также работает с SSL. Одна из причин дважды подумать об этой настройке «активный-активный»: если один экземпляр не может справиться только с общим трафиком, он будет перегружен, если любой из экземпляров выйдет из строя. По сути, это может быть решено только за счет наличия резервной «потраченной впустую» емкости или временного снижения производительности.
В качестве альтернативы вы можете установить балансировку haproxy в режиме TCP перед вашими завершающими прокси SSL. Один сеанс TCP будет привязан к бэкэнду, поэтому вам не нужно слишком беспокоиться о повторном согласовании.