Випадок використання :
Для покращення стійкості вам потрібно розгорнути сервер у двох зонах доступності (Availability Zones), використовуючи групу автоматичного масштабування (Auto Scaling Group) та навантажувальний балансувальник (Application Load Balancer). Для додаткової безпеки сервери повинні бути розгорнуті в приватних підмережах (Private Subnets). Сервери повинні отримувати запити через навантажувальний балансувальник. Сервери можуть підключатися до Інтернету тільки через NAT-шлюз (NAT Gateway). Для покращення стійкості потрібно розгорнути NAT-шлюз у обох зонах доступності.
Рішення :
- VPC має публічну підмережу (Public Subnet) та приватні підмережі (Private Subnets) у двох зонах доступності.
- Кожна публічна підмережа містить NAT-шлюз та вузол навантажувального балансувальника.
- Сервери працюють у приватній підмережі і запускаються та зупиняються за допомогою групи автоматичного масштабування (Auto Scaling Group), отримують трафік через навантажувальний балансувальник.
4.
Сервери підключатимуться до Інтернету через NAT-шлюз (NAT Gateway).
Отже, давайте почнемо будувати цей проект:
Крок-1 Перейдіть до вашої консолі AWS, введіть у рядок пошуку VPC і перейдіть до VPC, потім натисніть "Створити VPC" (Create VPC).
Тепер виберіть опцію "VPC та інше" (VPC and more), оскільки якщо вибрати лише VPC, вам доведеться все визначати вручну, наприклад, CIDR-блок та інші параметри.
Тепер дайте проекту ім'я, тут я даю "VPC-project", а за замовчуванням залишаємо CIDR-блок.
Тепер виберіть:
Кількість зон доступності (AZs): 2
Кількість публічних підмереж (Public Subnets): 2
Кількість приватних підмереж (Private Subnets): 2
NAT-шлюзи: 1 на кожну зону доступності (per AZ)
Точки доступу VPC (VPC Endpoints): Немає (None)
Інші налаштування залиште за замовчуванням.
І натисніть "Створити VPC" (Create VPC).
Якщо ви побачите повідомлення про успішне створення, ваша VPC була успішно створена. Натисніть на "Переглянути VPC" (View VPC), щоб побачити вашу VPC.
Тепер, щоб розгорнути нашу програму, знову перейдіть до рядка пошуку і введіть EC2.
Перейдіть до розділу "Групи автоматичного масштабування" (Auto Scaling Groups).
І натисніть "Створити групу автоматичного масштабування" (create auto scaling group).
Тепер натисніть "Створити шаблон запуску" (create a launch template).
Тепер дайте шаблону ім'я, я даю "aws-prod-example".
Тепер виберіть AMI або виберіть нещодавно запущене, оберіть Ubuntu AMI та виберіть t2.micro для типу інстансу.
Ви можете створити пару ключів (Key pair) або вибрати попередню, якщо вона є.
Тепер у налаштуваннях мережі (Network settings):
Підмережа (Subnet): залиште за замовчуванням.
Брандмауер (Firewall): “Створити групу безпеки” (Create security group).
Ім'я групи безпеки (Security group name): aws-prod-example #можете написати будь-що.
Опис (Description): Дозволити SSH для розробників (Allow ssh to developers) #можете написати будь-що.
VPC: виберіть ту, яку ми створили раніше.
Тепер у правилах вхідного трафіку групи безпеки (Inbound Security Group rules), натисніть на "Додати правило групи безпеки" (Add security group rule).
Додайте ці два правила вхідного трафіку, як показано на зображенні, а потім натисніть "Створити шаблон запуску" (Create launch Template).
Тепер поверніться на попередню сторінку до групи автоматичного масштабування (Auto Scaling Group) і введіть ім'я групи автоматичного масштабування “aws-prod-example” #можете написати будь-що.
У розділі шаблону запуску (Launch template), натисніть на іконку оновлення (refresh icon), і ви побачите назву вашого шаблону.
Виберіть цей шаблон. Після цього натисніть "Далі" (Next).
На наступній сторінці, в розділі мережі (Network), виберіть VPC, яку ми створили раніше.
Після цього, в розділі Availability zones & subnets, виберіть обидві приватні підмережі (private subnets), в яких ми хочемо розгорнути наші EC2 інстанси.
Тепер натисніть "Далі" (Next), залиште всі налаштування за замовчуванням і натисніть "Далі" знову.
На кроці-4 (Step-4), в полях Desired capacity: 2, Min Desired capacity: 1, Max: 4.
Для політики масштабування (scaling policy) залиште все за замовчуванням і натисніть "Далі" (Next).
Тепер на кроках 5 і 6 залиште все за замовчуванням і натисніть "Далі" (Next).
Тепер перегляньте налаштування вашої групи автоматичного масштабування (Auto scaling group) і натисніть “Створити групу автоматичного масштабування” (Create Auto scaling group).
Ваша група автоматичного масштабування готова.
Ви можете перевірити, зайшовши в інстанс, чи наша група автоматичного масштабування (Auto scaling group) запустила два сервери в двох різних регіонах.
Тепер частина з групою автоматичного масштабування (Auto scaling group) завершена.
Нам потрібен сервер-бастіон (bastion-host), який ми розгорнемо в публічній підмережі (public subnet), через який будемо отримувати доступ до серверів у приватних підмережах.
Для цього в розділі "Instance" натискаємо “launch Instance” та надаємо ім’я, наприклад, “bastion-host”, після чого вибираємо AMI для Ubuntu або будь-яку іншу.
Вибираємо тип інстанса: t2.micro / Key pair: вибираємо той самий ключ, який ми використовували для інших інстансів у приватних підмережах, оскільки нам потрібно отримати доступ до обох серверів через bastion-host.
Якщо вони використовують один і той самий ключ, доступ стає простішим.
Найважливіше, що потрібно зробити, це в налаштуваннях мережі натиснути "edit" і вибрати:
VPC : той самий, що й для обох інстансів
Subnet : повинна бути публічною підмережею (public subnet)
Auto assign public ip: Enable
У групі безпеки: дозволити ssh, http та https
Тепер натискаємо “launch Instance”.
Тепер перейдіть до папки, де зберігається ваш ключовий файл.
І виконайте нижче наведену команду, щоб скопіювати файл pem на bastion-host, який допоможе увійти в інші два інстанси, що працюють у приватних підмережах.
Оскільки bastion-host та інші два інстанси знаходяться в одній і тій самій VPC, ми можемо увійти, використовуючи той самий ключовий файл.
Users\hp\Downloads\aws_login.pem ubuntu@ipofbastion-host:/home/ubuntu
Тепер увійдіть у свій bastion-host і перевірте, чи є файл.
ssh -i aws_login.pem [email protected]
Чудово!! Файл є!!
Тепер, щоб зробити цей файл виконуваним, виконайте нижче наведену команду та увійдіть в один з інстансів приватної підмережі.
chmod 400 aws_login.pem
ssh -i aws_login.pem [email protected]
Тепер ми знаходимося в одному з інстансів приватної підмережі, де ми запустимо дуже простий сервер на Python.
Для цього просто виконайте нижче наведену команду:
Презентація VPC, готова до виробництва
```  У полі protocol: port введіть 8000, оскільки сервер працює на цьому порті.
І після цього натискайте на Next.


Тепер виберіть обидва інстанси, які працюють у приватній підмережі, та натисніть “include as pending below”, а після цього натискайте “create target group”.


Це займе деякий час, і після цього ви побачите два Healthy.

Тепер поверніться на сторінку Application load balancer і натисніть на іконку оновлення, і тепер ви побачите вашу цільову групу. Виберіть цю групу, і пам'ятайте, що тут не потрібно змінювати http порт.
Залиште за замовчуванням 80.

Після цього просто натискайте “create load balancer”.

Ваш балансувальник навантаження готовий. Скопіюйте DNS-ім'я та вставте його в браузер.
Ви також можете перевірити стан здоров'я.


Тут ви можете отримати доступ до вашої веб-сторінки через балансувальник навантаження. Ви також можете переглядати логи через термінал, на якому ви запускаєте свої сервери.

Ви успішно створили безпечну VPC для вашого додатку!!!
Якщо виникли проблеми, зв'яжіться зі мною за посиланням: [https://topmate.io/aaryangupta](https://topmate.io/aaryangupta)
або [AARYAN GUPTA | LinkedIn](https://www.linkedin.com/in/aaryan--guptaa/). Все це безкоштовно…✌️✌️
Перекладено з: [How to Create a Production Ready VPC with servers in private subnets and NAT 🤔🤔](https://faun.pub/how-to-create-a-production-ready-vpc-with-servers-in-private-subnets-and-nat-773a8d94c6ed?source=rss------python-5)