完整的郵件伺服器故障轉移
我正在嘗試找到最佳解決方案,以使郵件伺服器即使通過切換到備用伺服器而崩潰,也仍然可以完全執行。
我們使用 Postfix 和 Courier-IMAP 在 Debian 上執行我們的郵件伺服器。
我知道 MX 記錄和啟用中繼,以免錯過任何新的傳入電子郵件。但是我需要能夠仍然訪問舊電子郵件。
將負載平衡器放在 2 個伺服器前面並設置自動回退是一個考慮因素,但我不確定這種解決方案對郵件伺服器的效果如何,因為我沒有使用 LB 的經驗。
只要性能影響可以忽略不計,我不反對對 maildir 使用 GlusterFS 等。但是,我聽說/研究過這種解決方案具有很高的性能成本。
最後一個要求是使用郵件客戶端時的連接詳細資訊在回退發生時不需要更改。然而,這一要求對所有其他因素來說最不重要。
本質上,我正在尋找一個行業標準的解決方案。如果業界認為不需要存在這樣的解決方案,任何潛在的解決方法都將受到讚賞。
有兩種可能的解決方案:
- 將郵箱儲存在複製儲存上。根據您的性能需求,您有幾個選擇:如果我們留在開源/軟體定義領域,我建議使用 Gluster ( http://www.gluster.org ) 支持的 NFS 導出或 DRBD ( http://www.drbd.org ) 設備。根據郵箱的預期大小,Gluster 可能不適合。
- 使用 IMAP 複製讓您的郵箱在兩台伺服器之間複製並不斷同步,我推薦 Dovecot ( https://wiki.dovecot.org/Replication )
共享儲存解決方案:
假設您使用性能不錯的 DRBD,您需要設置 Linux-HA ( http://www.linux-ha.org ) 以確保一次只有一台伺服器處於活動狀態並且只有一台伺服器已掛載DRBD 設備。MX 記錄指向由 Linux-HA 管理的浮動 IP。
SMTP/POP/IMAP 服務應該從同一個複制查找服務(如 MySQL / LDAP)中讀取任何記帳資訊(郵箱、別名、加密密碼)。
這將是一個主動/被動集群。
IMAP 複製解決方案:
每個郵件伺服器都有自己獨立的本地儲存。設置兩個相同的伺服器,確保 Postfix 和 Dovecot 從相同的複制查找服務(MySQL / LDAP)讀取會計資訊。設置 Dovecot 以跨兩台伺服器複製郵箱。
這將是一個主動/主動集群。在這種情況下,傳入的郵件會隨機發送到兩個郵件伺服器之一,並最終保存在其本地儲存中。Dovecot Sync 定期在每個伺服器上儲存的郵件之間執行雙向複製,並自動解決衝突。有一個小的時間視窗(兩次同步之間的間隔),在此期間某些消息可能會失去。由您決定這是否可以接受。