使用 Vsphere 和 Apache 負載平衡進行集群
我正在尋找 Vsphere 來自動對我的 apache Web 伺服器和 mysql 伺服器進行負載平衡,但這真的能完成這項工作嗎?
我知道它說它會自動負載平衡,但實際上並不確定它是否完全意味著我想要實現的目標。
有沒有更簡單的方法在虛擬機中設置 php-apache 和 mysql 集群?
或者有沒有關於分群的指南?(我試過Google搜尋但運氣不佳)
任何有助於理解/設置虛擬機中的集群和負載平衡的幫助。
vSphere 的作用:
- 集群 - DRS = 在多個主機上執行多個虛擬機,vSphere 將自動決定移動正在執行的虛擬機的主機
- 高可用性 = 在多台主機上並行執行來賓 - 如果一台出現故障 - 第二台確保服務可用性
MySQL 集群 - 不容易,這裡無法描述細節,但一般來說:
- 取決於數據庫引擎(MyISAM、InnoDB、XtraDB)
- 非常有限
- 共享儲存 - 幾乎不可能
- 通過複製更容易實現單寫多讀節點
Apache/web 負載均衡,優化配置:
網路級別 - TCP 負載平衡,至少需要 1 個平衡器節點用於正常操作,2 個用於 HA(主動備份)。通過Linux 虛擬伺服器 (LVS)核心模組實現:
- Piranha web GUI(RHEL 和 Fedora)(足夠了,易於實現)
- 保活
- 超猴
- Linux-HA
作業系統級別 - 網路配置、網關、ARP 配置 (LVS-DR)、將全域 IP 分配給本地主機 (127.0.0.1 - LVS-NAT)。
應用層
- Apache 級別 - 沒有任何變化,只需讓它在埠 80 上執行,這樣應用程序就可以看到自己(環回請求)
- PHP 級別 - 會話、tmp 也必須在節點之間共享
- 使用 mysql-proxy 在 socket 和埠監聽模式下執行,將請求轉發到 mysql 伺服器
儲存級別 - Web 伺服器之間的數據必須以非常快的速度共享,例如 GlusterFS
LVS 的性能相當高——它是核心級的,雙核 1.6 GHz 可以在 NAT 模式下執行超過千兆位,並防止許多網路級問題。虛擬 IP 將由 LB 伺服器在 L2 上獲取,請求將由核心轉發到可能具有相同 IP (LVS-DR) 或具有 NAT (LVS-NAT) 的伺服器 IP。LVS-DR 需要在伺服器端進行特定的 arp 配置,因為所有伺服器都將使用相同的 IP 執行。LVS-NAT 實現更容易,您可以將所需的一切負載平衡到任何伺服器。要正常使用 LVS-NAT,請使用核心 2.6.37 或更高版本。Balancer 也可以充當網關和防火牆。必須設置連接持久性以避免一些問題(請參閱 LVS 文件),並且必須將核心 TCP 超時設置為最小值。您還必須編寫腳本來檢查主機可用性 - 如果是的話 s 工作正常與否。嘗試在 Web 節點上進行 100% 相同的配置。
在全球範圍內 - 這是非常好的、非常有效和最佳的架構,但之後需要進行一些調整。瓶頸是儲存響應和mysql。php-apache HA/Balance 執行良好。
Squid、mod_proxy_balancer、HAproxy 等是使用者級應用程序,無效且愚蠢:
- Squid 可用作 HTTP 終止或/和安全過濾器的代理或反向代理(最好使用 Varnish)。您可以在每個 Web 伺服器上添加它並在內部轉發請求以隱藏您的 Web 伺服器資訊等,此外還需要 mod_extract_forwarded 以保持源 IP 被 Web 伺服器和應用程序正確辨識。
- mod_proxy_balancer 在這種情況下,它只是另一個“無關 - 我寫了 apache 模組”的事情。
- haproxy 是一個非常愚蠢的東西——應用程序監聽埠並向後端發起請求——我討厭它。
您可以使用 RedHat 集群套件並獲得文件共享(GFS2 等)的一些改進,在那裡擁有應用程序 HA,但需要您付出更多努力。
對於平衡器節點 - 我強烈推薦 Fedora 15 或更高版本(更新的核心 - 更好)。對於其他 - 無論你想要什麼,甚至是 Windows(但環回 http 訪問會有一些問題)。
此外,我建議您在儲存網路端使用基於 LACP 的綁定。