Для начала необходимо организовать виртуальное частное облако (Virtual
Private Cloud, VPC [6]), где будут располагаться внутренние сервисы.
Необходимо организовать разные подсети для различных задач: публичные и
приватные. В публичных сетях будут располагаться ресурсы, к которым
необходим доступ из интернета, такие, как бастион сервер и web-server Nginx. В
приватных сетях будут располагаться сервисы решения HAPICloud и те сервисы,
которые могут иметь связь с внешним миром через NAT и прокси-серверы.
Как видно, мы хотим использовать балансировщик в роли единой точки
входа, который будет распределять трафик HTTPS между NGINX серверами,
которые будут обеспечивать связь с сервисами HAPI, которые развёрнуты в ECS
[7] кластере. Главное требование к этому узлу состоит в устойчивости к
нагрузкам и отказам и в простоте горизонтального масштабирования, поэтому
будут использованы Auto Scaling группы, которые увеличивают количество
инстансов при повышении нагрузки, а также поднимают новые инстансы, если
старые отказали по тем или иным причинам. Для хранения данных, которые
используют сервисы, HAPICloud используется Amazon Relational Database
Service (RDS) PostgreSQL версии 10.6 [26].
Автоматизацией этого этапа развёртывания будут проходить в 2 этапа:
вначале с помощью Packer [27] подготовим запускаемые образы для web-
сервера Nginx, где будем собирать приложение Nginx из исходного кода при
помощи bash скриптов вместе с кастомными модулями, которые необходимо
использовать во время эксплуатации. Также будет использоваться Ansible [18]
для конфигурации и настройки Nginx [13]сервера.
Затем разворачивание инфраструктуры будет происходить c помощью
Terraform [22]. С его помощью в декларативной форме будут созданы
• VPC
• Указаны дата-центры, где будет разворачиваться окружение
• Network Load Balancer для распределения нагрузки
• Подсети
• Шлюз во внешнюю сеть