Назад | Перейти на главную страницу

Стек автомасштабирования AWS для нескольких серверов

У меня есть стек из 2 экземпляров AWS, на которых работают 3 сервера в цепочке:

Эти серверы разделены, поскольку я ожидаю, что сервер Apache будет связан с процессором, а другой сервер - с привязкой к памяти.

Теперь я хочу использовать автоматическое масштабирование для сокращения затрат и сокращения затрат. Общая файловая система EFS будет содержать файлы веб-сайта, а также конфигурацию, как предлагается здесь. https://serverfault.com/a/933566/81774 Конфигурация сервера уже управляется с помощью Ansible.

В настоящее время я склоняюсь к использованию балансировщика сетевой нагрузки, чтобы исключить необходимость сопоставлять 25 сертификатов SSL каждый с балансировщиком нагрузки.

Я не могу найти задокументированный способ запуска нескольких серверов в рамках автоматического масштабирования, так что мой стек из 2 серверов воссоздается при масштабировании или в случае сбоя.

если нет такого пути, мне лучше:

a) Объединение двух экземпляров в один с риском конкуренции за память со стороны Varnish и PHP

или

б) Создание фиксированного количества серверов SSL / Varnish, которые не масштабируются автоматически, а масштабируются только серверы Apache.

В AWS нет возможности настроить AutoScaling Group (ASG) на два разных сервера одновременно. Для этого вам нужно будет создать две разные ASG, которые будут масштабироваться независимо друг от друга (две ASG могут быть основаны на одном и том же наборе сигналов тревоги, поэтому теоретически они будут масштабироваться в одно и то же время).

Одним из больших преимуществ хранения всего в одном экземпляре является то, что вам, скорее всего, потребуются два балансировщика нагрузки, если вы этого не сделаете (один интерфейсный модуль будет обращаться к экземплярам Apache ASG, тогда эти экземпляры будут запрашивать внутренний балансировщик нагрузки, чтобы добраться до второй набор экземпляров ASG). Однако, как вы сказали, в идеале приложения должны быть отдельными и отдельными экземплярами, чтобы избежать конфликтов ресурсов.

Для типа балансировщика нагрузки: балансировщики сетевой нагрузки (NLB) позволят вам избежать добавления к нему сертификатов, поскольку вы можете настроить на нем прослушиватель TCP и подключить клиента напрямую к экземплярам серверной части с настроенными там сертификатами. Однако я бы порекомендовал добавить сертификаты в балансировщик нагрузки (сейчас это поддерживает NLB, но вы также можете использовать балансировщик нагрузки приложений (ALB)). Таким образом, вы можете расшифровать SSL на ALB / NLB и не беспокоиться о запуске NGINX на экземплярах (если это все, что он делал), имея соединение с экземпляром через HTTP. https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html

Существует ограничение в 25 сертификатов на балансировщик нагрузки, поэтому, если вы планируете добавить больше, вы можете изучить использование SNI (возможность разместить несколько доменных имен в одном сертификате) https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html

Кроме того, AWS предоставит вам бесплатные сертификаты, в которых они автоматически обрабатывают продление, если вы используете сертификат балансировщика нагрузки через службу ACM (Amazon Certificate Manager).