Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 专有网络专用子网中EC2实例的Amazon ELB_Amazon Web Services_Amazon Ec2_Amazon Elb_Amazon Vpc_Vpc - Fatal编程技术网

Amazon web services 专有网络专用子网中EC2实例的Amazon ELB

Amazon web services 专有网络专用子网中EC2实例的Amazon ELB,amazon-web-services,amazon-ec2,amazon-elb,amazon-vpc,vpc,Amazon Web Services,Amazon Ec2,Amazon Elb,Amazon Vpc,Vpc,我使用的是AmazonEC2,我想把一个面向internet的ELB(负载平衡器)放到一个私有子网上的两个实例中。我将VPC用于公共和私有子网 如果我只是将私有子网添加到ELB,它将不会获得任何连接 如果我将两个子网都连接到ELB,那么它可以访问实例,但通常会超时。(请参阅屏幕截图1) 如果我只附加到公共子网,那么我附加到ELB的实例将停止服务,因为我在公共子网中没有任何实例,实例计数显示为0。(请参阅屏幕截图2) 屏幕截图1:两个子网均已连接 屏幕截图2:仅连接公共子网 我的问题实际上

我使用的是AmazonEC2,我想把一个面向internet的ELB(负载平衡器)放到一个私有子网上的两个实例中。我将VPC用于公共和私有子网

  • 如果我只是将私有子网添加到ELB,它将不会获得任何连接
  • 如果我将两个子网都连接到ELB,那么它可以访问实例,但通常会超时。(请参阅屏幕截图1)
  • 如果我只附加到公共子网,那么我附加到ELB的实例将停止服务,因为我在公共子网中没有任何实例,实例计数显示为0。(请参阅屏幕截图2)
屏幕截图1:两个子网均已连接

屏幕截图2:仅连接公共子网

我的问题实际上是对这个问题的延伸。在完成了已接受答案中提到的所有6个步骤之后,我仍然会被击中,我连接到ELB的实例将停止服务。我甚至尝试过允许EC2实例和ELB的安全组中的端口,但没有帮助


请帮帮我,我的头都快碎了

你提到的另一个问题是正确的。双重/三重检查以下各项

  • 您只需要将公共子网连接到ELB,确保这些子网的可用性区域与实例所在的私有子网的可用性区域对齐
  • 确保实例的安全组允许从负载平衡器的安全组进行访问
  • 负载平衡器安全组应具有允许运行状况检查到达实例的出口规则
  • 确保您的运行状况检查正在本地对实例进行。例如,如果ELB中的健康检查为
    HTTP:8080/health\u check
    ,则在实例上可以
    curl x.x.x.x:8080/health\u check
    (其中
    x.x.x.x
    是实例的私有IP)并获得200响应代码
  • 公共子网路由表应将
    0.0.0.0/0
    路由到连接到VPC的internet网关
  • 专用子网路由表应将
    0.0.0.0/0
    路由到公用子网中的NAT实例或网关

    • 另一个问题对我也有帮助。对我来说,我一直忘记我需要将软件安装到服务器(即Apache),如果您不创建NAT GW或其他方法来允许软件安装,它将失败。如果您想尝试一种自动化时尚,而不需要太多麻烦,您可以尝试以下脚本:

      https://github.com/jouellnyc/AWS/tree/master/create_aws_vpc3
      
      注意,已经有很多好的文档和讨论,但是:

      我从ELB得到的HTTP代码:

      • 504-可能是安全组-允许访问实例的端口80
      • 503-可能是错误的目标组设置
      • 502-可能Apache/Server没有运行b/c,它没有安装,因为没有nat gw或安装软件的方法

      我在截图1中注意到,健康实例位于AZ ap-Southast-1b。确保ELB的公共子网位于同一区域中。例如,ELB的公共子网位于ap-Southwest-1b,而私有子网则位于ap-Southwest-1b。如果区域不匹配,它将无法工作。@BenWhaley是正确的。稍微扩展一下:您的ELB应该只在公共子网上,并且只在与您的实例位于同一可用性区域的子网上。因此,ELB上的“交叉区域”设置不允许ELB和实例位于不同的AZ中吗?这对我来说似乎不起作用。无论如何,这不是一个大问题,因为我将确保AZ-alignment.Cross Zone确保一个区域内的负载平衡器接口将流量发送到其他AZ中的实例。此要求的原因是AWS在与ELB关联的每个子网中放置一个ELB“节点”。这些节点的网络接口具有公共IP,需要能够与Internet通信,因此需要位于具有IGW路由的子网中。