Apache-2.2

基於 CentOS 的心跳代理

  • January 18, 2010

我正在考慮為 Apache 和 MySQL 設置自動故障轉移。我打算在兩個 Apache 機器和兩個 MySQL 機器前面放置一個小型代理伺服器。Apache 會不時地從 master -> slave rsync 數據,並且 MySQL 將在 Master/Slave 中設置以進行複制。如果發生故障,備份盒可以接管,直到主伺服器重建。

前面的代理伺服器將僅作為帶有某種心跳軟體的交通警察執行(此時我不是在尋找負載平衡)。這樣我就不必擔心在主機出現故障的情況下更改我們的防火牆。Linux-HA是最佳選擇還是有什麼建議?

Linux HA 是一個不錯的工具集。如果您想要簡單,請使用 heartbeat 1;heartbeat 2 用於超過 2 個節點的集群和 XML 配置。對於大多數簡單的 2 節點情況,1 就足夠了。

但是,雖然我同意在您的應用程序前面有一個代理總是一個好主意(執行多個伺服器作為來自一個虛擬伺服器&c),但您所描述的設置聽起來像是引入了一個新的 SPF:代理。

在您的情況下,您可能最好的做法是以主動-主動配置執行兩台伺服器,包括兩者上的完整 Web 服務和完整代理服務(!)。

只需設置 heartbeat 接管三個 IP:一個用於活動 MySQL 伺服器,一個用於活動 Web 伺服器,一個用於活動代理(只有最後一個需要公開)。

然後將代理設置為始終轉到內部“活動 Web 伺服器”IP,並將 Web 伺服器設置為“活動數據庫伺服器”IP。

當您準備好進行負載平衡配置時,您只需放棄 Web 伺服器 IP 的切換,而是將兩個 Web 伺服器都放在代理的後端伺服器組中。

初始設置可能如下所示:

  Server A (Apache on Port 80)   Server A (Apache Port 8080)    Server A MySQL <-----------
             |                \           |                 \        |                      \
Web <-> Public Proxy IP         >-> Shared Private Web IP     >--> Shared Private MySQL IP    | Mysql Synchronization Link
             |                /           |                 /        |                      /
  Server B (Apache on Port 80)   Server B (Apache Port 8080)    Server B MySQL <-----------

然後,當您準備就緒時,您可以無縫地進入真正的負載平衡(如 Web 所述)和 MySQL 集群,而無需使用者可見的更改。

最重要的是:仍然立即將您的應用程序放在代理後面(即使代理“真的”只是相同的伺服器)將在您的網路應用程序中暴露很多錯誤(關於連結創建中的主機名和路徑的假設 &c)!

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