我们有一个多租户产品,每个客户都有自己的子域(customer1.app.com、customer2.app.com、customer3.app.com)。此外,每个客户都有自己的专用 VM。目前,所有 VM 都托管在同一个数据中心,但出于监管合规性和其他业务原因,我们预计未来某些客户的 VM 将托管在另一个数据中心(其他国家/地区)。目前,每个 VM(以及每个客户)都有一个专用 IP,然后每个子域都指向该专用 IP 地址。然而,随着我们的扩展,我们发现这种方法不再合适,因此我们打算引入 HAProxy 作为负载均衡器,它将根据子域路由到适当的 VM。
由于目前所有虚拟机都位于同一数据中心的同一网络中,因此可以将 LB 配置为路由到每个虚拟机的私有 IP,因此不需要专用的公共 IP。
在没有为每个虚拟机提供专用公共 IP 地址的情况下,路由到其他 DC 中托管的虚拟机的最佳解决方案是什么?
下面是一张说明地形的图表:
答案1
我建议每个数据中心至少使用一个公共 IP 和负载均衡器。如果您为每个客户端设置了单独的子域和虚拟机,则只需跟踪哪个客户端/子域托管在哪个数据中心,并将 DNS 指向适当的负载均衡器。
我不会尝试在多个数据中心使用单个负载均衡器:这会增加网络延迟,并使所有客户端都依赖于主数据中心的工作,从而引入单点故障。