gpt4 book ai didi

amazon-web-services - AWS Cloudformation 使用内部 IP 地址进行通信

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

我正在尝试使用 AWS Cloudformation 创建 Web 应用程序。这个特定的应用程序将有 3 个实例(Web 服务器、应用程序服务器、RDS 数据库)。我希望这些实例能够相互交谈。例如,Web 服务器应与 App 服务器通信,App 服务器应与 RDS 数据库通信。

我不明白如何配置服务器以便它们知道彼此的 IP 地址。我认为有 3 种方法可以做到这一点 - 但我不确定其中哪一种实际上可能或可行:

  1. 我可以在堆栈创建期间分配固定的私有(private) IP 地址(例如 192.168.0.2 等) - 这样我就可以预先知道每个实例的 IP 地址
  2. 我可以等待 AWS Cloudformation 返回所创建实例的 IP 地址,然后手动调整我的代码以使用这些 IP 地址进行通信
  3. 我可以在堆栈创建过程中以某种方式获取所创建实例的 IP 地址,并将其作为参数存储在我创建的下一个实例中(不确定 Cloudformation 是否允许这样做?)

哪种设置方式最好?另外,请分享一些有关如何在 Cloudformation 中执行此操作的详细信息。

最佳答案

解决方案是将您的 Web 服务器和应用程序服务器放置在 ELB(负载均衡器)后面。这样,您的 Web 服务器将使用 ELB 的 URL(而不是应用服务器的 IP)与应用服务器进行通信。应用服务器可以通过 RDS 实例的端点(同样是一个 URL)与 RDS 实例进行通信。

假设您将基础架构分为 3 个 CloudFormation 堆栈:RDS 数据库、应用服务器和 Web 服务器。 RDS 堆栈将通过 CloudFormation 输出功能公开 RDS 实例。该端点将依次用作应用程序服务器堆栈的 CloudFormation 参数。您可以将 RDS 端点插入应用程序服务器 LauchConfiguration 的 UserData 字段中,以便在启动时,您的应用程序服务器将知道 RDS 实例的端点。最后,您的应用程序服务器堆栈将公开应用程序服务器的 ELB 端点(再次使用 CloudFormation 输出功能)。使用相同的方法,您的应用程序服务器的 ELB 的 URL 将被注入(inject)并由您的 Web 服务器堆栈使用。

顺便说一句,使用自动缩放组来监督您的服务(Web 服务器、应用服务器)也是一个好主意。您的实例很可能会因您无法控制的因素而终止。在这种情况下,您可能希望 Autoscaling 组启动一个全新的实例并将其放置在您的 ELB 后面。

关于amazon-web-services - AWS Cloudformation 使用内部 IP 地址进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42649802/

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