Ответ 1
Мой партнер по команде и я только что внедрили 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 с группой безопасности, называемой веб-сервером.
- WebServer-2 работает в PrivateSubnet-2 в зоне доступности us-east-1c с группой безопасности, называемой веб-сервером.
- Созданный публичный подсеть в зоне 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.
Я надеюсь, что это поможет!