Amazon ELB для экземпляров EC2 в частной подсети в VPC
Я использую Amazon EC2, и я хочу поставить ELB (балансировщик нагрузки) на Интернет в 2 экземпляра в частной подсети. Я использую VPC с общедоступными и частными подсетями.
- Если я просто добавлю приватную подсеть в ELB, он не получит никаких подключений.
- Если я присоединяю обе подсети к ELB, тогда он может получить доступ к экземплярам, но часто получает тайм-ауты. (См. Снимок экрана 1)
- Если я присоединяюсь только к публичной подсети, то мой экземпляр, прикрепленный к ELB, получает OutOfService, потому что у меня нет экземпляра в Public Subnet, количество экземпляров показывает 0. (Обратитесь к скриншоту 2)
Снимок экрана 1: Обе подсетей прилагаются
![Both subnets attached]()
Снимок экрана 2: Подключена только общедоступная подсеть
![Only public subnet attached]()
Мой вопрос на самом деле является расширением этого вопроса. После выполнения всех 6 шагов, упомянутых в принятом ответе, я все еще получаю удар, мой экземпляр, прикрепленный к ELB, получает OutOfService. Я даже попытался разрешить порты в группах безопасности для экземпляров EC2 и ELB, но это не помогло.
Пожалуйста, помогите, я ломаю голову с этим.
Ответы
Ответ 1
Другой SO вопрос, на который вы ссылались, - точечный. Двойной/тройной проверить следующее
- Вам необходимо подключить только открытые подсети к вашему ELB, убедившись, что зоны доступности этих подсетей совпадают с зонами доступности частных подсетей, в которых находятся ваши экземпляры.
- Убедитесь, что группа безопасности ваших экземпляров разрешает доступ из группы безопасности вашего балансировщика нагрузки
- Убедитесь, что проверка вашего здоровья работает локально на экземпляре. Например, если ваша проверка работоспособности в ELB -
HTTP:8080/health_check
, в экземпляре вы можете curl xxxx:8080/health_check
(где xxxx
- частный IP-адрес экземпляра) и получить код ответа 200. - Таблица маршрутизации общедоступной подсети должна направлять
0.0.0.0/0
к интернет-шлюзу, подключенному к вашему VPC. - Таблица маршрутизации частной подсети должна направлять
0.0.0.0/0
к экземпляру NAT или шлюзу в общедоступной подсети.
Ответ 2
Другой SO вопрос помог мне также. Что касается меня, я постоянно забывал, что мне нужно было установить программное обеспечение на сервер (например, Apache), и если вы не создадите NAT GW или какой-либо другой метод, разрешающий установку программного обеспечения, произойдет сбой. Если вы хотите попробовать автоматизированный способ без особых хлопот, вы можете попробовать скрипт:
https://github.com/jouellnyc/AWS/tree/master/create_aws_vpc3
Обратите внимание, что уже есть много хороших документов и обсуждений, но:
HTTP коды, которые я получил от ELB:
- 504 - Вероятно, группы безопасности - разрешить доступ к порту 80 экземпляров
- 503 - Вероятно, неправильная настройка целевой группы
- 502. Вероятно, Apache/Server не работает, так как он не установлен, потому что нет nat gw или метода установки программного обеспечения.