






摘要:針對單臺應用服務器存在的單點故障和無法自動遷移等問題,文章基于Keepalived進行高可用郵件集群服務器設計方案的研究,首先介紹了Keepalived,然后詳細描述了如何架設基于Keepalived的郵件集群,包括典型拓撲介紹、關鍵實現技術,最后通過一系列的測試驗證了該方案的有效性和穩定性。
關鍵詞:高可靠;Keepalived;郵件系統;集群
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2024)32-0080-03 開放科學(資源服務)標識碼(OSID) :
0 引言
高可靠(High Reliable) 是指在一定時間內,系統能夠保持正常運行的能力。高可用性則是指系統在出現故障時,能夠在短時間內恢復正常運行的能力。一個高可靠性的系統可以確保業務的連續性,防止業務中斷[1]。可靠性對于保障企業的業務連續性、數據安全和信譽保護至關重要。
郵件系統是企業信息化過程中不可或缺的通訊平臺。采用一臺服務器獨立承載郵件系統容易造成單點故障,即該臺服務器一旦失效,就會讓整個郵件系統無法運作。為了防止這種故障,可以使用集群的方式來提供服務。例如,開源平臺Keepalived支持多活集群,支持多節點同時對外提供業務支撐能力。在應對業務故障、硬件故障或災難性故障時,自動切換到可用服務器繼續提供服務,最大化地保障了業務的連續性。
1 Keepalived 介紹
案,它可以用來監測服務器的健康狀態以及進行主備之間的切換。如果某個節點出現異常或工作出現故障,Keepalived將檢測到,并將故障節點從集群中剔除。當故障節點恢復正常以后,它會自動將此服務節點重新加入集群中。這些過程全部自動完成,無需人工干涉。Keepalived軟件作為高性能集群軟件,可提供虛擬路由冗余協議(VRRP) 和健康監測,基于VRRP 實現高可用。VRRP可以將兩臺或者多臺物理路由器設備虛擬成一個虛擬路由器,這個虛擬路由器通過虛擬地址對外提供服務。在同一時間內,只有一臺物理路由器對外提供服務,這臺對外提供服務的物理服務器被稱為主路由器(處于MASTER角色),而其他服務器則僅接收MASTER的VRRP狀態通告信息,這些路由器被稱為備份路由器(處于BACKUP角色)。當主路由器失效時,其他備份路由器將重新選舉,產生一個新的主路由器對外提供服務[2]。
2 郵件系統介紹
郵件系統主要由兩個部分組成:郵件服務器和用戶代理[3]。郵件服務器是用于存儲、發送和接收郵件的設備或軟件,而用戶代理則是用戶與電子郵件系統的接口,常見的如Outlook、Foxmail等。
Postfix和Dovecot是兩種廣泛應用于郵件服務的開源軟件[4]。Postfix是一種功能強大且多樣的郵件傳輸代理,它主要負責通過SMTP協議進行郵件的發送與接收。而Dovecot則是一種優秀的郵件投遞代理,它主要負責將郵件保存到郵箱并提供POP3和IMAP 服務。在實際應用中,這兩者通常會一同使用,共同構建一個功能完備的郵件服務系統。例如,在Linux 環境下,可以使用基于SMTP協議的Postfix服務程序來提供發件服務功能,同時使用基于POP3 協議的Dovecot服務程序提供收件服務功能。
SMTP(簡單郵件傳輸協議)是用于電子郵件服務器發送電子郵件的主要協議。常見的SMTP服務器默認端口號為25。
POP3(郵局協議版本3) 和IMAP(互聯網消息訪問協議)都是用于接收電子郵件的協議,但在處理郵件方面有所不同。POP3允許將郵件從服務器下載到本地計算機,而IMAP則更為先進,用戶可以直接在服務器上查看所有文件夾并對郵件進行操作。通常情況下,POP3的默認端口號為110,而IMAP的默認端口號為143。
3 架設郵件集群
3.1 郵件集群模型
如圖1所示,郵件集群模型包括1臺客戶機和2臺物理服務器,其中1臺服務器命名為主服務器,另一臺命名為次服務器。2 臺服務器IP 地址分別設置為172.16.42.10/24、172.16.42.20/24,安裝Centos7.9 操作系統,同時安裝Postfix2.10.1、Dovecot2.2.36,部署郵件系統。在主服務器上部署DNS服務,為郵件系統提供域名解析服務。2臺服務器上安裝開源軟件Keepal?ived,組建郵件集群,集群VIP地址為172.16.42.15/32,默認狀態下主服務器狀態MASTER,即對外提供服務,次節點服務器處于BACKUP狀態,主節點服務器故障后,自動轉為MASTER狀態,接替主服務器對外提供服務。
3.2 關鍵技術
參照圖1,完成各服務器拓撲互聯、配置IP地址信息,并完成DNS服務器的配置,為全網提供域名解析,將郵件服務器域名為mail.yax.com、yax.com解析為VIP地址172.16.42.15,DNS域名區域配置文件如下:
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns
dns A 172.16.42.10
yax.com. A 172.16.42.15
mail A 172.16.42.15
DNS測試結果如下:
[root@localhost ~] nslookup
> yax.com
Server:172.16.42.10
Address:172.16.42.10#53
Name:yax.com
Address:172.16.42.15
>mail. yax.com
Server:172.16.42.10
Address:172.16.42.10#53
Name:mail.yax.com
Address:172.16.42.15
與此同時,在2 臺物理服務器上安裝Post?fix2.10.1、Dovecot2.2.36,完成部署郵件系統,并建立郵件賬號yax@yax.com、yyyy@yax.com,用于后期測試郵件系統。
運行命令“useradd yax – d /mail – s /sbin/nologin”,創建本地用戶賬號。
-d /mail,是新用戶的主目錄,即郵件的存放路徑。
–s /sbin/nologin,表示禁止新用戶登錄系統。
完成DNS、郵件系統的基本配置之后,接下來開始配置集群功能。在2臺郵件服務器上安裝集群平臺Keepalived,并分別編輯Keepalived 的主次節點配置文件。
在主節點上設置router id(主節點ID 號) 為172.16.42.10,定義VRRP實例 VI_1,state為MASTER,根據實際網卡名稱設置interface,定義virtual ipad?dress為172.16.42.15[5]。
在此節點上設置router id(次節點ID 號) 為172.16.42.20,根據實際網卡名稱設置interface,state 為BACKUP,VRRP 實例和virtual ipaddress 必須與主節點一致,否則集群組建失敗。
截至目前,已完成集群基本架構。默認狀態下,客戶機通過VIP地址172.16.42.15訪問郵件系統,則有主節點為其提供郵件服務,當主節點服務器網卡故障或者系統故障后,次節點可以自動轉為MASTER狀態,接替主節點對外提供郵件服務。默認情況下,Keepalived集群僅僅將網絡連通性作為監測項,以此判斷主次節點是否在線來決定主次節點的狀態,而這種判斷機制是不完善的,比如在主節點網絡正常聯通情況下,主節點的郵件系統出現故障了,主節點卻依然處于MASTER狀態,繼續對外提供郵件服務,可是郵件系統又出現故障了,最終導致客戶機訪問郵件系統失敗。因此,接下來,定義腳本監測郵件系統的狀態,增減Keepalived集群的監測項。即監測到主節點郵件系統故障,視為主節點網絡故障,Keepalived集群啟動應急機制,次節點自動轉為MASTER狀態,接替主節點對外提供服務。
編輯Keepalived主配置文件,定義腳本chk_post?fix 和chk_dovecot,分別監控postfix 進程和dovecot 進程[6],腳本chk_postfix和chk_dovecot的內容如下:
vrrp_script chk_postfix {
script“ killall -o postfix”
}
vrrp_script chk_dovecot {
script“ killall -o dovecot”
}
Killall -0 postfix 表示監測 postfix 的狀態,如果進程存在,返回結果 0,否則返回非 0,Killall -0 dovecot 同理。
3.3 測試集群功能
Keepalived集群配置完成,查看主次節點地址結果如圖2、3所示。
從圖4、圖5可以分析得知:主節點服務器中VIP 地址172.16.42.15/32生效了,而次節點服務器中沒有VIP地址,說明集群架構基本完成。
1) 測試1:關閉主節點網絡,觀察次節點是否能夠啟動切換到MASTER狀態。
在主節點服務器上,運行命令systemctl stop net?work 關閉網絡后,重新查看次節點服務器的網卡地址。
從圖4可以觀察到地址的變化:主節點服務器的網卡禁用以后,次節點服務器的地址發生變化,地址新增了172.16.42.15/32。由此可見,備服務器的VIP已生效。再次證實當主節點的網卡出現故障的時候,次節點無需人工干涉,自動切換到Master狀態并且VIP生效,實現了主次節點服務器的網絡狀態的監控可以根據網絡的狀態進行Keepalived的主備的自動切換。
2) 測試2:關閉主節點服務器上postfix進程,觀察次節點是否能夠啟動切換到MASTER狀態。
在主節點服務器上,運行命令systemctl start net?work、systemctl stop postfix,重新開啟網絡并關閉posfix 進程后,重新查看次節點服務器的網卡地址。
從圖5、圖6 可以分析得知:關閉主節點服務器postfix進程后,主節點VIP地址失效而次節點服務器VIP地址生效。即集群監測到主節點服務器postfix進程關閉后,次節點自動切換到MASTER狀態,實現了業務系統的自動遷移。
同理,關閉主節點服務器dovecot進程后,次節點服務器同樣能夠自動切換為MASTER狀態,接替主節點對外提供服務,提高了郵件系統的可靠性。
4 結束語
實驗證明,基于Keepalived架構的郵件系統集群較好地解決了郵件系統的單點故障問題,實現了雙機熱備和業務系統的在線遷移,基本達到郵件系統的高可靠性和可擴展性。
參考文獻:
[1] 李霄,郭彤,王常洲.企業計算機應用系統可靠性測試技術研究[J].中國科技信息,2013(13):87-88.
[2] 張奎.基于LVS+Keepalived的Web集群系統實驗仿真[J].陜西理工大學學報(自然科學版),2020,36(4):44-48,92.
[3] 徐建.基于Linux平臺的郵件系統的設計與實現[J].湖北民族學院學報(自然科學版),2011,29(1):100-102.
[4] 王俊波.基于Postfix的電子郵件服務的實現[J].信息與電腦(理論版),2014,26(24):9.
[5] 金海峰,余傲雪.Nginx負載均衡器集群架構的實踐應用[J].安徽電子信息職業技術學院學報,2023,22(3):1-6.
[6] 金海峰,侯樂斌.高可用DNS集群服務器架構的實踐應用[J].安徽電子信息職業技術學院學報,2022,21(3):1-6.
【通聯編輯:代影】
基金項目:2023 年江蘇省職業院校學生創新創業培育計劃項目“高性能高可用負載均衡集群的實踐應用”(G-2023-0880) ;2022 年江蘇省高校“智慧教育與教學數字化轉型研究”專項課題:“虛實互補、創客教育”的高職計算機網絡專業在線實踐教學改革研究(2022ZHSZ41)