同一主机上的相同负载平衡虚拟机

同一主机上的相同负载平衡虚拟机

各位牛仔和女牛仔们,

如果我有一个虚拟机(KVM 或 ESXi)在 Apache 上提供静态内容,并在 Tomcat 上提供视频流 Web 应用程序,那么在同一套设备上在同一虚拟机上运行多个实例并进行负载平衡是否合乎逻辑?在我看来,这在概念上似乎毫无意义,因为当接受相同的传入 Web 请求时,它们只会共享原本专用于单个实例的资源,但是我可以想象通过使用 2、3 个或更多相同的虚拟机来利用更高容量的场景,可能沿着 tomcat 或类似系统中的线程性能的思路,但是我想到任何原因都往往意味着糟糕的编码和变通方法,而不是最佳实践设计。这里的示例硬件是一个功能相当强大的盒子,例如 HP DL380,它有 8 或 12 个内核和 64GB RAM,可以以某种方式服务大约 4000 个并发媒体连接。

更新:就冗余和修补等其他好处而言,这些都不是问题,因为这种情况可能会在最多 100 台物理机器上复制,所有机器都实现负载平衡。

更新 2:我还担心能否从外部 LB 对多个相同的服务进行负载平衡。如果您正在从 LB 监控连接延迟等,那么应该是 2 个虚拟机 - 1 个有 5 个连接,一个有 500 个应该实际上,它们似乎功能相同,因为它们都从同一个池中获取资源(没有 VM CPU 固定等)。 敲击一个盒子也会使另一个安静的盒子瘫痪,因此会使连接分布非常不正常和混乱。

谢谢

克里斯

答案1

这样做的唯一原因是:(a) 您在修补等操作方面获得了运营优势,或者 (b) 您发现虚拟机管理程序无法以线性方式将 vCPU 映射到实际 CPU(即 2 x 4 vCPU 客户机比 1 x 8 vCPU 客户机获得更好的吞吐量)。不过,您只能通过压力或实际生产负载来证明这一点。

答案2

鉴于虚拟机只能拥有有限数量的资源(根据平台不同,为 4-8 个 vCPU),如果您希望 Web 服务器能够访问主机硬件的所有资源,那么您需要运行多个客户机。

此外,如果您有多个客人,您可以让他们离线进行修补,而不会中断对最终用户的服务。

相关内容