我需要设计一个跨区域、跨专有网络的架构,我不知道如何限制对我的资源的访问要求是我需要在一个地区运行我的网络应用程序,并在另一个地区中运行我的数据库。这两个服务器都位于专用子网内。该web应用程序连接了一个自动缩放组和负载均衡器。其他区域中的数据库服务器应该只能从此web应用程序访问。我不能使用基于ip的限制,因为负载均衡器的ip会随着时间的推移而变化。我还有什么其他选择?
负载平衡器的IP地址无关紧要,因为负载平衡器仅用于与web服务器的传入连接。
首先,我应该指出让数据库远离应用程序是一个糟糕的体系结构决策,这会降低应用程序的速度如果可能的话,请重新考虑
您没有提供太多信息,所以我将做出以下假设:
- A区专有网络包含:
- 公用子网中的负载平衡器
- 专用子网中的Web服务器
- B区专有网络包含:
- 专用子网中的数据库
在这种情况下,您希望在位于不同区域的不同VPC中的两个专用子网之间进行通信。为此,您可以考虑通过位于每个VPC公共子网中的Amazon EC2实例创建专用VPN连接。这将使用软件VPN,如OpenVPN或OpenSwan。
您还应该考虑如何实现此解决方案的高可用性选项。一个架构良好的VPC会将您的web服务器部署在A区的多个可用区中,您的数据库最好在B区的多AZ配置中(假设您使用的是亚马逊RDS)。同样,您应该将VPN解决方案设计为在出现故障时具有高可用性。
另一种选择是将NAT服务器放置在a区VPC的公用子网中,并配置专用路由表以通过NAT服务器发送流量。这意味着从网络服务器到互联网的流量都将来自与NAT服务器相关联的公共IP地址(而不是负载均衡器)。
但是,数据库位于专用子网中,因此流量无法直接路由到数据库,因此这只是解决方案的一半。然后,它将要求数据库位于公共子网中(具有仅接受来自NAT服务器的连接的安全组),或者要求公共子网中将流量转发到数据库的某种类型的代理服务器。与软件VPN选项相比,这将变得过于复杂。