1. 概述
集群(cluster)就是将两个相同的工程集中起来提供同一种服务,这些单个的工程就是集群的节点(node)。
在这个基础上,以其中一个节点作为响应前端请求的节点(active node),另一个节点作为工程的备份节点(standby node),避免单机不可用导致系统停止造成的损失(业务中断、数据/模板丢失),并且在 active 节点出现问题时,代替其返回前端的请求,确保系统 7*24h 稳定运行的集群,即是热备。
2. 热备特点
1)高可用性
一主一备模式,主节点宕机后集群系统仍可正常提供服务。
主节点宕机后,自动切换备节点,已登录的用户无需重新登录。
2)高一致性
各节点间平台配置信息和资源文件修改更新能够实时同步。
对于节点间 JAR 包不一致情况,启动时可自动检测对比并提醒。
3)强扩展性
基于良好的架构设计,在 FineBI 和 FineReport 进行集成之后,热备集群能够兼容 FineReport 的 web 集群。
4)使用简单
简单可视化配置,80% 的配置都可在平台上完成。
实时监控各节点的运行状态,对于节点宕机、节点间时间不一致等情况可以及时进行提醒。
3. 热备架构
4. 热备方案介绍
热备集群方案由「请求转发+Web 容器+状态服务器+文件服务器+外置数据库」组成,本章将对方案各个部分的作用进行简单介绍。
4.1 请求转发
请求转发的作用是依据内置的健康检查逻辑,判断各个节点的当前状态,是集群系统的入口。
请求转发分为软件请求转发和硬件请求转发两种,软件请求转发推荐使用 Nginx ,硬件请求转发推荐使用 F5,对于非 Nginx 的请求转发,目前帆软仅提供配置说明,须自行操作配置。
4.2 Web 容器
Web 容器是一种服务程序,是能够支持发布 Web 程序的软件,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求。
常规推荐:Tomcat 容器、WebLogic 容器、WebSphere 容器
4.3 外置数据库
外置数据库在集群中的作用是保证各个节点间平台配置信息保持实时同步,各个节点共用同一个外置数据库。
支持数据库: MySQL、SQL Server、Oracle、 DB2
4.4 状态服务器
状态服务器用于存储登录信息、session 等信息,集中管理所有的服务器状态,并对所有的访问和操作进行验证。
目前支持 Redis 单机和 Redis 集群两种方案。
4.5 文件服务器
开启文件服务器后,即可使用文件服务器共享方式,即通过文件服务器存储模板等资源文件,各节点的资源文件统一从文件服务器读取,现支持 FTP、SFTP、HDFS 等。
4.6 集群通信协议
开启集群之前可自行选择集群通信协议:TCP 和 UDP ,若服务器允许组播,则选择 UDP 协议,不允许组播则选择 TCP 协议,默认使用 TCP 协议。
两种通信方式的区别如下表所示:
功能 | TCP | UDP |
---|---|---|
连接 | 基于连接 | 无连接 |
对系统资源的要求 | 较多 | 较少 |
程序结构 | 复杂 | 简单 |
数据正确性 | 保证 | 不保证 |
数据顺序性 | 保证 | 不保证 |
应用场景 | 网络负担重,对响应速度要求高 | |
socket | socket(PF_INET,SOCK_STREAM,0) | socket(PF_INET,SOCK_DGRAM,0) |
数据收发 | send/recv | sendto/recvfrom |
地址信息确定 | 在 connect/accept 时确定 | 在 sendto/recvfrom 函数中每次均需指定地址信息 |