負載平衡和虛擬化的最佳實踐
我在這裡進行了一些搜尋,但沒有找到任何與我相關的內容。我會盡量簡短。
我目前有 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。
我的問題是:
- 我應該在 3 中的每個 Web 伺服器上執行 MySQL 從站嗎?我的伺服器只有大約 900GB,所以空間是一個問題。
- 如果沒有,我是否應該在同一個 VMware 中使用單獨的 MySQL 從故障轉移伺服器,以防 #2 發生問題?
- 我會將主伺服器同步備份到異地位置,但有沒有比 NFS 更好的方法讓每個 Web 伺服器讀取和寫入這些數據。使用集群文件系統會導致空間問題,對嗎?
- 我應該使用VPS進行負載平衡並使用Apache自己的LB嗎?對於 Web 應用程序來說,這比使用 pfSense 的 LB 更好嗎?
- 我的想法還有其他弱點嗎?我將使用它作為我的主伺服器,但我將在另一個位置設置相同的故障轉移伺服器,並在需要時使用 DNS 伺服器重新路由流量(自動或手動)。
我不是在這裡建造諾克斯堡,但我需要比現在更好的冗餘,而且我希望盡可能“正確”地做到這一點。非常感謝任何幫助/評論!
- 多層網路拓撲意味著您永遠不應該在您的 Web 伺服器上執行 MySQL。如果您需要冗餘或負載平衡的 MySQL 伺服器,則創建 db1、db2、db3 等。不要創建比您真正需要的更多的從屬伺服器,因為複制是標準 MySQL 的全部或全部處理。
- 我通常做的是 MASTER-MASTER 複製。由於關鍵衝突風險,通常不建議這樣做,但我編寫了一些輔助伺服器以只讀模式執行的腳本以避免寫入。因此,如果伺服器當機,很容易翻轉 read_only 開關並開始接受寫入。
- NFS 很好;只需進行通常的性能調整和測試。
- 看看 haproxy 進行 Apache/HTTP 和 TCP 負載平衡。甚至適用於 MySQL。. 您可以在 VM 中執行 haproxy。
- 擁有冗餘虛擬機很棒,但在單個物理機上執行仍然是一個弱點。擁有 10 個相同的 Linux VM 競爭資源也可能是一個弱點。
最後評論:ESXi 很棒(不要誤會我的意思),但我不會在這種情況下使用它。看看像OpenVZ這樣的容器化系統。Proxmox為它提供了一個很棒的使用者界面。性能會明顯更好;每個 VM 都可以使用所有 RAM 和 CPU 核心。(當然,除非你限制它。)。OpenVZ 當然只適用於 Linux。但是在 Xserve 上執行的任何 web 應用程序也應該在 Linux 容器中執行?