Я только что наследовал Ruby + приложение направляющих, работающее на AWS Эластичный Бобовый стебель, и это в настоящее время использует TCP для Эластичной проверки состояния Подсистемы балансировки нагрузки. Я хочу переключиться на HTTP и на самом деле поразить мое приложение.
Чтобы сделать это, я создаю конечную точку на приложении, которое всегда возвращает состояние 200. Я развертываю это и тестирую его с завихрением.
louis $ curl -I https://my.domain.goes.here/__status__
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate
Date: Tue, 25 Aug 2015 16:09:29 GMT
ETag: W/"028714d01e3aa7ed0ffa7a023f82ca94"
Server: nginx/1.6.2
Strict-Transport-Security: max-age=31536000
X-Request-Id: 1ce6b907-779a-45d2-b9f9-d19a74ef8abd
X-Runtime: 0.002703
Connection: keep-alive
Это - результат, который я ожидал.
Я использую консоль AWS для установки проверки состояния со следующей конфигурацией:
Ping Target HTTP:80/__status__
Timeout 5 seconds
Interval 30 seconds
Unhealthy Threshold 5
Healthy Threshold 3
Но теперь проверка состояния последовательно перестала работать. То же для HTTPS на порте 443
Я ssh в экземпляр и завихрение оттуда.
# With the "Private IP"
[ec2-user@ip-$PRIVATE_IP_ADDRESS ~]$ curl -I $PRIVATE_IP_ADDRESS/__status__
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.2
Date: Wed, 26 Aug 2015 08:14:21 GMT
Content-Type: text/html
Connection: keep-alive
Location: https://$PRIVATE_IP_ADDRESS/__status__
# With the "Private DNS"
[ec2-user@ip-$PRIVATE_IP_ADDRESS ~]$ curl -I $PRIVATE_DNS_ADDRESS/__status__
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.2
Date: Wed, 26 Aug 2015 08:17:20 GMT
Content-Type: text/html
Connection: keep-alive
Location: https://$PRIVATE_DNS_ADDRESS/__status__
# With the "Public IP"
[ec2-user@ip-$PRIVATE_IP_ADDRESS ~]$ curl -I $PUBLIC_IP_ADDRESS/__status__
curl: (7) Failed to connect to $PUBLIC_IP_ADDRESS port 80: Connection timed out
# With the "Public DNS"
[ec2-user@ip-$PRIVATE_IP_ADDRESS ~]$ curl -I $PUBLIC_DNS_ADDRESS/__status__
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.2
Date: Wed, 26 Aug 2015 07:24:37 GMT
Content-Type: text/html
Connection: keep-alive
Location: https://$PUBLIC_DNS_ADDRESS/__status__
# With the "Public DNS" over HTTPS
[ec2-user@ip-$PRIVATE_IP_ADDRESS ~]$ curl -I https://$PUBLIC_DNS_ADDRESS/__status__
curl: (7) Failed to connect to $PUBLIC_DNS_ADDRESS port 443: Connection refused
Какова могла бы быть проблема здесь?
ELB не попадет в ваше доменное имя, он попадет в ваш IP-адрес. Протестируйте curl -I https: //my.**IP**.goes.here/__status__
, чтобы убедиться, что проверка вашего статуса работает правильно - он попадет в виртуальный хост по умолчанию.
редактировать: Согласно вашим обновленным результатам, ваш сервер перенаправляет ваши HTTP-доступы на HTTPS. ELB не считает 301 успешным, поэтому считает его неудачным. Освободите страницу статуса от переадресации HTTP → HTTPS.