亚马逊只给你静态的IP地址有一定的数量和每个EC2实例的本地(私有)IPS重新启动机器时可以改变。 这使得建立一个稳定的平台,在这里EC2实例互相依赖可笑的努力,据我可以告诉使用。
我已经在网上搜索了很多关于各种解决方案,即使它不是面向公众的分配上不断EC2的弹性IP地址,到目前为止没有发现任何合理的外面。 没有人有任何其他好的想法,实际上是易于执行的?
谢谢!
请参阅AWS团队的答复问题静态本地IP :
EC2实例的内部IP地址是通过DHCP分配。 在实例关闭,或当DHCP租约到期时,IP地址被返回到可用于其他实例地址一般EC2 DHCP地址池。
有没有办法保证,你将获得在重新启动后的同一个DHCP地址。
编辑:答案是使用Amazon VPC。 还有,除了额外的设置的一个微不足道的量没有缺点,因为现在你控制路由器。 这是一个世界上除了在AWS上普通的老式EC2实例。 这实际上是将VPC未来所有AWS设置默认启用如此必要。 更多信息请参见这篇文章: http://www.reddit.com/r/aws/comments/1a3n0r/ec2_update_virtual_private_clouds_for_everyone/
我偶然发现了第三个选项。 有EC2-SSH由Instragram乡亲。 这是你在全球安装,并通过标签的名字可以让你既查询您的EC2实例的公共DNS,也蟒蛇shell脚本ssh
通过标签名称为好。
它的文档几乎是不存在。 我写下来下面安装步骤:
要安装EC2-SSH:
-
sudo yum install python-boto
(Python包装的EC2 API) - 混帐克隆https://github.com/Instagram/ec2-ssh
在您的〜/ .bash_profile中设置您的AWS访问密钥和密码,如下所示:
出口AWS_ACCESS_KEY_ID = XYZ123
出口AWS_SECRET_ACCESS_KEY = XYZ123
cd
到bin
回购的文件夹中,将有两个文件:
ec2-host
和ec2-ssh
将它们复制到你/usr/bin
或/usr/local/bin
。
现在,你可以做的真棒东西,如:
$ ec2-host ZenWorker
ec2-999-xy-999-99.compute-1.amazonaws.com
和
$ ec2-ssh ZenWorker
Connecting to ec2-999-xy-999-99.compute-1.amazonaws.com.
请注意,您的常规shell脚本,你可以使用反引号来调用这些全球工具。 我已经超时这些电话,他们采取0.25和0.5之间的第二使用EC2实例,所以这是真正唯一的缺点。 也许你可以用延迟生活,或使用一个事实,即公共DNS只改变一个实例上重新启动工作了一个解决方案。
注意,这两个程序是命令行脚本和你不需要任何的Python知识来使用它们。 对于PHP爱好者,或者是那些还需要一种简单的方法来scp
文件,而无需知道改变公众的DNS,你可以检出ec2dns 。
我是在同样的情况一次。 我仍然不具备专业知识妥善解决这个问题。 我的丑解决方案是使用ELB没有真正的负载平衡,但只是端点。
但我认为一个好的解决方案可以通过使用获得AWS VPC 。
下面是另一个Ruby解决方案从实例在AWS上更新路由53 DNS 。 你不应该在你的应用程序或服务器配置参考原料第三方系统的IP地址。
你可以使用弹性IP更改IP地址是:没有使用C#代码:
var associateRequest = new AssociateAddressRequest
{
PublicIp = your Elastic Ip,
InstanceId = Your Instance Id Which You Assign
};
amazonEc2Client.AssociateAddress(associateRequest);
之后DeAssociate它。
var disAssociateRequest = new isassociateAddressRequest(publicIp.ElasticIpAddress1);
AmazonEc2Client.DisassociateAddress(your Elastic Ip);
你的公网IP将改变