1

我使用AWS,我用shell脚本创建自动缩放的启动配置:无法访问EC2实例

#!/bin/sh 
curl -L https://us-west-2-aws-training.s3.amazonaws.com/awsu-spl/spl03-working-elb/static/bootstrap-elb.sh | sh 

创建这和负载均衡后,创建了两个实例。然后我复制了DNS名称,并在浏览器中粘贴它,但它说:

This site can’t be reached 

internal-elb-asg-167368762.us-east-1.elb.amazonaws.com took too long to respond. 
Go to http://amazonaws.com/ 
Search Google for internal elb asg 167368762 east amazonaws 
ERR_CONNECTION_TIMED_OUT 
+1

您是否为负载均衡器配置了运行状况检查,并且负载均衡器中的实例状态显示为“正在服务”? – Asanka

+0

内部Elb's无法访问互联网。 – jzaa

+0

请确认用户数据的*第一行*以'#!'开始。它必须在这些字符之前不*有任何空格或空行,否则脚本不会在启动时执行。 –

回答

0

编辑

我跟着你的脚步,但失败。

您必须更改用户数据的这一部分:

#!/bin/sh curl -L https://us-west-2-aws-training.s3.amazonaws.com/awsu-spl/spl03-working-elb/static/bootstrap-elb.sh | sh 

有了这个:

#!/bin/sh 
curl -L https://us-west-2-aws-training.s3.amazonaws.com/awsu-spl/spl03-working-elb/static/bootstrap-elb.sh | sh 

编辑:@约翰 - rotenstein提到的没有必要使用sudo。

此外,检查:

  • 您对EC2和你ELB正确的安全组。
  • 检查您是否正在收听ELB中的端口80。
  • 您的EC2安全组中的端口80必须在您的ELB安全组中打开,并且端口80必须在您的ELB安全组的全球范围内打开(0.0.0.0)。

最后,你确定你没有使用内部负载平衡器吗?

希望它可以帮助你。

+0

用户数据在实例启动时作为Root用户执行。因此,'sudo'不是必需的。 (但是,如果您以'ec2-user'手动运行脚本,则需要使用'sudo'。) –

+0

当我检查日志(Web控制台)时,它以ec2用户身份执行,而不是以root身份执行 –

+1

[在启动时在Linux实例上运行命令](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html):“作为用户数据输入的脚本以root用户身份执行,因此请不要在脚本中使用sudo命令。“ –