【问题标题】:How to get the public DNS address of a second ec2 instance while inside the first instance如何在第一个实例中获取第二个 ec2 实例的公共 DNS 地址
【发布时间】:2014-11-24 10:13:20
【问题描述】:

基于这个问题:

https://unix.stackexchange.com/questions/24355/is-there-a-way-to-get-the-public-dns-address-of-an-instance

我知道如何获取 ec2 实例自己的公共 DNS 地址。我需要的是让这个实例获取第二个 ec2 实例的公共 DNS 实例的方法。

我的想法是我将运行大约 50 个实例,其中一两个将是一个持续运行的 Spot 实例。所有其他工作实例都需要知道当点或主实例的公共 DNS 名称才能在我的应用程序中连接到它。我该怎么做?

另一方面,有没有一种方法可以创建我的 Spot 主实例的备份?万一它失败了,我希望有另一个 Spot 实例立即取代它,但我的 worker ec2 实例必须更新他们关于 Spot 实例的公共 dns 地址的信息。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 dns


    【解决方案1】:

    另一种方法是使用 S3。当 Spot 实例出现时,它将读取自己的公共地址并将其写入 S3 中的存储桶。其他实例将在第一次需要时查找存储桶并使用此值。如果 Spot 实例宕机,worker 会定期轮询存储桶,直到有新的 Spot 实例出现并更新存储桶。

    确保将存储桶设置为仅允许经过身份验证的访问,以便只有您的应用程序可以修改它。

    这种方法具有安全优势,因为虚拟机不需要访问您的 EC2 凭据。他们只需要访问特定的 S3 存储桶。

    【讨论】:

    • 有趣,我假设 Spot 实例会创建自己的存储桶?
    • 取决于你想要完成什么。通常,每个应用程序都有一个固定的存储桶,服务器会将其详细信息作为文件写入存储桶中。让应用程序更容易拥有,因为每个应用程序都可以有一个单独的存储桶。
    【解决方案2】:

    我认为获取其他实例的公共 DNS 的唯一方法是使用 amazon 提供的命令行界面或 Web API。

    您需要的具体命令是 ec2-describe-instances,它提供有关每个实例的公共 DNS 设置的数据。

    http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-DescribeInstances.html

    当然你也可以通过 Web API 做同样的事情:

    http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html

    关于备份,您可以将 Spot 实例映射到 EBS(这是首选),然后进行快照备份。快照备份仍然在亚马逊控制台中手动触发(或再次通过命令行工具和 Web API)。快照应该适合定期备份。

    您还可以使用http://www.skeddly.com/ 之类的服务来自动化您的 EC2 快照备份。

    如果您想备份 Spot 实例的完整 AMI 映像,以便以后从头开始重新创建它,或者从同一个映像创建多个实例等,请转到管理控制台并执行以下操作:

    1. 点击实例
    2. 选择要从中创建 AMI 的实例
    3. 点击“操作”并选择“创建图像”
    4. 设置图片名称等信息并保存

    【讨论】:

    • 啊,如果我从我的一台机器创建一个 AMI 实例,它会包含我的 user_data 引导配置吗?由于我传入了 user_data 操作,目前启动一个实例大约需要 5 分钟。如果我创建一个这样的自定义 AMI,我也可以跳过加载时间吗?
    猜你喜欢
    • 2018-01-02
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2016-12-05
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多