如何将面向公众的负载均衡器连接到私有VPC中的EC2实例

时间:2018-10-22 13:49:23

标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk amazon-vpc

背景

我想将laravel应用程序部署到Elastic Beanstalk。该设置包括具有两个专用子网和两个公用子网的VPC。 EC2,RDS等都在专用子网中。

只有ELB在公共场所。并且应该将所有内容路由到私有的内容中。

问题

如果尝试通过ELB连接,则会收到超时错误。

我不确定这是配置问题(VPC /子网)还是应用程序(EB)错误。

但是,我认为请求似乎可以通过并正确路由。因为如果我查看Elastic Beanstalk日志,例如httpd/access.log

我看到了通过ELB发出的请求。

13:38:20 10.0.2.52 (94.79.175.190) - - [22/Oct/2018:13:38:19 +0000] "GET /loadbalancertest HTTP/1.1" 307 307 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.

但是,健康检查似乎可以正常工作。并且应用程序状态为OK。

基础设施

  • 1个VPC
  • 2个私有子网
  • 2个公共子网

ELB

ELB在两个公共子网中。

ELB安全组设置

入站:HTTP / TCP / 80 / 0.0.0.0/0

出站:HTTP / TCP / 80 / 0.0.0.0 / 0


EC2实例(由EB创建)

VPC安全组设置

入站:HTTP / TCP / 80 / sg-03xxxxx(ELB SG)

出站:所有流量/ 0.0.0.0/0

1 个答案:

答案 0 :(得分:0)

您的ELB似乎配置正确。

您的后端配置有问题。 HTTP服务返回的HTTP状态307是您的健康检查的临时重定向(除非我读错了日志文件-您永远无法确定自定义日志格式是什么)。奇怪的是,您的日志文件中有307 307。第一个307是HTTP状态,第二个是为请求返回的字节数。

连接到您的一个后端实例,然后使用curl到另一个后端实例,并验证运行状况检查URL是否正常运行。然后验证默认主页是否也正常工作。