High-Availability

冗餘伺服器應該具有完全相同的配置,還是略有不同?

  • October 6, 2011

如果您在兩台伺服器上提供服務以確保高可用性,是否最好以完全相同的方式配置它們,而不是您應該引入細微的差異以防止“怪異配置”錯誤?

我們在 Linux (Ubuntu LTS)、Nginx、Apache 和 Python WSGI 堆棧上託管一個基於 Django 的網站,在負載均衡器後面的三台伺服器上複製。目前它們託管在亞馬遜雲中,但未來我們可能會遷移到我們自己的數據中心。我們最近在所有三台伺服器上都遇到了一個問題,只能通過升級核心來解決,這讓我們認為這是這個特定版本的核心與亞馬遜可能已經開始使用的物理硬體之間的不兼容。

這讓我想到:最好讓所有機器保持完全相同的配置(更容易管理?),或者我們應該保持稍微不同,這樣兩個組件之間的不兼容只會在一台機器上表現出來,而不是全部表現出來其中,讓您的網站保持在空中?

保持它們相同。僅在特定配置中表現出來的不兼容的可能性很小,之後您必須記住所做的一切的差異。

為簡單起見,它們都應該是相同的配置,但是在某些情況下(主要由所使用的軟體決定)無法進行負載平衡並且故障轉移成為唯一的選擇 - 在這種情況下,可能需要稍微不同的配置.

OTOH,對於面向網際網路的服務,可用性和安全性必須在優先事項列表中居高不下。良好的安全性意味著定期應用更新檔,良好的可用性意味著您不能同時修補所有機器 - 實際上,我在類似設置中採用的做法是在更新檔可用並已應用時立即將更新檔應用到一台活動機器並在測試機器上進行了簡要評估,但將向其他節點的推出推遲了幾天,直到我知道更新檔沒有任何不利影響。

雖然 Sirex 是正確的——在一個完美的世界裡——你可以在預生產集群上實施更新檔並使用來自生產系統的流量/數據進行測試——實際上,在如此小的規模上,這遠非成本效益。

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