在数据库服务器虚拟机上安装负载平衡器

在数据库服务器虚拟机上安装负载平衡器

我的网站布局简单,负载均衡器位于 3 个请求数据库的应用服务器前面。我有 4 个可用的 VM,3 个 VM 用于 3 个应用服务器,1 个 VM 用于数据库。将负载均衡器安装在与数据库相同的 VM 上是否明智?还是应该安装在完全独立的 VM 上?问题与成本有关。

答案1

由于以下几个原因,将 LB 与数据库安装在同一台 VM 上是不明智的:

  1. 网络管道 - LB 传统上是应用程序代理,旨在作为应用程序的公共接口。这通常意味着某种形式的网络隔离。数据库服务器传统上不应接受公共流量(使用公共流量来处理任何客户端流量)。
  2. 性能 - LB 虽然在较小的环境中影响不大,但繁忙的应用程序会导致客户端流量路由和数据库调用之间的资源争用。由于系统试图处理客户端流量决策和数据库访问,您可能会遇到潜在的速度缓慢。
  3. 安全性 - 如果应用程序设计为半安全,LB 不仅会充当代理,还会充当基本的安全前端,终止甚至桥接 SSL 流量。您不会希望终止与数据库服务器的公共连接。
  4. 故障排除。如果尝试排除 LB 问题,而它与数据库服务器使用相同的接口,那么由于客户端 => Web => 数据库的路由模式很奇怪,因此这会让您感到十分困惑。

请注意,如果这只是为了测试,LB 应该是一台 VM,并且 Web/数据库可以放在一个盒子上。

如果这是用于暂存或生产,请使用单独的 VM。如果您有 LB 问题,则重新启动整个数据库和应用程序是没有意义的。

答案2

这根本不是一个好主意。你可以在之前的帖子中找到原因,我只会添加扩展和故障转移问题。我认为你应该重新考虑你的架构,考虑 SPOF,并将其设置为:

Internet ----> Virtual IP ----> LB1 \_____/  APP1 \    /- DB1
                          \---> LB2 /     |- APP2  >--<
                                          \  APP3 /    \- DB2

LB1 和 LB2 是使用虚拟 IP 进行故障转移设置的负载均衡器(您可以使用 Keepalived 来实现这一点),因此当 LB1 死机时,LB2 会自动获得 VIP,一切正常。您还应该有复制的 DB 设置,因此当其中一个 DB 服务器死机时,应用程序将使用另一个。LB 还可以用作防火墙,并且完全只是“面向 Internet 的东西”,APP 和 DB 服务器根本不需要有公共 IP。

相关内容