我正在尝试使用AWS Cloudformation创建Web应用程序。这个特定的应用程序将有3个实例(Web服务器,App服务器,RDS数据库)。我希望这些实例能够相互通信。例如,Web服务器应与App服务器通信,App服务器应与RDS数据库通信。
我无法理解如何配置服务器以便彼此了解彼此的IP地址。我认为有三种方法可以做到这一点 - 但我不确定哪些是现实可行或可行的:
哪种设置方法最好?另外,请分享一些关于如何在Cloudformation中执行此操作的详细信息。
答案 0 :(得分:1)
解决方案是将您的Web服务器和App服务器置于ELB(负载均衡器)之后。这样,您的Web服务器将使用ELB的URL(而不是应用服务器的IP)与应用服务器通信。应用服务器可以通过RDS实例的端点(也是URL)与RDS实例通信。
假设您将基础架构分为3个CloudFormation堆栈:RDS数据库,应用服务器和Web服务器。 RDS堆栈将通过CloudFormation输出功能公开RDS实例。该端点将反过来用作App服务器堆栈的CloudFormation参数。您可以在App server LauchConfiguration的UserData字段中插入RDS端点,以便在启动时,您的App服务器将知道RDS实例的端点。最后,您的App服务器堆栈将公开App服务器的ELB端点(再次使用CloudFormation输出功能)。使用相同的配方,您的Web服务器堆栈将注入并使用App服务器ELB的URL。
作为旁注,使用Autoscaling组监督您的服务(Web服务器,应用服务器)也是一个好主意。您的实例很可能会被您无法控制的因素终止。在这种情况下,您希望Autoscaling组启动一个全新的实例并将其放在ELB后面。