
你好牛仔和女牛仔,
如果我有一個在Apache 上提供靜態內容的虛擬機(KVM 或ESXi),在Tomcat 上有一個視頻流Web 應用程序,那麼在同一套件的同一虛擬機上運行多個實例並對它們進行負載平衡是否存在邏輯?對我來說,這在概念上似乎毫無意義,因為當接受相同的傳入Web 請求時,它們只會共享本來專用於單一實例的資源,但是我可以想像透過使用2 個、3 個或更多實例來利用更高容量的場景相同的虛擬機,可能與 tomcat 內的線程性能等類似,但是我想到的任何原因往往意味著糟糕的編碼和解決方法領域而不是最佳實踐設計。這裡的範例硬體是一個功能相當強大的盒子,例如 HP DL380,具有 8 或 12 個核心和 64GB RAM,以某種方式為大約 4000 個並發媒體連接提供服務。
更新:就冗餘和修補等其他好處而言,這些都不是問題,因為此場景可能會在最多 100 台實體機器上複製,並且全部負載平衡。
Update2:我還擔心從外部 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 伺服器能夠存取主機硬體的所有資源,那麼您將需要執行多個來賓。
此外,如果您有多個訪客,您可以讓他們離線進行修補,而不會中斷對最終用戶的服務。