it-swarm.com.ru

Amazon ELB для экземпляров EC2 в частной подсети в VPC

Я использую Amazon EC2 и хочу разместить ELB (балансировщик нагрузки) с выходом в Интернет для 2 экземпляров в частной подсети. Я использую VPC с публичными и частными подсетями.

  • Если я просто добавлю частную подсеть в ELB, она не получит никаких соединений.
  • Если я присоединяю обе подсети к ELB, то он может получить доступ к экземплярам, ​​но часто получит тайм-ауты. (См. Снимок экрана 1)
  • Если я присоединяюсь только к общедоступной подсети, то мой экземпляр, подключенный к ELB, получает OutOfService, поскольку у меня нет экземпляра в общедоступной подсети, количество экземпляров показывает 0. (См. Снимок экрана 2)

Скриншот 1: Обе подсети подключены Both subnets attached

Снимок экрана 2: Подключена только общедоступная подсеть Only public subnet attached

Мой вопрос на самом деле является расширением этот вопрос . После выполнения всех 6 шагов, упомянутых в принятом ответе, я все еще поражен, мой экземпляр, прикрепленный к ELB, получает OutOfService. Я даже пытался разрешить порты в группах безопасности для экземпляров EC2 и ELB, но это не помогло. 

Пожалуйста, помогите, я ломаю голову с этим. 

40
manish_s

Другой SO вопрос, на который вы ссылались, является точным. Двойной/тройной проверить следующее

  • Вам необходимо подключить только открытые подсети к вашему ELB, убедившись, что зоны доступности этих подсетей совпадают с зонами доступности частных подсетей, в которых находятся ваши экземпляры. 
  • Убедитесь, что группа безопасности ваших экземпляров разрешает доступ из группы безопасности вашего балансировщика нагрузки
  • Убедитесь, что проверка вашего здоровья работает локально на экземпляре. Например, если ваша проверка работоспособности в ELB - HTTP:8080/health_check, в экземпляре вы можете curl x.x.x.x:8080/health_check (где x.x.x.x - частный IP-адрес экземпляра) и получить код ответа 200. 
  • Таблица маршрутизации общедоступной подсети должна направлять 0.0.0.0/0 к интернет-шлюзу, подключенному к вашему VPC.
  • Таблица маршрутизации частной подсети должна направлять 0.0.0.0/0 к экземпляру NAT или шлюзу в общедоступной подсети.
66
Ben Whaley

Другой SO вопрос также помог мне. Что касается меня, то я постоянно забывал, что мне нужно было установить программное обеспечение на сервер (например, Apache), и если вы не создадите NAT GW или какой-либо другой метод, разрешающий установку программного обеспечения, он потерпит неудачу. Если вы хотите попробовать автоматизированный способ без особых хлопот, вы можете попробовать скрипт:

https://github.com/jouellnyc/AWS/tree/master/create_aws_vpc3

Обратите внимание, что уже есть много хороших документов и обсуждений, но:

HTTP коды, которые я получил от ELB:

  • 504 - Вероятно, группы безопасности - разрешить доступ к порту 80 экземпляров
  • 503 - Вероятно, неправильная настройка целевой группы
  • 502. Возможно, что Apache/Server не работает, потому что он не установлен, потому что у него нет nat gw или способа установки программного обеспечения.
0
jouell