Windows-Server-2003
Windows Server 上的 PostgreSQL 故障轉移集群
我們正在尋找有關如何為我們的應用程序設置基本故障轉移集群的建議:
我們將使用4 台執行 Microsoft Windows Server(很可能是 2003 年)的機器。
這四個都將始終執行我們的應用程序,它本質上是一個 Web 服務。
負載平衡是“外包的”——其他人處理伺服器之間 Web 請求的分配。
在任何給定時間,只有一台伺服器會主動執行 PostgreSQL 伺服器。另一台伺服器(四台伺服器中)也安裝了數據庫,但處於待機/被動狀態。
DB 數據儲存在共享儲存上。不能在伺服器之間複製數據。
- 許多最終使用者非常頻繁地進行讀取,並且讀取的數據塊相當小。
- 寫入的頻率要低得多,使用者較少,而且數據量很大。
現在,如何配置 Microsoft 集群服務以始終只保留一個數據庫伺服器實例和 4 個實例(每台伺服器 1 個)我們的應用程序?PostgreSQL 是否與 MSCS 完美集成?
更新:我還考慮使用日誌傳送將數據複製到幾個數據庫伺服器上,而不是將數據保存在共享儲存中。這個選項有兩個問題:
- 日誌傳送只能確保我有第二台伺服器來獲取所有數據並準備好接管。如何實現實際的故障檢測和故障轉移切換?
- 切換回來:假設主伺服器發生故障,系統自動故障轉移到從伺服器,然後主伺服器恢復線上。我知道使用 WAL 傳送,這將需要再次重新配置日誌傳送,並且切換回來遠非無縫。是這樣嗎?
PostgreSQL 使用通用服務模式與 MSCS 一起工作得很好。建議您也將 PostgreSQL 二進製文件安裝在共享驅動器上,並將服務指向那裡 - 這樣您就可以確定不會出現版本不匹配的情況。
Lars 有一個很好的觀點,即不建議在同一台機器上執行 db 和 appserver。您可能要考慮使用 2 台機器作為 db 和 2 台機器作為應用伺服器 - 或者至少讓 MSCS 在執行 PostgreSQL 的節點上關閉應用伺服器(我不確定它是否可以這樣做,但我想這應該)