Нам нужны более продвинутые функциональные возможности, чем обеспечивает ELB (в основном проверка L7), но не совсем очевидно, как справиться с такими вещами, как сердцебиение и высокая доступность с чем-то вроде haproxy с использованием EC2. Существует высокая вероятность того, что нам потребуется 3 или более узлов haproxy в кластере, поэтому простое сердцебиение между двумя узлами не сработает.
Похоже, что наличие слоя «heartbeat'd» перед узлами haproxy было бы правильным путем, возможно, с использованием IPVS, но обработкой изменений конфигурации при изменении кластера EC2 (либо путем преднамеренных изменений, таких как расширение, либо непреднамеренных, например, потеря Узел EC2) кажется нетривиальным.
Предпочтительно, чтобы решение охватывало по меньшей мере две зоны доступности.
В ответ на вопрос: Нет, сессии не липкие. И да, нам понадобится SSL, но теоретически это может быть полностью обработано другой установкой - мы можем направлять трафик SSL в другое место, чем трафик не-SSL.
источник
Ответы:
Хорошо, я никогда не создавал решение для балансировки нагрузки AWS с трафиком на уровнях SmugMug, а просто подумав о теории и услугах AWS, пришла пара идей.
В первоначальном вопросе не хватает нескольких вещей, которые имеют тенденцию влиять на дизайн распределения нагрузки:
Я отвечаю с точки зрения того, как обеспечить высокий уровень доступности слоя балансировки нагрузки . Сохранение серверов приложений HA выполняется с помощью проверок работоспособности, встроенных в ваши балансировщики нагрузки L7.
Хорошо, пара идей, которые должны работать:
1) «Путь AWS»:
Преимущества / идея: Балансировщики нагрузки L7 могут быть довольно простыми AMI EC2, все они клонированы из одного AMI и используют одну и ту же конфигурацию. Таким образом, инструменты Amazon могут удовлетворить все потребности HA: ELB контролирует балансировщики нагрузки L7. Если L7 LB умирает или перестает отвечать, ELB и Cloudwatch вместе порождают новый экземпляр автоматически и переносят его в пул ELB.
2) «DNS круговой прием с отслеживанием пути:»
Преимущества / идея: Совместимые пользовательские агенты должны автоматически переключаться на другой IP-адрес, если он перестает отвечать на запросы. Таким образом, в случае сбоя это может повлиять только на 1/3 ваших пользователей, и большинство из них не должны ничего замечать, так как их UA молча переключается на другой IP. А ваш внешний блок мониторинга заметит, что EIP не отвечает, и исправит ситуацию в течение пары минут.
3) DNS RR для пар серверов HA:
По сути, это предложение самого Дона о простом биении между парой серверов, но упрощенном для нескольких IP-адресов.
Преимущества / идея. В полностью виртуализированной среде AWS на самом деле не так просто рассуждать о сервисах L4 и режимах отработки отказа. Упрощая одну пару идентичных серверов, сохраняя всего 1 IP-адрес, становится проще рассуждать и тестировать.
Вывод: опять же, я на самом деле не пробовал ничего этого в производстве. По моему интуитивному ощущению, вариант с ELB в режиме L4 и саморегулируемые экземпляры EC2 в качестве L7 LB, кажется, наиболее соответствуют духу платформы AWS, и где Amazon, скорее всего, будет инвестировать и расширяться в дальнейшем. Это, вероятно, будет моим первым выбором.
источник
Если вы не выполняете липкие сеансы или используете стиль tomcat / apache (добавьте идентификатор узла к sessionid, а не сохраняйте состояние в LB), то я бы использовал ELB перед группой гапрокси. В ELB встроена проверка работоспособности, так что вы можете контролировать хакрокси и выводить любые из них из пула. Гораздо меньше для настройки, чем отказ от сердцебиения.
Что касается распространения изменений, у меня нет отличного ответа. Puppet отлично подходит для начальной конфигурации и внесения изменений, но для добавления / удаления узлов вам требуется более быстрый отклик, чем 30-минутный интервал опроса.
источник
Я сам этим не пользовался, но я видел, как многие люди упоминали, что использовали марионетку для решения подобных проблем в EC2.
источник