由于某种原因,ELB 无法正确地将请求转发到 EC2 上的我的实例。
我的设置只是一个micro
带有nginx
/ 的实例node
,监听端口80
和443
。该实例完美地通过 ELB 获取健康检查器请求。
10.185.1.190 - - [01/Oct/2013:15:26:18 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:26:48 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:27:18 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:27:48 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:28:18 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:28:48 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:29:18 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:29:48 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
10.185.1.190 - - [01/Oct/2013:15:30:18 +0000] "GET / HTTP/1.1" 302 40 "-" "ELB-HealthChecker/1.0"
但是直接通过浏览器请求根本不起作用。
需要注意的是,我的例子可直接访问,通过其 IP。SG 配置为允许两个端口上的任何连接,ELB 只是将它们代理到实例。
ELB 报告实例是Out of Service
。
健康检查:
Ping Target: HTTP:80/
Timeout: 5 seconds
Interval: 30 seconds
Unhealthy Threshold: 2
Healthy Threshold: 10
HTTP 和 HTTPS 均不适用于 ELB,但均适用于实例。
显然,在我的nginx
日志中尝试请求 ELB 实例时我没有得到任何内容。curl
报告:
HTTP/1.1 503 服务不可用:后端服务器已满
哈尔普
答案1
您的服务器返回 302(重定向)响应代码,而 ELB 会查找 200 响应代码以考虑服务中的实例。您需要让健康检查查看未重定向的页面。