AWS Cloudformation 使用内部 IP 地址进行通信
AWS Cloudformation communicating using internal IP addresses
我正在尝试使用 AWS Cloudformation 创建 Web 应用程序。这个特定的应用程序将有 3 个实例(Web 服务器、应用程序服务器、RDS 数据库)。我希望这些实例能够相互交谈。比如Web服务器要和App服务器对话,App服务器要和RDS数据库对话。
我不明白如何配置服务器以便它们知道彼此的 IP 地址。我认为有 3 种方法可以做到这一点 - 但我不确定其中哪一种是现实可行的:
- 我可以在堆栈创建期间分配一个固定的私有 IP 地址(例如 192.168.0.2 等)——这样我就可以预先知道每个实例的 IP 地址
- 我可以等待 AWS Cloudformation return 创建的实例的 IP 地址,然后手动调整我的代码以使用这些 IP 地址进行通信
- 我可以在堆栈创建过程中以某种方式获取已创建实例的 IP 地址,并将其作为参数存储在我创建的下一个实例中(不确定 Cloudformation 是否允许这样做?)
哪种设置方式最好?另外,请分享一些关于我如何在 Cloudformation 中执行此操作的详细信息。
一个解决方案是将您的 Web 服务器和应用程序服务器放在 ELB(负载平衡器)后面。这样,您的 Web 服务器将使用 ELB 的 URL(而不是应用服务器的 IP)与应用服务器通信。应用服务器可以通过 RDS 实例的端点(同样是 URL)与 RDS 实例通信。
假设您将基础架构分为 3 个 CloudFormation 堆栈:RDS 数据库、应用程序服务器和 Web 服务器。 RDS 堆栈将通过 CloudFormation 输出功能公开 RDS 实例。该端点将依次用作应用程序服务器堆栈的 CloudFormation 参数。您可以在应用服务器 LauchConfiguration 的 UserData 字段中插入 RDS 端点,以便在启动时,您的应用服务器将知道 RDS 实例的端点。最后,您的应用服务器堆栈将公开应用服务器的 ELB 端点(再次使用 CloudFormation 输出功能)。使用相同的方法,您的应用程序服务器的 ELB 的 URL 将被注入并由您的 Web 服务器堆栈使用。
附带说明一下,使用自动缩放组监督您的服务(Web 服务器、应用程序服务器)也是一个好主意。您的实例很可能会因您无法控制的因素而终止。在这种情况下,您会希望 Autoscaling 组启动一个全新的实例并将其放在您的 ELB 后面。
我正在尝试使用 AWS Cloudformation 创建 Web 应用程序。这个特定的应用程序将有 3 个实例(Web 服务器、应用程序服务器、RDS 数据库)。我希望这些实例能够相互交谈。比如Web服务器要和App服务器对话,App服务器要和RDS数据库对话。
我不明白如何配置服务器以便它们知道彼此的 IP 地址。我认为有 3 种方法可以做到这一点 - 但我不确定其中哪一种是现实可行的:
- 我可以在堆栈创建期间分配一个固定的私有 IP 地址(例如 192.168.0.2 等)——这样我就可以预先知道每个实例的 IP 地址
- 我可以等待 AWS Cloudformation return 创建的实例的 IP 地址,然后手动调整我的代码以使用这些 IP 地址进行通信
- 我可以在堆栈创建过程中以某种方式获取已创建实例的 IP 地址,并将其作为参数存储在我创建的下一个实例中(不确定 Cloudformation 是否允许这样做?)
哪种设置方式最好?另外,请分享一些关于我如何在 Cloudformation 中执行此操作的详细信息。
一个解决方案是将您的 Web 服务器和应用程序服务器放在 ELB(负载平衡器)后面。这样,您的 Web 服务器将使用 ELB 的 URL(而不是应用服务器的 IP)与应用服务器通信。应用服务器可以通过 RDS 实例的端点(同样是 URL)与 RDS 实例通信。
假设您将基础架构分为 3 个 CloudFormation 堆栈:RDS 数据库、应用程序服务器和 Web 服务器。 RDS 堆栈将通过 CloudFormation 输出功能公开 RDS 实例。该端点将依次用作应用程序服务器堆栈的 CloudFormation 参数。您可以在应用服务器 LauchConfiguration 的 UserData 字段中插入 RDS 端点,以便在启动时,您的应用服务器将知道 RDS 实例的端点。最后,您的应用服务器堆栈将公开应用服务器的 ELB 端点(再次使用 CloudFormation 输出功能)。使用相同的方法,您的应用程序服务器的 ELB 的 URL 将被注入并由您的 Web 服务器堆栈使用。
附带说明一下,使用自动缩放组监督您的服务(Web 服务器、应用程序服务器)也是一个好主意。您的实例很可能会因您无法控制的因素而终止。在这种情况下,您会希望 Autoscaling 组启动一个全新的实例并将其放在您的 ELB 后面。