В AWS мы хотели бы использовать ELB для балансировки нагрузки экземпляров EC2, на которых размещены несколько приложений. В идеале мы хотели бы пройти проверку работоспособности для применения.
Однако AWS Elastic Load Balancers в настоящее время позволяет проверять только одно местоположение для проверки работоспособности.
Каков наилучший способ реализации проверок работоспособности с помощью ELB, который учитывает состояние нескольких приложений, развернутых на каждом экземпляре EC2?
amazon-web-services
amazon-elb
healthcheck
Андрей Фирбинтеану
источник
источник
Ответы:
Вот два способа решить это;
Первый вариант - добавить еще одну проверку работоспособности на хосте, которая проверяет работоспособность и возвращает HTTP 200 в ELB, если логика говорит, что вы хотите, чтобы хост работал. Логика там, конечно, зависит от вас. Недостатком здесь будет то, что если приложение 2 будет успешно развернуто на некоторых хостах, все хосты будут по-прежнему «исправными» и получающими трафик.
Другой вариант - использовать дополнительный ELB для каждого приложения. Вы можете указать несколько ELB на один и тот же бэкэнд-экземпляр EC2, и затраты на это довольно незначительны. Таким образом, вы можете проверять работоспособность каждого приложения и отбрасывать узлы с проблемами на уровне приложений, а не подход «все или ничего».
Изменить: Обратите внимание, что это более старый ответ и относится к ELB, а не ALB. ALB изначально поддерживает отдельные цели на одном хосте.
источник
Использование одного ELB для каждого приложения - вот путь сюда.
Во-первых, они вам могут понадобиться в любом случае, если каждое приложение находится в своем домене и вам требуется поддержка SSL. В настоящее время в ELB Amazon разрешается использовать только один сертификат SSL для каждого домена, для чего требуется отдельный ELB для каждого домена с поддержкой SSL. (Сертификаты Wildcard SSL являются исключением).
Проблема в том, что проверки работоспособности ELB в настоящее время не могут быть направлены на конкретный виртуальный домен, размещенный в экземпляре EC2. (Заголовок "Host:" не отправляется). Проверка работоспособности ELB всегда идет в домен по умолчанию, как если бы вы загрузили IP-адрес для экземпляра EC2 в своем браузере. Таким образом, для получения проверок работоспособности в домене по умолчанию требуется некоторое количество клея, а затем ответьте со статусом работоспособности определенного приложения.
Вот рабочий пример конфигурации, которая может быть добавлена в
server
директиву Nginx . Он будет установлен на каждом из экземпляров EC2 с балансировкой нагрузки.В настройке «Проверка работоспособности» ELB для «first-application.com» вы должны выбрать «HTTP» и порт 80 и ввести путь, например:
/health-check/first-application.com
Если на узле работает указанная выше конфигурация Nginx, запрос будет получен в домене по умолчанию и прокси-ответ от конфигурации Nginx на том же хосте для https://first-application.com/api/v1/status
При таком подходе нет конфигурации для каждого приложения в Nginx. Поскольку у каждого приложения есть уникальное доменное имя, вам просто нужно убедиться, что вы настроили ELB для каждого приложения соответствующим образом.
источник
11 августа 2016 года Amazon представила балансировщики нагрузки приложений . Они позволяют указать несколько целевых групп, каждая из которых имеет свой тип проверки работоспособности. Так что теперь это возможно с помощью единого балансировщика нагрузки!
источник