摘 要 针对证券网络系统日益增加的海量存储和访问量,如何保障信息系统可靠运行,并维持合理的访问速度,保证高可用性和高可靠性,是亟待解决的问题之一。本文提出一种新的高效率负载均衡技术,并结合某证券公司的测试实践,介绍基于池化技术的负载均衡实现。
1 引言
随着市场经济的发展,越来越多的市民涉足证券股市,足不出户进行网上证券交易已成为炒股主要手段。但随之而来的证券公司网站访问量的激增,尤其是当大规模并发访问所带来业务量上升,访问量和数据流量增长,导致相应处理强度也迅速增大,从而引起核心网络设备过载,网络瓶颈和网络拥塞等问题。因此如何构建数据信息资源中心共享平台,以确保信息平台在运行过程中的稳定性和高可用性是需要得到解决的关键问题。
单纯追求高性能硬件来解决问题,无疑造成成本高额投入,且无法应对当前和今后快速增长的业务量的需求。因此,研究负载均衡技术在证券交易网站中的实际应用,成为解决上述问题的重要途径。
2 传统负载均衡技术特征分析
负载均衡是基于现有网络结构,以扩展原有网络设备和服务器的带宽,增加网络吞吐量,加强数据处理能力,提高网络的灵活性和可用性为目的,解决网络供应量和业务需求量之间矛盾的一种廉价、有效、透明的方法。传统负载均衡技术主要可归类为:
1)DNS负载均衡为多个不同IP地址配置同一域名,查询域名的客户机经DNS服务器解析后得到其中一个IP地址,使得不同客户可访问不同服务器,达到负载均衡目的。其优点是简单而有效,缺点是不能区分服务器之间差异,不能反映服务器当前运行状况。另外DNS刷新时间设置太小会造成太大额外网络流量。
2)反向代理负载均衡将客户端请求转发给内部多台服务器,反向代理服务器本身虽可达到很高效率,但针对每次代理,代理服务器就必须维护两个连接,随着并发连接数量不断增加,代理服务器自身负载变得非常庞大,最后反向代理服务器本身将成为网络瓶颈。
3)网络地址转换负载均衡可将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡目的。该技术使用硬件实现,因而缺乏灵活性,仅能处理几种最标准的负载均衡协议,此外存在带宽限制。
理想的负载均衡技术应具有以透明性为主的特征,实现动态自动优化调度和无网络瓶颈目的。根据这一目标和上述三类负载均衡技术的分析,可以看出实现高效率稳定负载均衡难点在于优化的负载均衡策略的应用和网络负载瓶颈的彻底消除。
3 池化负载均衡技术原理与特征
3.1 池化负载均衡原理
池化负载均衡技术是新提出的,效率非常高的均衡技术,池化系统中,某项服务由多台服务器共同提供,所有冗余服务器组成一个虚拟服务器池。每个服务器池都有一个唯一池名,用户通过池名访问服务器池,池化器为用户提供池名解析服务,并掌握所有服务器池的相关实时信息。池化结构示意图如图1所示。
多台冗余服务器组成一个服务器池,池名(如zqServer.pool)是唯一标识,嵌入式硬件池化器对服务器池进行统一管理、监控和操作,并负责对多台服务器资源的均衡、协调和调整,最大限度利用池中所有服务器资源,用户以池名访问服务器池,需要先在池化器处进行相应池名解析,后得到一个最佳服务器IP(最佳服务器由相应池负载均衡策略决定)。用户与服务器之间建立直接连接,之间没有任何中转和瓶颈。值得注意的是,池名解析是完全实时和动态的多IP解析,而传统的DNS则是静态解析。
3.2 池化负载均衡特征
1)无瓶颈限制,分布式的服务器池架构下,所有用户均能选择到一个当时状况下最佳的服务器,与之建立直接连接,突破了传统方案不能从根本上解决服务器处理能力的瓶颈。
2)更高的可用性,由多台冗余服务器组成的服务器池,完全能保障无停止服务,只有在所有服务器同时发生故障时,服务才中断,且系统具有高度容错能力,能应对所有软、硬件故障或网络故障。
3)更智能的可靠性保障,服务的故障处理和恢复过程实现完全透明化,自动化,用户无需对其过程进行干涉。
4)扩展性好,系统具有灵活的扩展性,对服务器的软、硬件类型配置没有任何限制,服务器可随时加入服务器池,以满足系统应用的需求。池中的服务器没有地理位置的限制,有各自IP地址。
本文以笔者为某证券交易网络公司进行的负载均衡部署测试为实例,介绍基于池化技术的负载均衡的实现。
4 池化负载均衡的架构与实现
4.1 池化架构下服务器网络连接的优化
某证券交易网络公司未实施负载均衡前,所有服务器同时运行网站Web应用和证券行情咨询应用,各自有单独公网IP地址,用户使用交易平台过程中,通过浏览器向Web服务器群发出服务请求,Web服务器群根据请求类型(不同区域站点)将业务分流到各不同服务器上,由各个服务器分别作出响应,一台服务器每秒最大承受大约15000个连接。
池化架构下,按照区域分布,由多台冗余服务器组成多个服务器池,所有服务器均以各自公共IP与互联网相连。3台X2池化器作用于不同区域中,同时为池化系统提供池化服务。各服务器池中的服务器将共同承担用户的访问量,由池化器统一管理监控,均衡使用。用户以池名(如:zq.stock .bj.pool)访问相应区域服务,通过池化器的池名解析,用户可得到当时状况下的最佳服务器IP,并与之建立连接,一旦该服务器发生故障,该连接也能透明地进行故障迁移至池中另一台最佳服务器上,并实现故障恢复与无缝连接。池化