Я слежу Основное обучение AWS от lynda.com и я успешно настроил экземпляр EC2, но когда я пытаюсь разместить его за балансировщиком нагрузки, я не могу получить к нему доступ через общедоступный DNS ELB.
В консоли AWS Load Balancer отображается статус моего экземпляра OutOfService. В соответствии с руководством я настроил проверку работоспособности для балансировщика нагрузки с путем /heartbeat.php
.
у меня тоже есть две группы безопасности настроить. Первый назван Балансировщик нагрузки - Prod который разрешает HTTP-трафик на порт 80
ни от кого. Мой балансировщик нагрузки принадлежит к этой группе безопасности. Кроме того, у меня есть группа безопасности под названием Веб-уровень - Прод. который разрешает только HTTP-трафик на порт 80
из Балансировщик нагрузки - Prod группа безопасности и мой собственный IP, SSH на моем IP и трафик MYSQL от самого себя, Веб-уровень - Прод. группа безопасности.
Я могу получить доступ к экземпляру с его собственным общедоступным DNS и могу подключиться к нему по SSH, я просто не могу получить к нему доступ через общедоступный DNS балансировщика нагрузки.
Когда я использую ssh и проверяю журналы доступа NGINX, я вижу это много раз.
172.??.??.?? - - [26/Aug/2015:16:43:46 +0000] "GET /heartbeat.php HTTP/1.1" 401 203 "-" "ELB-HealthChecker/1.0"
Полагаю, я должен видеть код состояния 200 вместо 401 203. Я пробовал изменить разрешения на /var/www/
на 777 рекурсивно в качестве теста, но это не имело значения.
Если при проверке состояния возвращается 401, AWS считает экземпляр неисправным и удаляет его из ELB. Поскольку у вас нет исправных экземпляров, ELB не работает.
Обратите внимание, что AWS получает доступ /heartbeat.php
через IP, не через DNS-имя. Проверьте ответ, используя curl -I http://<your instance IP>/heartbeat.php
и настройте конфигурацию вашего сервера, если он не обслуживается виртуальным хостом по умолчанию.