APP下载

基于Keepalived 的高可靠邮件集群服务器的研究

2024-12-01余傲雪金海峰

电脑知识与技术 2024年32期

摘要:针对单台应用服务器存在的单点故障和无法自动迁移等问题,文章基于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)