Amazon仅为您提供一定数量的静态IP地址,并且每台EC2实例的本地(私有)ips可以在重新启动计算机时更改。这使得创建一个稳定的平台,据我所知,EC2实例依赖于彼此非常难以使用。
我已经在网上搜索了很多关于各种解决方案的内容,到目前为止,除了在EC2上分配弹性IP地址外,没有任何合理的解决方案,即使它不是公开的。有没有人有任何其他好的想法,实际上很容易执行?
谢谢!
请参阅AWS团队对问题Static local 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/
答案 0 :(得分:16)
股票答案是:
答案 1 :(得分:13)
我偶然发现了第三种选择。 Instragram人员有ec2-ssh。它是一个全局安装的python shell脚本,允许您通过标记名称查询ec2实例的公共dns,也可以通过via标记名称查询ssh
。
它的文档几乎不存在。我已经写下了下面安装的步骤:
安装ec2-ssh:
sudo yum install python-boto
(ec2 api的python包装器)在您的〜/ .bash_profile中设置您的AWS访问密钥和密码,如下所示:
导出AWS_ACCESS_KEY_ID = XYZ123
导出AWS_SECRET_ACCESS_KEY = XYZ123
cd
进入repo的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脚本中,您可以使用反引号来调用这些全局工具。我已经对这些调用进行了定时,并且使用EC2实例需要0.25到0.5秒,所以这确实是唯一的缺点。也许您可以忍受延迟,或者使用公共DNS仅在重新启动时更改实例以解决问题的事实。
请注意,这两个程序是命令行脚本,您不需要任何Python知识就可以使用它们。对于PHP粉丝,或者想要在不知道更改公共DNS的情况下轻松访问scp
文件的人,您可以结帐ec2dns。
答案 2 :(得分:1)
我曾经遇到过同样的情况。我仍然没有足够的专业知识来妥善解决它。我丑陋的解决方案是使用elb实际上不是用于负载平衡,而是仅用于端点。
但我认为使用aws vpc可以获得一个好的解决方案。
答案 3 :(得分:1)
这是Updating Route 53 DNS from instance on AWS的另一个Ruby解决方案。您不应在应用程序或服务器配置中引用原始第三方系统IP地址。
答案 4 :(得分:0)
您可以使用Elastic Ip更改IP地址: 您可以使用C#代码:
var associateRequest = new AssociateAddressRequest
{
PublicIp = your Elastic Ip,
InstanceId = Your Instance Id Which You Assign
};
amazonEc2Client.AssociateAddress(associateRequest);
在。
var disAssociateRequest = new isassociateAddressRequest(publicIp.ElasticIpAddress1);
AmazonEc2Client.DisassociateAddress(your Elastic Ip);
您的公共IP将改变