Доступ к частным экземплярам с помощью балансировщика нагрузки приложений с выходом в Интернет в AWS
10 января 2023 г.В этой части я покажу вам, как развернуть простое приложение Python Flask с балансировщиком нагрузки приложений AWS. Приложение flask будет развернуто на двух частных экземплярах эластичных облачных вычислений (EC2). Эти экземпляры будут находиться за балансировщиком нагрузки приложения (ALB), поскольку он контролирует, какой из экземпляров обслуживает содержимое приложения Flask.
Поскольку частным экземплярам требуется доступ к Интернету для загрузки зависимостей Flask, я буду создавать общедоступные экземпляры, к которым будет подключен шлюз преобразования сетевых адресов (NAT).
Без дальнейших церемоний, давайте начнем процесс развертывания.
Для развертывания на AWS сначала необходимо иметь учетную запись в AWS. Вы можете нажать здесь, чтобы создать учетную запись. Частные и общедоступные экземпляры EC2 будут созданы в нашей сети виртуального частного облака (VPC).
Создание VPC
- Введите «VPC» в строку поиска на веб-сайте AWS.
- Нажмите на VPC, который отображается в браузере.
-
Нажмите «Создать VPC»
4. На странице «Создать VPC» выберите «VPC и другие». Этот параметр позволяет автоматически создавать подсети, в которых будут находиться общедоступные и частные экземпляры.
5. Введите имя VPC, оно будет использоваться для идентификации вашего VPC при создании инстансов EC2.
6. Значение блока CIDR по умолчанию достаточно для вашего VPC.
7. Для аренды следует оставить значение «По умолчанию», с вас будет взиматься плата за использование «Выделенного».
8. Для ALB требуется как минимум две зоны доступности (AZ), а в этом проекте нам нужно только две AZ, поэтому выберите 2.
9. Нам понадобятся две общедоступные подсети и две частные подсети, поэтому выберите два для «Количество частных подсетей» и «Количество общедоступных подсетей».
10. Вы можете настроить значения CIDR для подсетей.
11. Для «Шлюзов NAT» и «Конечных точек VPC» можно оставить значение «Нет». Мы по-прежнему создадим шлюз NAT.
12. Вы можете отключить опции «Параметры DNS»
13. Нажмите «Создать VPC»
После создания VPC следующим шагом будет создание таблиц маршрутизации (RT) для общедоступной и частной подсетей. Чтобы общедоступные подсети были доступны из Интернета, необходимо подключить интернет-шлюз к общедоступному RT и шлюз NAT к частному RT. Дополнительную информацию о таблицах маршрутов можно найти в этом блоге.
Создание таблиц маршрутов
- На веб-странице VPC параметр "Таблицы маршрутов" находится на левой боковой панели страницы.
2. Выберите «Маршрутные таблицы»
3. Нажмите «Создать таблицу маршрутов».
4. Не забудьте выбрать созданное вами VPC. Мы создадим две таблицы маршрутизации, поэтому у вас будут разные имена. Вы можете использовать «Частную таблицу маршрутов» и «Общую таблицу маршрутов». Далее мы предполагаем, что это имя используется для RT.
5. Нажмите кнопку «Создать таблицу маршрутов».
6. Повторите этот же процесс для второго RT.
Чтобы ваша «частная таблица маршрутов» имела доступ к Интернету и была доступна из Интернета, мы создадим интернет-шлюз (IG) и подключим его к этому RT.
Создание интернет-шлюза (IG)
- На веб-странице VPC параметр «Интернет-шлюз» находится на левой боковой панели страницы.
2. Выберите «Интернет-шлюзы»
.3. Нажмите кнопку «Создать интернет-шлюз»,
4. На странице «Создать интернет-шлюз» введите имя, которое вы хотите использовать для идентификации IG. Предположим, мы называем его «мой-интернет-шлюз».
5. Нажмите кнопку "Создать интернет-шлюз".
После этого нам нужно прикрепить созданный IG к «Общедоступной таблице маршрутов», а также связать созданные общедоступные подсети с этой таблицей маршрутов.
Для этого:
- На веб-странице VPC параметр "Таблицы маршрутов" находится на левой боковой панели страницы.
2. Отобразится таблица, содержащая созданные таблицы маршрутов.
3. Нажмите «Идентификатор таблицы маршрутов» в «Общедоступной таблице маршрутов».
4. Прокрутите вниз и нажмите кнопку "Изменить маршруты".
- Нажмите «Добавить маршрут».
6. В поле «Назначение» введите «0.0.0.0/0», а в поле «Цель» выберите «Интернет-шлюз», появится вновь созданный IG, т. е. «мой-интернет-шлюз», выберите его.
7. Нажмите кнопку «Сохранить изменения».
8. Вернитесь на страницу «Таблицы маршрутов».
9. Нажмите «Идентификатор таблицы маршрутов» в «Общедоступной таблице маршрутов» еще раз, но на этот раз прокрутите вниз и выберите «Ассоциации подсетей»
10. Нажмите кнопку «Изменить ассоциации подсетей».
-
Здесь будут показаны все четыре созданные подсети. Выберите только те подсети, в названии которых есть слово «public». Помните, что этот RT предназначен для общедоступных подсетей.
12. Нажмите кнопку "Сохранить связи".
На этом этапе любой экземпляр EC2, размещенный в любой из двух общедоступных подсетей, будет иметь доступ к Интернету, а также будет доступен из Интернета.
Создание шлюза NAT
Наша следующая задача — обеспечить доступ к Интернету для наших частных подсетей. Обратите внимание, что частные подсети будут иметь доступ к Интернету, но не будут доступны из Интернета. Классический вариант использования частных подсетей — развертывание баз данных. Для этой цели используется шлюз NAT.
Для частных подсетей будет создан шлюз NAT, прикрепленный к созданной «Частной таблице маршрутов» и частным подсетям, связанным с «Частной таблицей маршрутов».
Чтобы создать шлюз NAT:
- На веб-странице VPC "шлюзы NAT" находятся на левой боковой панели страницы.
2. Нажмите "Шлюзы NAT"
3. Нажмите «Создать шлюз NAT»
4. На странице «Создать шлюз NAT» введите имя шлюза, допустим, это «my-nat-gateway»
5. В поле «Подсеть» выберите любую из созданных общедоступных подсетей. Шлюзы NAT создаются в общедоступных подсетях, а затем присоединяются к частной таблице маршрутов.
6. "Тип подключения" следует оставить как "Общий", потому что вам нужен доступ к Интернету.
7. Нажмите «Выделить эластичный IP». Следует отметить, что шлюз NAT не является частью услуг уровня бесплатного пользования, предлагаемых AWS, поскольку шлюзу NAT назначается эластичный IP-адрес.
8. Нажмите кнопку «Создать шлюз NAT».
Те же шаги, что и для подключения Интернет-шлюза к «общедоступной таблице маршрутов», следует использовать для подключения шлюза NAT к «частной таблице маршрутов».
В «Destination» заполните «0.0.0.0/0», а в «Target» выберите «NAT Gateway», появится вновь созданный IG, т.е. «my-nat-gateway», выберите его.
В ассоциации подсети для «Частной таблицы маршрутизации» должны быть выбраны и связаны с этой таблицей маршрутизации только подсети, в названии которых есть приват.
Создание экземпляров EC2
Выполнив описанные выше шаги, вы подготовите свой VPC, подсети, интернет-шлюз, шлюз NAT и таблицы маршрутизации. Наша следующая задача — создать экземпляры EC2, которые будут находиться в созданных подсетях. Мы создадим четыре экземпляра, два общедоступных и два частных экземпляра. Я покажу вам шаг за шагом, как создать публичный и частный экземпляр. Затем следует выполнить эти шаги для создания других экземпляров. AWS фактически предлагает сервис для автоматического создания этих ресурсов с помощью CloudFormation, но это выходит за рамки статьи.
Чтобы создать общедоступный экземпляр:
- Введите «EC2» в строку поиска на веб-сайте AWS.
2. Нажмите на «EC2», который отображается в браузере.
3.
-
На странице «EC2» прокрутите вниз и нажмите «Запустить экземпляр»
4. На странице «Запустить экземпляр» введите имя экземпляра. Назовем его «общедоступный экземпляр 1».
5. Для этого руководства я выберу AMI «Ubuntu», заполните поля, чтобы выбрать любой AMI.
6. В раскрывающемся списке «Amazon Machine Image (AMI)» выберите любую версию по вашему выбору, но убедитесь, что она «подходит для бесплатного уровня»
7. В качестве «типа экземпляра» я выбрал «t2.micro», поскольку он бесплатный.
8. Для «пары ключей» нажмите «создать новую пару ключей». Введите имя, которое вы хотите сохранить, оставьте другой вариант без изменений, нажмите «создать пару ключей», и плата за ключ будет загружена в вашу систему. Этот ключ понадобится, когда вы захотите подключиться к экземпляру по SSH. Давайте назовем этот ключ именем «mykey», в вашей системе он будет сохранен как «mykey.pem»
9. В разделе «Настройки сети» нажмите кнопку «Изменить».
10. В VPC нажмите и выберите VPC, который мы создали ранее.
11. В подсети выберите подсеть со словом «Общедоступная и 1» в названии.
12. Для параметра «Автоматическое назначение общедоступного IP-адреса» должно быть установлено значение «Включить», поскольку это общедоступный экземпляр.
13. Оставьте выбор на «Создать группу безопасности»
14. В поле «Имя группы безопасности» введите любое имя. Вы будете использовать эту группу безопасности (SG) и для других экземпляров. Назовем его «тест-SG».
15. Разрешить ssh, чтобы добавить еще одно правило, нажмите на кнопку «Добавить правило группы безопасности». Для «Тип» нажмите и выберите «HTTP», для «Тип источника» нажмите и выберите «Везде», для «источника» введите «0.0.0.0/0». Разрешение «HTTP» разрешает доступ в Интернет.
16. Для «общедоступного экземпляра 1» достаточно следующей конфигурации. Нажмите кнопку «Запустить экземпляр».
Точно такие же шаги следует выполнить при создании частного экземпляра «частный экземпляр 1» со следующим изменением:
- На шаге 4 для создания общедоступного экземпляра измените имя на «частный экземпляр 1».
2. На шаге 8 вам не нужно создавать еще один «параметр ключа», нажмите раскрывающееся меню «Имя пары ключей -обязательное» и выберите ранее созданный ключ.
3. На шаге 11 выберите подсеть, в названии которой есть «частная и 1».
4. На шаге 12 для параметра «Автоматическое назначение общедоступного IP-адреса» должно быть установлено значение «отключить».
5. На шагах 14 и 15 вам не нужно создавать новую группу безопасности, выберите «Выбрать существующую группу безопасности» и выберите «test-SG», которая является нашей созданной группой безопасности.
6. Нажмите кнопку «Запустить экземпляр».
Для второго общедоступного и частного экземпляра необходимо выполнить шаги, описанные выше. Что необходимо изменить, так это имя экземпляров, которые будут «публичный экземпляр 2» и «частный экземпляр 2», и подсети, которые будут подсетями, содержащими «Общедоступный экземпляр». и 2" и "Private and 2" в его названии соответственно.
Чтобы проверить, есть ли у наших частных экземпляров доступ к Интернету
- На странице EC2 нажмите "Экземпляры (запущенные)"
2. Вы будете перенаправлены на веб-страницу с таблицей, показывающей все наши запущенные экземпляры. Я предполагаю, что вы выполнили описанные выше шаги для создания VPC. У вас должно получиться что-то вроде этого.
- Нажмите «Идентификатор экземпляра» «общедоступного экземпляра 1».
4. Нажмите кнопку «Подключиться».
5. На странице "Подключиться к экземпляру" нажмите "Подключиться"
6. Откроется новая вкладка браузера, это консоль для общедоступного экземпляра 1». У вас должно получиться что-то вроде этого.
-
Чтобы подключиться к вашему частному экземпляру из общедоступного экземпляра с помощью SSH, вам необходимо убедиться, что у вас есть созданная пара ключей, т. е. «mykey.pem», сохраненная в этом общедоступном экземпляре.
8. В консоли «общедоступного экземпляра 1» выполните эту команду, чтобы создать файл ключа.
sudo touch mykey.pem
9. Скопируйте содержимое файла «mykey.pem» в свою локальную систему, откройте созданный файл «mykey.pem» в «общедоступном экземпляре 1», вставьте содержимое в этот файл и сохраните. Вы можете выбрать использованиеvi
илиnano
для редактирования этого файла.10. Теперь ключ находится в вашем «публичном экземпляре 1». Вы можете запустить команду
ls
, чтобы увидеть ключ.11. Затем на веб-странице EC2, содержащей запущенные экземпляры, выберите «ID экземпляра» для «частного экземпляра 1».
12. Нажмите «Подключиться»
13. Во вкладке «SSH-клиент»
-
Каким бы ни был контент в «Примере», на изображении выше это «ssh -i «machina.pem» ubuntu@10.0.0.99», ваш будет другим, скопируйте его и вставьте в «общедоступный экземпляр 1». », затем нажмите Enter. Я считаю, что в вашем случае, если все сделано правильно, вы должны увидеть «mykey.pem». Вы должны находиться в консоли «Частный экземпляр 1».
15. Установите Apache в свой «частный экземпляр 1» с помощью следующей команды:
sudo apt установить apache2 -y
Вы должны будете запустить эту команду, и она будет выполнена, потому что частный экземпляр имеет доступ к Интернету, без этого доступа команда не будет работать.
16. Повторите тот же шаг для «общедоступного экземпляра 2» и «частного экземпляра 2», чтобы установить Apache в частный экземпляр.
Наша последняя задача — создать балансировщик нагрузки приложений (ALB), который является точкой доступа для доступа к нашим частным экземплярам. Чтобы получить дополнительную информацию о ALB, нажмите здесь.
Чтобы создать ALB
- На левой боковой панели веб-страницы EC2 прокрутите вниз и увидите раздел «Балансировка нагрузки».
2. Нажмите «Целевые группы»
-
Нажмите «Создать целевую группу»
4. Выберите «Экземпляры» в качестве типа цели.
5. В поле «Имя целевой группы» дайте ей имя. Назовем его «тест-TG»
6. Для «VPC» щелкните раскрывающийся список и выберите созданный нами VPC.
7. Для «Протокола» и «Порта» достаточно «HTTP» и 80 соответственно.
8. Вы можете оставить все остальные значения как есть, а затем нажать «Далее»
9. На странице «Зарегистрировать цели» выберите только частные экземпляры.
10. Затем нажмите кнопку «Включить как ожидающие ниже».
11. Нажмите кнопку «Создать целевую группу».
После создания «Целевой группы» наша следующая задача — присоединить эту целевую группу к балансировщику нагрузки.
Создание балансировщика нагрузки приложения
- На левой боковой панели веб-страницы EC2 прокрутите вниз и увидите раздел «Балансировка нагрузки».
2. Нажмите "Балансировщик нагрузки"
.3. На странице балансировщика нагрузки нажмите кнопку "Создать балансировщик нагрузки".
4. Нажмите кнопку "Создать" в "Application Load Balancer".
5. Введите значение для «Имя балансировщика нагрузки», назовем его «test-LB».
6. Значение «Схема» и «Тип IP-адреса» оставить как есть.
7. В качестве VPC выберите созданный нами VPC.
8. Для выбора Mappings выбираем две зоны доступности (AZ), в которых расположены наши подсети. Это очень важно. Чтобы получить эту информацию, на панели инструментов EC2 нажмите экземпляры, и вы увидите зону доступности, в которой находятся ваши экземпляры.
-
Выберите созданную выше группу безопасности «test-SG».
10. Каждому балансировщику нагрузки нужна целевая группа. В разделе «Прослушиватели и маршрутизация» нажмите «Выбрать целевую группу», появится созданная целевая группа «test-TG», выберите ее.
11. Затем нажмите кнопку «Создать балансировщик».
Точкой доступа наших частных серверов теперь является баланс нагрузки созданного приложения (ALB).
Чтобы получить URL-адрес ALB
- На левой боковой панели веб-страницы EC2 прокрутите вниз и увидите раздел «Балансировка нагрузки».
2. Нажмите "Балансировщик нагрузки"
.3. На странице «Балансировщики нагрузки» вы увидите только что созданный балансировщик нагрузки «test-TG», URL-адрес — значение «DNS-имя». Скопируйте и вставьте его в свой браузер, и вы должны увидеть страницу Apache по умолчанию.
Выполнив описанные выше шаги, вы сможете получить доступ к частным экземплярам с помощью балансировщика нагрузки приложения.
основной источник изображения.
Оригинал