解决方案AWS EC2实例的本地IP变化(Solution for local ip changes

2019-07-29 13:03发布

亚马逊只给你静态的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/

Answer 1:

股票的答案是:

  1. 使用AWS VPC所以你必须在实例寻址完全控制
  2. 使用EC2实例之间的通信时,使用弹性IP地址,这将解决该实例的本地地址(而不是公共的,正如你所期望)


Answer 2:

我偶然发现了第三个选项。 有EC2-SSH由Instragram乡亲。 这是你在全球安装,并通过标签的名字可以让你既查询您的EC2实例的公共DNS,也蟒蛇shell脚本ssh通过标签名称为好。

它的文档几乎是不存在。 我写下来下面安装步骤:

要安装EC2-SSH:

  1. sudo yum install python-boto (Python包装的EC2 API)
  2. 混帐克隆https://github.com/Instagram/ec2-ssh
  3. 在您的〜/ .bash_profile中设置您的AWS访问密钥和密码,如下所示:

    出口AWS_ACCESS_KEY_ID = XYZ123

    出口AWS_SECRET_ACCESS_KEY = XYZ123

  4. cdbin回购的文件夹中,将有两个文件:

    ec2-hostec2-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 。



Answer 3:

我是在同样的情况一次。 我仍然不具备专业知识妥善解决这个问题。 我的丑解决方案是使用ELB没有真正的负载平衡,但只是端点。

但我认为一个好的解决方案可以通过使用获得AWS VPC 。



Answer 4:

下面是另一个Ruby解决方案从实例在AWS上更新路由53 DNS 。 你不应该在你的应用程序或服务器配置参考原料第三方系统的IP地址。



Answer 5:

你可以使用弹性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将改变



文章来源: Solution for local ip changes of AWS EC2 instances