Vmware-Esxi

負載平衡和虛擬化的最佳實踐

  • May 6, 2011

我在這裡進行了一些搜尋,但沒有找到任何與我相關的內容。我會盡量簡短。

我目前有 OSX 伺服器,其中三個。我正在轉向虛擬化環境以實現冗餘,並且因為 Apple 取消了 Xserve。我之前沒有虛擬化方面的經驗,但我學得很快,我從 1997 年就開始管理伺服器

因此,新數據中心中的新專用伺服器。Kickass 硬體,安裝了 VMware ESXi,在其中,我創建了兩個網路,“VM Network”和“Switch”。“VM Network”連接到物理網卡,“Switch”是一個虛擬交換機。

然後我創建了一個名為“FW”的 VPS,它有兩個虛擬 NIC,VMware 中的每個網路一個,在這個虛擬機上安裝了 pfSense,並將“真實”NIC 與內部交換機橋接。完畢。

然後我打算在“Switch”網路上創建我的​​資源池並讓 pfSense 對其進行負載平衡。

我的 Web 應用程序目前包含在一個包含大約 300GB 數據的目錄中,我的數據庫大約多出 50GB。它們目前在 Xserve 1 和 Xserve 2 上。

我目前的思考過程讓我在這些 VPS 機器上:

1. 主伺服器 (10.0.0.10) 這包含兩個虛擬硬碟驅動器,一個用於 Linux,一個用於我的 Web 應用程序。較大的安裝在 Linux 中作為“/Atlas”(我的 CMS 的名稱),然後被 NFS 導出。VPS 有 2GB 的 RAM 和 2 個 CPU

2. 數據庫伺服器(10.0.0.11) 這是主數據庫伺服器

3. Web 伺服器 (10.0.0.20 - 10.0.0.30) 十台 Linux 伺服器,每台都有 5GB HD、5GB RAM 和 4 個 CPU。每個都從 #1 掛載 NFS 導出,並且可以讀取和寫入我的 Atlas。

我的問題是:

  1. 我應該在 3 中的每個 Web 伺服器上執行 MySQL 從站嗎?我的伺服器只有大約 900GB,所以空間是一個問題。
  2. 如果沒有,我是否應該在同一個 VMware 中使用單獨的 MySQL 從故障轉移伺服器,以防 #2 發生問題?
  3. 我會將主伺服器同步備份到異地位置,但有沒有比 NFS 更好的方法讓每個 Web 伺服器讀取和寫入這些數據。使用集群文件系統會導致空間問題,對嗎?
  4. 我應該使用VPS進行負載平衡並使用Apache自己的LB嗎?對於 Web 應用程序來說,這比使用 pfSense 的 LB 更好嗎?
  5. 我的想法還有其他弱點嗎?我將使用它作為我的主伺服器,但我將在另一個位置設置相同的故障轉移伺服器,並在需要時使用 DNS 伺服器重新路由流量(自動或手動)。

我不是在這裡建造諾克斯堡,但我需要比現在更好的冗餘,而且我希望盡可能“正確”地做到這一點。非常感謝任何幫助/評論!

  1. 多層網路拓撲意味著您永遠不應該在您的 Web 伺服器上執行 MySQL。如果您需要冗餘或負載平衡的 MySQL 伺服器,則創建 db1、db2、db3 等。不要創建比您真正需要的更多的從屬伺服器,因為複制是標準 MySQL 的全部或全部處理。
  2. 我通常做的是 MASTER-MASTER 複製。由於關鍵衝突風險,通常不建議這樣做,但我編寫了一些輔助伺服器以只讀模式執行的腳本以避免寫入。因此,如果伺服器當機,很容易翻轉 read_only 開關並開始接受寫入。
  3. NFS 很好;只需進行通常的性能調整和測試。
  4. 看看 haproxy 進行 Apache/HTTP 和 TCP 負載平衡。甚至適用於 MySQL。. 您可以在 VM 中執行 haproxy。
  5. 擁有冗餘虛擬機很棒,但在單個物理機上執行仍然是一個弱點。擁有 10 個相同的 Linux VM 競爭資源也可能是一個弱點。

最後評論:ESXi 很棒(不要誤會我的意思),但我不會在這種情況下使用它。看看像OpenVZ這樣的容器化系統。Proxmox為它提供了一個很棒的使用者界面。性能會明顯更好;每個 VM 都可以使用所有 RAM 和 CPU 核心。(當然,除非你限制它。)。OpenVZ 當然只適用於 Linux。但是在 Xserve 上執行的任何 web 應用程序也應該在 Linux 容器中執行?

引用自:https://serverfault.com/questions/267167