1. 概述
随着网络技术的飞速发展,高并发大用户场景越来越普遍,单一应用服务节点已经不能满足并发需求,为了提高整个系统可靠性,扩展性,吞吐率,通常将多个应用服务器通过硬负载/软负载组成集群,负载均衡器根据不同负载算法将请求分发到各个应用服务器节点。
TongHttpServer (简称THS)是一款轻量级(占用系统资源轻少)负载均衡软件,支持TCP、UDP、HTTP、WEBSOCKET、HTTPS、国密HTTPS等多种协议接入,采用多进程异步编程,具有占用系统资源少、性能高、支持并发数高、配置简单等优点,常用于配置WEB静态资源服务器、反向代理负载均衡服务器。THS提供界面化的配置方式,提供完善的监控接口、监控界面,可以对整个系统并发数、请求错误数、请求分发情况、服务器资源消耗等进行实时统计,方便运维管理。THS提供高可用功能,可同时配置主备集群,通过IP漂移技术防止THS自身单点故障。
下图展示了THS通用应用架构模型:
2. THS的体系结构
THS体系结构分为三个部分:
1) 高可用HA
2) HttpServer主进程
3) 用户接口
- 高可用HA
用于防止THS自身单点故障,在多环境、多节点下实现THS的高可靠特性,支持秒级故障切换。
- HttpServer主进程
用于实现THS负载均衡主要功能。
- 用户接口
THS提供了配置文件、命令行工具、web控制台、Rest API等多种UI接口形式,便于用户使用管理。
3. THS 应用场景
3.1 负载平衡
服务器负载均衡技术目前被非常广泛的应用在企业级业务系统中,通过采用负载均衡软件可以获得到如下一些好处:
- 保障系统稳定可靠
- 提高系统吞吐率
- 易于扩展
- 保证内网安全
上图展示的是THS为服务器集群提供负载均衡服务的应用场景。THS不仅支持HTTP、HTTPS 七层负载均衡,同时也支持TCP、UDP四层负载均衡如mqtt、数据库及自定义协议的TCP/UDP服务器。THS作为服务器负载均衡设备时具有以下优点:
- 支持双机热备
THS支持双机热备,可以有效保障系统的可靠性。主、备THS节点之间的检测和故障切换是自动进行的,无需人工操作,可以在秒级内完成。 - 性能高
THS主进程使用c语言编写、采用异步非阻塞编程,可以无阻塞的处理海量并发连接,支持和对应CPU绑定,避免进程切换导致cache失效,使用accept4函数减少一次系统调用、使用writev系统调用集中发送数据、使用sendfile零拷贝发送文件,提高软件性能。 - 消耗资源小
THS通过减少系统调用来降低对CPU的消耗,如使用accept4、writev集中发送数据、使用内存池技术对小内存统一分配。通过sendfile避免从内核空间拷贝数据到用用户空间,按阶段分配系统资源,有效的减少运行时内存的使用。另外,使用内存池也减少内存碎片的产生。 - 安全稳定
THS采用Master-worker设计,Master监控worker,在worker异常时可立即开启新的worker进程并给出监控信息。Master和worker运行在不同用户下,worker权限低,可限制为只能访问WEB目录。
3.2 反向代理
反向代理技术用来隐藏应用服务器的存在,保证内网安全,也是实现负载均衡的基础,通过反向代理技术,THS可作为内部系统的统一入口,如下图所示。
3.3 动静分离
THS除了作为负载均衡软件使用外,也可以作为静态资源WEB服务器,通常将动态请求转发给应用服务器,静态资源文件由THS处理(如当今流行的vue),减少每次静态资源请求都转发给后端的网络开销,同时,THS使用sendfile零拷贝方式传输文件,在处理静态文件方面性能优越。通过此种配置可以有效的提高系统的吞吐率。THS国密SSL支持在同一端口。
3.4 HTTPS 自适应
THS国密SSL支持在同一端口,自适应标准HTTPS/国密HTTPS,完美解决从标准HTTPS到国密HTTPS的平滑过度,在系统需同时满足标准HTTPS/国密HTTPS的场景特别适用。
4. THS 的主要功能
4.1 负载均衡
4.1.1 支持的通信协议
THS支持OSI七层协议HTTP、HTTPS,国密、FastCgi(PHP)、WebSocket、uWSGI(python)等协议,支持OSI四层协议TCP、UDP等。
4.1.2 支持的负载均衡策略
THS支持多种负载均衡策略,包括:
- 轮询调度
- 最少连接调度
- 随机调度
- IP哈希
- 哈希/一致性哈希可指定参数如URI、HOST等
4.1.3 支持会话保持
THS支持以下会话保持方式:
- 基于Cookie的会话保持
- 基于源IP地址的会话保持
4.2 双机热备
THS提供高可用HA功能和集群功能,以避免THS自身出现单点失效故障而影响整个系统的运行。
THS集群可包含多个THS节点,但要求所有THS节点在同一网段。
4.2.1 支持虚拟IP
THS支持对外的虚拟IP(又称浮动IP),客户端可通过访问虚拟IP连接到THS。THS的虚拟IP可以在主、备机之间自动漂移。
4.2.2 支持主备自动切换
THS支持主、备机之间的自动切换,可在秒级内完成。
5 THS特点
5.1 稳定可靠
在单个节点内部,THS采用Master-Wokrer设计模式,Master进程监控Worker进程,确保worker稳定运行;在节点之间,THS通过HA功能来防止本身单点故障;THS对后端节点进行主动健康检查,异常的节点将不参与负载均衡计算,同时也支持备份节点配置,当所有工作节点都异常时,可由配置的备份节点提供服务,从而保障业务系统的稳定性。
5.2 操作简单
THS的部署非常简单,解压即可使用,同时THS为用户提供极为便捷的B/S配置方式,通过浏览器可对THS进行配置和日常维护。
5.3 性价比高
THS为软件负载均衡软,相对于硬负载价格便宜,THS消耗系统资源少,在廉价的服务器上就能表现出优越的性能。对业务系统较多的场景,可以使用多套THS对不同应用系统进行集群,方便维护。
5.4 高性能
THS通过内存池、多进程异步模式、减少系统调用、epoll技术、零拷贝技术等提高性能,能同时支持上万连接,采用sendfile发送静态文件,在静态文件处理上效率高,也常用来作为文件服务器使用。