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