Amazon ec2 AWS EC2实例的本地ip更改解决方案

Amazon ec2 AWS EC2实例的本地ip更改解决方案,amazon-ec2,amazon-web-services,Amazon Ec2,Amazon Web Services,Amazon只提供一定数量的静态ip地址,当机器重新启动时,每个EC2实例的本地(私有)ip可以更改。这使得创建一个稳定的平台,在这个平台上EC2实例相互依赖,据我所知,使用起来非常困难 我在网上搜索了很多关于各种解决方案的信息,到目前为止,除了在EC2上分配一个弹性ip地址之外,我还没有找到任何合理的方法,即使它不是面向公众的。有没有人有任何其他好的想法,实际上很容易执行 谢谢 请参见AWS团队对问题的回答: EC2实例的内部IP地址通过DHCP分配。在…上 实例关闭,或者当DHCP租约到期时

Amazon只提供一定数量的静态ip地址,当机器重新启动时,每个EC2实例的本地(私有)ip可以更改。这使得创建一个稳定的平台,在这个平台上EC2实例相互依赖,据我所知,使用起来非常困难

我在网上搜索了很多关于各种解决方案的信息,到目前为止,除了在EC2上分配一个弹性ip地址之外,我还没有找到任何合理的方法,即使它不是面向公众的。有没有人有任何其他好的想法,实际上很容易执行

谢谢

请参见AWS团队对问题的回答:

EC2实例的内部IP地址通过DHCP分配。在…上 实例关闭,或者当DHCP租约到期时,IP地址为 返回到通用EC2 DHCP池中的其他可用地址 实例

无法保证您将获得相同的DHCP 跨重新启动的地址


编辑:答案是使用亚马逊专有网络。除了少量的额外设置外,没有任何缺点,因为现在您可以控制路由器。这是一个与AWS上普通旧EC2实例不同的世界。事实上,VPC将在默认情况下为所有未来的AWS设置启用是非常必要的。有关更多信息,请参阅本文:

我曾经遇到过同样的情况。我仍然没有足够的专业知识来解决这个问题。我丑陋的解决方案是使用elb,而不是真正用于负载平衡,只是用于端点

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

基本答案如下:

  • 使用此选项可以完全控制实例寻址
  • 使用弹性IP,当用于EC2实例之间的通信时,它将解析为实例的本地地址(而不是您期望的公共地址)

  • 我偶然发现了第三种选择。这是Instragram的人写的。这是一个全局安装的python shell脚本,允许您通过标记名查询ec2实例的公共dns,也可以通过标记名在中查询
    ssh

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

    要安装ec2 ssh,请执行以下操作:

  • sudo-yum-install-python-boto
    (用于ec2 api的python包装器)
  • git克隆
  • 在~/.bash_配置文件中设置AWS访问密钥和密码,如下所示:

    导出AWS\u访问\u密钥\u ID=XYZ123

    导出AWS_SECRET_ACCESS_KEY=XYZ123

  • cd
    进入回购协议的
    bin
    文件夹,将有两个文件:

    ec2主机
    ec2 ssh

  • 将它们复制到您的
    /usr/bin
    /usr/local/bin

    现在你可以做一些很棒的事情,比如:

    $ ec2-host ZenWorker
    ec2-999-xy-999-99.compute-1.amazonaws.com
    

    请注意,在常规shell脚本中,可以使用backticks调用这些全局工具。我已经对这些调用进行了计时,使用EC2实例需要0.25到0.5秒,所以这是唯一的缺点。也许您可以忍受这种延迟,或者利用公共DNS仅在重新启动时更改实例的事实来制定解决方案


    请注意,这两个程序都是命令行脚本,使用它们不需要任何Python知识。对于PHP爱好者,或者那些希望在不知道更改的公共DNS的情况下轻松访问
    scp
    文件的人,您可以签出。

    这里是另一个Ruby解决方案。您不应在应用程序或服务器配置中引用原始第三方系统IP地址。

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

    谢谢gabrtv。请注意,AWS VPC不适用于微实例。我正在使用Kue创建一个酒吧/酒吧工作人员队列,购买所有小实例(成本是原来的4倍)是无法管理的。看看其他的解决方案。此外,您可以拥有的弹性IP数量有限。我们的限额似乎是10。@MauvisLedford我相信限额是从5开始的。但是,您可以在这里请求更具弹性的IP:这里有一个更新,VPC现在可以使用微实例,我有一个可以使用两个实例的VPC原型。一个可通过弹性ip公开寻址,另一个仅使用本地ip,且只能在我的专用网络内进行通信。这才是真正的出路。使用弹性IP,当用于EC2实例之间的通信时,它将解析为实例的本地地址(而不是您所期望的公共地址)。主要警告:只有使用公共DNS名称时,它才会解析为这样,不是公共IP地址。这可以加起来至少18.60美元每月+0.008美元每GB数据处理。谢谢你讨论这个选择。将调查亚马逊虚拟私有云。是否有关于如何配置亚马逊专有网络的教程?米兰达:看看这些@毛维斯,VPC要多少钱?
            var disAssociateRequest = new isassociateAddressRequest(publicIp.ElasticIpAddress1);
      AmazonEc2Client.DisassociateAddress(your Elastic Ip);