Як створити VPC, готову до продакшн-розгортання, з серверами в приватних підмережах і NAT 🤔🤔

pic

Випадок використання :

Для покращення стійкості вам потрібно розгорнути сервер у двох зонах доступності (Availability Zones), використовуючи групу автоматичного масштабування (Auto Scaling Group) та навантажувальний балансувальник (Application Load Balancer). Для додаткової безпеки сервери повинні бути розгорнуті в приватних підмережах (Private Subnets). Сервери повинні отримувати запити через навантажувальний балансувальник. Сервери можуть підключатися до Інтернету тільки через NAT-шлюз (NAT Gateway). Для покращення стійкості потрібно розгорнути NAT-шлюз у обох зонах доступності.

Рішення :

  1. VPC має публічну підмережу (Public Subnet) та приватні підмережі (Private Subnets) у двох зонах доступності.
  2. Кожна публічна підмережа містить NAT-шлюз та вузол навантажувального балансувальника.
  3. Сервери працюють у приватній підмережі і запускаються та зупиняються за допомогою групи автоматичного масштабування (Auto Scaling Group), отримують трафік через навантажувальний балансувальник.
    4.
    Сервери підключатимуться до Інтернету через NAT-шлюз (NAT Gateway).

Отже, давайте почнемо будувати цей проект:

Крок-1 Перейдіть до вашої консолі AWS, введіть у рядок пошуку VPC і перейдіть до VPC, потім натисніть "Створити VPC" (Create VPC).

pic

pic

Тепер виберіть опцію "VPC та інше" (VPC and more), оскільки якщо вибрати лише VPC, вам доведеться все визначати вручну, наприклад, CIDR-блок та інші параметри.

Тепер дайте проекту ім'я, тут я даю "VPC-project", а за замовчуванням залишаємо CIDR-блок.

pic

pic

Тепер виберіть:

Кількість зон доступності (AZs): 2

Кількість публічних підмереж (Public Subnets): 2

Кількість приватних підмереж (Private Subnets): 2

NAT-шлюзи: 1 на кожну зону доступності (per AZ)

Точки доступу VPC (VPC Endpoints): Немає (None)

Інші налаштування залиште за замовчуванням.
І натисніть "Створити VPC" (Create VPC).

pic

pic

Якщо ви побачите повідомлення про успішне створення, ваша VPC була успішно створена. Натисніть на "Переглянути VPC" (View VPC), щоб побачити вашу VPC.

pic

pic

Тепер, щоб розгорнути нашу програму, знову перейдіть до рядка пошуку і введіть EC2.

pic

Перейдіть до розділу "Групи автоматичного масштабування" (Auto Scaling Groups).
І натисніть "Створити групу автоматичного масштабування" (create auto scaling group).

pic

pic

Тепер натисніть "Створити шаблон запуску" (create a launch template).

pic

Тепер дайте шаблону ім'я, я даю "aws-prod-example".

pic

Тепер виберіть AMI або виберіть нещодавно запущене, оберіть Ubuntu AMI та виберіть t2.micro для типу інстансу.
Ви можете створити пару ключів (Key pair) або вибрати попередню, якщо вона є.

pic

pic

Тепер у налаштуваннях мережі (Network settings):

Підмережа (Subnet): залиште за замовчуванням.

Брандмауер (Firewall): “Створити групу безпеки” (Create security group).

Ім'я групи безпеки (Security group name): aws-prod-example #можете написати будь-що.

Опис (Description): Дозволити SSH для розробників (Allow ssh to developers) #можете написати будь-що.

VPC: виберіть ту, яку ми створили раніше.

pic

Тепер у правилах вхідного трафіку групи безпеки (Inbound Security Group rules), натисніть на "Додати правило групи безпеки" (Add security group rule).

Додайте ці два правила вхідного трафіку, як показано на зображенні, а потім натисніть "Створити шаблон запуску" (Create launch Template).

pic

Тепер поверніться на попередню сторінку до групи автоматичного масштабування (Auto Scaling Group) і введіть ім'я групи автоматичного масштабування “aws-prod-example” #можете написати будь-що.

У розділі шаблону запуску (Launch template), натисніть на іконку оновлення (refresh icon), і ви побачите назву вашого шаблону.
Виберіть цей шаблон. Після цього натисніть "Далі" (Next).

На наступній сторінці, в розділі мережі (Network), виберіть VPC, яку ми створили раніше.
Після цього, в розділі Availability zones & subnets, виберіть обидві приватні підмережі (private subnets), в яких ми хочемо розгорнути наші EC2 інстанси.

pic

pic

pic

Тепер натисніть "Далі" (Next), залиште всі налаштування за замовчуванням і натисніть "Далі" знову.

pic

pic

На кроці-4 (Step-4), в полях Desired capacity: 2, Min Desired capacity: 1, Max: 4.

Для політики масштабування (scaling policy) залиште все за замовчуванням і натисніть "Далі" (Next).

pic

pic

Тепер на кроках 5 і 6 залиште все за замовчуванням і натисніть "Далі" (Next).

pic

pic

Тепер перегляньте налаштування вашої групи автоматичного масштабування (Auto scaling group) і натисніть “Створити групу автоматичного масштабування” (Create Auto scaling group).

pic

pic

Ваша група автоматичного масштабування готова.
Ви можете перевірити, зайшовши в інстанс, чи наша група автоматичного масштабування (Auto scaling group) запустила два сервери в двох різних регіонах.

pic

pic

pic

Тепер частина з групою автоматичного масштабування (Auto scaling group) завершена.
Нам потрібен сервер-бастіон (bastion-host), який ми розгорнемо в публічній підмережі (public subnet), через який будемо отримувати доступ до серверів у приватних підмережах.

Для цього в розділі "Instance" натискаємо “launch Instance” та надаємо ім’я, наприклад, “bastion-host”, після чого вибираємо AMI для Ubuntu або будь-яку іншу.

pic

pic

Вибираємо тип інстанса: t2.micro / Key pair: вибираємо той самий ключ, який ми використовували для інших інстансів у приватних підмережах, оскільки нам потрібно отримати доступ до обох серверів через bastion-host.
Якщо вони використовують один і той самий ключ, доступ стає простішим.

pic

Найважливіше, що потрібно зробити, це в налаштуваннях мережі натиснути "edit" і вибрати:

VPC : той самий, що й для обох інстансів

Subnet : повинна бути публічною підмережею (public subnet)

Auto assign public ip: Enable

У групі безпеки: дозволити ssh, http та https

Тепер натискаємо “launch Instance”.

pic

Тепер перейдіть до папки, де зберігається ваш ключовий файл.
І виконайте нижче наведену команду, щоб скопіювати файл pem на bastion-host, який допоможе увійти в інші два інстанси, що працюють у приватних підмережах.

Оскільки bastion-host та інші два інстанси знаходяться в одній і тій самій VPC, ми можемо увійти, використовуючи той самий ключовий файл.

Users\hp\Downloads\aws_login.pem ubuntu@ipofbastion-host:/home/ubuntu

pic

Тепер увійдіть у свій bastion-host і перевірте, чи є файл.

ssh -i aws_login.pem [email protected]

pic

pic

Чудово!! Файл є!!

Тепер, щоб зробити цей файл виконуваним, виконайте нижче наведену команду та увійдіть в один з інстансів приватної підмережі.

chmod 400 aws_login.pem  
ssh -i aws_login.pem [email protected]

pic

Тепер ми знаходимося в одному з інстансів приватної підмережі, де ми запустимо дуже простий сервер на Python.
Для цього просто виконайте нижче наведену команду:

pic









 Презентація VPC, готова до виробництва
          ```  ![pic](https://drive.javascript.org.ua/4fa4576add1__bdZpOhMkJ1w3UVs_X2QdA_png)  У полі protocol: port введіть 8000, оскільки сервер працює на цьому порті.
І після цього натискайте на Next.

![pic](https://drive.javascript.org.ua/cdc581fba41_6n4IaofAyqmUE7Dk7xUtsw_png)

![pic](https://drive.javascript.org.ua/9da8a6b1371_OoSlQjwibFkXezDgI7QdzQ_png)

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

![pic](https://drive.javascript.org.ua/bb55e7c48e1_PSbJUT4nRMsoGQORKn2dgQ_png)

![pic](https://drive.javascript.org.ua/df7a3151cf1_cxZrEPr3hPdF7KKugNlsYA_png)

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

![pic](https://drive.javascript.org.ua/d9754e95a71_FJpfNdSz8ziTw12Jwgp4cg_png)

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

![pic](https://drive.javascript.org.ua/321884781e1_SWcqnTO0oYox6XpdFb4sOw_png)

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

![pic](https://drive.javascript.org.ua/4af5705abf1_uzqzyGw9U8NDXJj4P0kwPw_png)

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

Ви також можете перевірити стан здоров'я.

![pic](https://drive.javascript.org.ua/bf452a31691_bVKJhIqNkkhin7DzlYT7VA_png)

![pic](https://drive.javascript.org.ua/21d3cf479f1_0xvh6AwfviUrKcPiYHgZKQ_png)

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

![pic](https://drive.javascript.org.ua/d057f3345a1_3B4qCC5oJTAZ1AeWIdkz9w_png)

Ви успішно створили безпечну 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)

Leave a Reply

Your email address will not be published. Required fields are marked *