Мой товарищ по команде и я только что внедрили ELB в VPC с двумя частными подсетями в разных зонах доступности.Причина, по которой вы получаете тайм-ауты, заключается в том, что для каждой подсети, которую вы добавляете в балансировщик нагрузки, он получает один внешний IP-адрес.(попробуйте 'dig elb-dns-name-here', и вы увидите несколько IP-адресов).Если один из этих IP-адресов отображает частную подсеть, он истекает.IP, который отображается в вашей общедоступной подсети, будет работать.Поскольку DNS может дать вам любой из IP-адресов, иногда это работает, иногда это время ожидания.
После того, как мы с Amazon представили, что ELB следует размещать только в «общедоступных» подсетях, то есть в тех подсетях, у которых есть выход на интернет-шлюз.Мы хотели сохранить наши веб-серверы в наших частных подсетях, но позволить ELB общаться с ними.Чтобы решить эту проблему, мы должны были обеспечить соответствующую общедоступную подсеть для каждой зоны доступности, в которой у нас были частные подсети.Затем мы добавили в ELB общедоступные подсети для каждой зоны доступности.
Сначала, похоже, это не сработало, но, попробовав все, мы воссоздали ELB, и все заработало как надо.Я думаю, что это ошибка, или ELB был просто в странном состоянии от стольких изменений.
Вот более или менее то, что мы сделали:
- WebServer-1 работает в PrivateSubnet-1 в зоне доступности us-east-1b с группой безопасности, называемой web-сервером.
- WebServer-2 работает в PrivateSubnet-2 в зоне доступности us-east-1c с группой безопасности, называемой web-сервером.
- Создана общедоступная подсеть в зоне us-east-1b, назовем ее PublicSubnet-1.Мы убедились, что мы связали таблицу маршрутизации, которая включает маршрут к интернет-шлюзу (ig-xxxxx) с этой новой подсетью.(Если вы использовали мастер для создания публичного / частного VPC, этот маршрут уже существует.)
- Создав публичную подсеть в зоне us-east-1c, мы назовем ее PublicSubnet-2.Мы убедились, что мы связали таблицу маршрутизации, которая включает маршрут к интернет-шлюзу (ig-xxxxx) с этой новой подсетью.(Если вы использовали мастер для создания публичного / частного VPC, этот маршрут уже существует.)
- Создал новый ELB, добавив в него PublicSubnet-1 и PublicSubnet-2 (не PrivateSubnet-X).Также были выбраны экземпляры для запуска в ELB, в данном случае WebServer-1 и WebServer-2.Обязательно назначьте группу безопасности, которая разрешает входящие порты 80 и 443. Позволяет вызывать эту группу elb-group.
- В группе веб-серверов разрешить трафик с портов 80 и 443 из группы elb.
Надеюсь, это поможет!