
我正在考慮為 Apache 和 MySQL 設定自動故障轉移。我計劃在兩個 Apache 機器和兩個 MySQL 機器前面放置一個小型代理伺服器。 Apache會每隔一段時間從master->slave rsync數據,MySQL將設定在Master/Slave中進行複製。如果發生故障,備份盒可以接管,直到主盒重建為止。
前面的代理伺服器將僅作為具有某種心跳軟體的交通警察運行(此時我不尋求負載平衡)。這樣我就不必擔心在主設備故障時更改防火牆。是Linux高可用性最好的選擇或有建議嗎?
答案1
Linux HA 是一個很好的工具集。如果你想要簡單,就用心跳1; heartbeat 2 進入超過 2 個節點的叢集和 XML 配置。對於大多數簡單的 2 節點情況,1 就足夠了。
但是,雖然我同意在應用程式前面設定代理程式始終是一個好主意(運行來自一個虛擬伺服器的多個伺服器等),但您所描述的設定聽起來像是引入了一個新的 SPF:代理。
在您的情況下,您最好做的可能是以主動-主動配置運行兩台伺服器,包括在兩台伺服器上提供完整的 Web 服務和完整的代理服務(!)。
只要設定心跳來接管三個IP:一個用於活動MySQL伺服器,一個用於活動Web伺服器,一個用於活動代理(只有最後一個需要公開)。
然後將代理程式設定為始終轉到內部「活動 Web 伺服器」IP,並將 Web 伺服器設定為「活動 DB 伺服器」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 集群,而無需用戶可見的更改。
最重要的是:仍然立即將您的應用程式置於代理後面(即使代理「實際上」只是相同的伺服器)將儘早暴露您的網路應用程式中的許多錯誤(關於連結建立中的主機名稱和路徑的假設等)!
答案2
http://studyhat.blogspot.com/2009/11/clustering-linux-ha.html
上面的連結可以幫助您設定 Linux HA