gpt4 book ai didi

amazon-web-services - 协调 VPC 中的多个虚拟机

转载 作者:行者123 更新时间:2023-12-03 07:18:19 25 4
gpt4 key购买 nike

我正在使用部署 3 个 EC2 虚拟机的 CloudFormation 堆栈。每个都需要配置为能够通过 IP 或主机名发现其他 2 个,这并不重要。

亚马逊的私有(private)内部 DNS 似乎非常无用,因为它基于 IP 地址,而在配置时无法得知该地址。因此,我无法仅使用我在 CloudFormation 堆栈时所知道的信息来配置节点。

据我所知,我有几个选择。在我看来,所有这些都比必要的更复杂 - 还有其他选择吗?

  1. 使用 Route53,设置私有(private) DNS 托管区域,为连接到其网络接口(interface)的每个虚拟机创建一个条目,然后通过命名这些条目,我应该提前知道分配给它们的私有(private) DNS .
  2. 启动另一项服务,让 3 个虚拟机在初始化后“回拨”,然后向它们报告哪些虚拟机已准备就绪。
  3. 想出一些其他基于虚拟机的 shell 魔法,并做一些愚蠢的事情,例如使用 nmap 扫描本地子网以查找某个端口上事件的计算机。

在我使用过的其他云(如 GCP)上,当您配置虚拟机时,它会根据部署模板中的资源名称获取内部 DNS 名称,这使得此类问题变得极其微不足道。天哪,我希望我有那个。

这里最好的方法是什么? (1) 看起来很简单,但要求使用我的堆栈的人拥有他们并不真正需要的额外权限。 (2) 是额外的资源使用,有点浪费。 (3) 看起来……很愚蠢。

最佳答案

Use Route53, set up a private DNS hosted zone, make an entry for each of the VMs which is attached to their network interface, and then by naming the entries

这是最好的解决方案,但还有更简单的实现。

  1. 为每台机器指定一个“资源名称”。
  2. 在 CloudFormation 堆栈中,创建一个 AWS::Route53::RecordSet 资源,该资源通过其逻辑 ID 将基于该“资源名称”的主机名与 EC2 实例关联起来。
  3. 在您的应用内,使用基于资源名称的主机名来访问其他实例。

另一种方法可能是使用应用程序负载均衡器,将您的应用程序实例置于不同的目标组中。然后,各个 EC2 实例通过 ALB 发送所有流量,因此您只需传播一个引用(并且它可以存储在 EC2 实例的 UserData 中)。但这还有很多工作要做。

这假设您已经设置了私有(private)托管区域。

关于amazon-web-services - 协调 VPC 中的多个虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49072062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com