基于开源平台的高性能负载均衡集群架构实现

2021-02-14 08:24杨亚平
信息记录材料 2021年12期
关键词:办公集群客户端

杨亚平

(酒泉钢铁<集团>有限责任公司 甘肃 嘉峪关 735100)

1 引言

某大型制造企业(以下简称“公司”)是国家“一五”时期规划建设的钢铁联合企业,经过数十年的建设发展,现已形成多个产业板块协同发展的新格局。而随着信息技术的迅速发展,企业信息化建设体系也相对成熟,由信息化所带来的企业管理模式的变革与管理效率的提升也越来越依赖于信息系统。

2 高性能负载均衡集群架构实现必要性分析

2.1 平台自身重要性

近年来,伴随着企业级核心业务系统的日益完善和逐步深入,协同办公系统作为公司日常办公工作的统一入口,是各部门间协同工作的展示平台,承担着公司信息系统的最大用户群体。它整合了企业内部信息资源,解决了企业信息孤岛、业务深井等问题,提高了企业工作效率,因此协同办公平台在公司中的重要性日益凸显出来。

2.2 架构对平台稳定性的影响

早期协同办公平台建设初期,系统架构设计采用了业界比较成熟的负载均衡集群部署方案,架构图见图1,即在整个集群系统的最前端放置1台nginx负载均衡服务器,它的主要作用是将用户端提交的请求根据设定好的算法逐个分发到应用节点上进行处理。后端部署3台相同环境的应用服务器,用于响应由nginx分发过来的用户请求。这种设计思路相比最早的单节点方式在架构稳定性方面有了明显的提升,在一定程度上也考虑到了影响系统访问速度和稳定性的制约因素并进行了改进。

图1 早期协同办公平台设计架构

不过,在平台实际搭建过程中,硬件服务器紧缺带来的阻碍还是未能避免。一方面,项目建设有严格的工期要求,绝对不能影响项目的正常推进;另一方面,还必须得保证集群架构的搭建,需要考虑如何才能兼顾好这两方面。

通过对以上两方面的综合考量,将方案在原设计基础上进行了调整,采用了在最大可能满足硬件资源的情况下对集群环境进行压缩的临时性过渡方案。具体是将原设计中的nginx与应用节点1先暂时安装部署在同一台服务器上,这样可以先进行其他部署和调试工作,尽量对进度不产生影响。待系统具备正式上线条件后,再将nginx负载均衡迁移分离出来单独运行。但是直到系统正式上线,硬件服务器短缺的问题也没有得到解决,因此nginx负载均衡迁移工作始终未能成行。后期当硬件服务器资源能正常提供时,又因为其他原因导致这个历史遗留问题被搁置起来,这种系统架构也就一直沿用下来了,见图2。

图2 早期协同办公平台建设架构

在平台实际运行的过程中,经常暴露出对用户的请求响应不及时和应用节点1这台服务器运行不稳定的问题[1]。

2.3 算法对平台可用性的影响

传统架构下的协同办公平台,用户访问时首先经过负载均衡服务器的nginx,nginx再根据配置的算法将请求转发到后端的应用节点上,而nginx采用了ip_hash算法来实现负载均衡,这种算法是基于IP地址来判断请求客户端,缺点是来自同一客户端的请求被固定到同一台服务器,会导致负载不均衡,影响系统正常访问。

综上分析,出于对协同办公平台重要性和稳定性的考虑,公司决定对平台整体进行升级改造。通过优化升级搭建高性能负载均衡集群,使协同办公平台存在的问题能得以改善和解决。

3 高性能负载均衡集群架构实现原理

由图2可知,早期集群架构下的协同办公平台最大的不稳定因素源于最前端nginx负载均衡服务器,一旦这台服务器宕机或故障,不论后端应用节点是否正常,整个集群将陷入瘫痪[2],直接影响用户访问协同办公平台。另外,应用节点1与nginx负载均衡共享同一台服务器资源,两者之间互相干扰和影响,常常导致服务器负载居高不下。那么如何解决负载均衡分发器单点故障的风险和弥补架构的缺陷呢?因此,升级优化工作就从以下几方面着手开展。

3.1 负载均衡集群架构优化

为了应对日益增长的访问量,首先将原架构中应用节点1与nginx节点拆分后单独部署,这样就避免了两者之间的干扰影响和资源争用。其次将后端应用节点数量由原先的3台扩展至6台,继续由nginx统一来调度分发请求,实现多个后端应用节点共同分担和缓解高并发访问请求的问题,减轻了整个平台的负担,保证了业务的连续性。

3.2 高可用架构配置实现

在集群的最前端新增加一台负载均衡服务器,与原有nginx负载均衡服务器形成高可用主备模式。正常情况下客户端均通过vip地址访问,一旦master服务器出现故障,backup服务器就会自动接管IP和服务资源继续进行请求分发工作,直到主服务器故障修复[3]。优化升级后的协同办公平台架构图见图3。

图3 优化后的高可用负载均衡架构

那么,集群是如何判断master服务器挂掉了呢?这就需要用到开源软件keepalived来监测nginx服务器的状态。

在集群最前端的两台nginx服务器上分别安装keepalived软件,keepalived会定期向集群中服务器发送icmp包,一旦master服务器宕机或出现故障,keepalived监测到后立即使用backup服务器代替master服务器的工作,并将master nginx服务器从集群中剔除[4]。当master服务器正常后keepalived会自动将服务器加入集群中,而剔除和加入集群的动作完全不需要人工进行干预,因此利用keepalived监测nginx状态就解决了分发服务器单点故障的风险。

3.3 负载均衡算法优化

编译安装nginx启用扩展功能模块nginx-stickymodule,可以修复nginx ip_hash算法带来的负载失衡的问题。与ip_hash不同之处在于,sticky功能是基于cookie来判断客户端,实现了同一个客户端请求在同一台服务器上的负载均衡作用,同时也避免了来自同一局域网的客户端导致负载失衡和session丢失的情况,见图4。

图4 nginx sticky配置

4 结语

本文通过对早期企业协同办公平台运行过程中存在的问题进行剖析,针对协同办公平台整体架构的缺陷进行优化改造,主要改善了平台在高并发时段响应缓慢的问题,解决了平台的性能瓶颈,提升了平台运行处理能力,同时也降低了系统运维风险,实现了向用户提供不间断信息化服务,从而更好地为企业信息化服务的目标。

基于开源平台高性能负载均衡集群架构的实现,是公司首次在开源技术领域的探索与理论实践,开阔了技术人员的视野,为公司其他开源信息系统的优化改造积累了丰富的经验,同时也将公司信息化水平推向了新的高度[5]。

另外,本次主要针对面向平台的负载均衡层和应用层进行了优化,后端数据层仍存在继续改造提升的空间,后续可以根据协同办公平台运行情况,结合数据库技术,以搭建数据库集群为研究方向,进一步提高系统访问速度。

猜你喜欢
办公集群客户端
Sharecuse共享办公空间
X-workingspace办公空间
海上小型无人机集群的反制装备需求与应对之策研究
如何看待传统媒体新闻客户端的“断舍离”?
一种无人机集群发射回收装置的控制系统设计
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
Python与Spark集群在收费数据分析中的应用
U-CUBE共享办公空间
勤快又呆萌的集群机器人