1. 概述编辑
本文简单介绍,集群中各种组件的支持类型,和组件部署支持的服务器环境。
建议先确认需要安装的组件,然后按照各个组件的数量准备服务器。
2. 集群组件要求编辑
2.1 工程节点
集群节点是帆软集群的核心组成部分。它是一个可以独立运行的工程,负责处理用户的请求,处理生成报表的任务和管理其他组件的工作。集群节点间通过一系列的网络协议和服务进行通信和协作。
建议按照工程并发数,准备不同数量的工程节点,具体如下表所示:
注:一个服务器只能部署集群的一个工程节点,不支持在一台服务器部署集群的多个工程节点。
并发数 | 节点数 | 每个节点内存配置 |
---|---|---|
0~100 | 1 | JVM-8G |
100~200 | 1 | JVM-12G |
200~300 | 1 | JVM-16G |
300~400 | 2 | JVM-12G |
400~500 | 2 | JVM-16G |
500~900 | 3 | JVM-16G |
900~1200 | 4 | JVM-32G |
2.2 负载均衡
在帆软集群架构中,负载均衡器是连接用户和集群节点之间的组件,以确保用户请求能够合理分配到不同的集群节点上。
负载均衡器可以通过各种算法来分配用户请求到不同的节点上,以获得更好的性能和负载均衡效果。
帆软支持的一些负载均衡类型如下表所示:
注1:不支持 Apache 负载均衡。
负载均衡 | 简介 |
---|---|
Nginx | 简介:Nginx是一款高性能、高可靠性、开源的Web服务器和反向代理服务器 广泛应用于负载均衡、Web缓存、安全控制等领域 优点: 支持多种反向代理和负载均衡算法,高性能和高并发处理能力,配置简单,易于扩展 在 Linux 系统上具备很好的并发性能,并且占用极小的内存,稳定性和性能经过充分验证 缺点: 不同模块之间的整合不够完整,对于新手可能有一定的门槛 在 Windows 系统上,若并发需求超过 200,可能会出现并发问题 文档: |
Traefik | 简介:Traefik是一款现代化、动态负载均衡工具,主要用于Windows系统 优点: 无需安装,只要在命令行里执行即可,部署和使用非常简单 支持自动化更新反向代理和负载均衡配置 在 Windows 系统上具备良好的性能 缺点:部分功能需要高级版本,升级版本不够稳定 |
AWS ELB | 简介:AWS ELB是亚马逊云计算服务中提供的一种负载均衡服务,包括经典负载均衡、应用程序负载均衡和网络负载均衡三种类型,可以实现不同协议的负载均衡 优点:可用性和可靠性,支持多种协议,可快速部署,方便维护 缺点:费用较高,配置和权限管理较为复杂 |
F5 | 简介:F5是一家网络应用服务公司,推出的产品包括负载均衡、应用安全等 优点:高可用性和可靠性,支持多种应用场景和应用类型,提供高级应用安全解决方案 缺点:价格较高,配置较为繁琐,需要一定的技术支持 |
2.3 外接数据库
数据决策系统中除平台属性配置以外的所有信息,包括目录树设置、模板定时任务信息等,均存储于一个数据库中。
它管理和存储了集群节点的各种配置信息,以保证各个节点的配置一致性,并方便管理员集中管理集群的元数据。
外接数据库支持的类型及版本如下表所示:
数据库类型 | 支持数据库版本 | 配置方法 |
---|---|---|
RDS MySQL | - | 配置MySQL5外接数据库 |
MySQL | 5.1.73、5.5.31、5.5.46、5.5.56、5.6.22、5.6.31、5.7.16 | |
8.0.11,8.0.16,8.0.20 | 配置MySQL8外接数据库 | |
Oracle | 10g、11g、12c | 配置Oracle外接数据库 |
SQL Server | 2000、2005、2008、2012、2014、2016 | 配置SQL Server外接数据库 |
2017 | ||
DB2 | 9.7、8.2、11.1 | 配置DB2外接数据库 |
PostgreSQL | 9.4.7、9.5.0、9.5.2、9.6.0 | 配置PostgreSQL外接数据库 |
2.4 状态服务器
状态服务器是一个服务组件,用于存储集群节点的状态信息,如节点的运行状态、负载、任务处理情况等。
它可以辅助动态分配任务到合适的节点上,并帮助管理员进行实时监控和调度集群状态。
帆软集群方案中支持的状态服务器方案有:Redis单机、Redis集群、Redis哨兵、腾讯云Redis集群4.0
状态服务器 | 说明 |
---|---|
Redis单机 | 简介: Redis单机模式是Redis最简单的部署方式,只部署一个 Redis 应用 使用起来也最为简单,只有主机、端口、密码三个配置项 优点:易于配置和管理,无需考虑数据的分片和集群等问题,运维成本低 缺点:容易出现单点故障,容量受到单台服务器的限制,不能实现高可用性和负载均衡。 |
Redis集群 | 简介:Redis集群是一种基于分片的Redis部署方式,它将数据分散到多个节点中,从而可以实现横向扩展和高可用性。一般是6个Redis节点,组成三主三从的模式提供服务 优点: |
Redis哨兵 | 简介:Redis哨兵是一种集中式的Redis高可用性解决方案,它会自动监测Redis节点状态,当某个节点失效时,自动进行故障转移。主要由一个主节点多个从节点和多个哨兵组成,一般就是一主二从三哨兵 优点: 提供较好的高可用性,对于Redis单机和Redis集群都适用 Redis哨兵只有一个主节点,当主节点宕机时,哨兵会选举一个从节点上升为主节点 缺点: 需要占用一定的系统资源,需要定期检查Redis的状态,不能实现水平扩展 Redis哨兵读写性能没有Redis集群好,因为Redis集群有多个主节点可以读写,所以不支持高并发 文档:Redis 哨兵模式插件 |
腾讯云Redis集群4.0 | 简介:部分用户在部署过程中,使用的 Redis 为腾讯云,帆软提供腾讯云 Redis 插件,方便用户在部署集群时进行适配,该插件只支持腾讯云数据库 Redis4.0 集群版。 文档:腾讯云 Redis 插件 |
2.5 文件服务器
文件服务器是集群中存储报表数据和附件的组件,它可以集中管理和共享集群节点之间的文件,确保文件数据的一致性和高可用性。
由于各个节点都是从同一个文件服务器读取资源文件,不涉及到同步,各个节点读取的资源文件永远会保持一致性。
帆软支持多种文件服务器,下面会对各个类型的文件服务器优缺点进行说明。
类型 | 优点 |
---|---|
FTP | 简介:FTP是一种文件传输协议,可以通过FTP服务器实现文件上传、下载和管理等功能 优点:稳定性高,性能好,读写速度高 缺点:非高可用方案,宕机后会影响整个服务的使用 文档: |
SFTP | 简介:SFTP是一种通过SSH协议进行加密的文件传输协议, 优点:部署简单,是Linux系统自带的,相对于FTP而言更加安全和稳定 缺点: 非高可用方案,宕机后会影响整个服务的使用 由于 SFTP 的传输方式使用了加密/解密技术,所以传输效率比普通的 FTP 要低得多 |
HDFS | 简介:HDFS是Hadoop分布式文件系统的缩写,是基于分布式存储架构的文件系统,可以存储大规模的数据文件,并支持大数据分析和挖掘等操作 优点:高可用方案,分布式文件系统,具备高度容错性 缺点:部署难度大,运维成本高,建议已经有HDFS服务的公司选用此方案 文档:HDFS 资源仓库 |
MinIO | 简介:MinIO是一个轻量级的开源对象存储服务器,可以运行在任何环境中,并且支持各种云存储API 优点:MinIO具有易于部署和管理、高性能和低成本等优点 缺点:在工程化方面还存在一些不足 文档:MinIO资源仓库 |
S3 | 简介:使用支持 S3 协议的云存储文件系统作为文件服务器,包括阿里云 OSS 、华为云 OBS 、亚马云 S3 优点:云存储,高可用方案,具备高度容错性,已有此类存储的客户对接很方便 缺点: 只支持部分S3,自建的S3不一定支持 备份还原类场景可能存在卡顿 文档:S3资源仓库 |
共享外部目录 | 简介:共享外部存储是一种将外部存储器与服务器挂载的方式,可以实现共享文件夹和网络共享等功能 优点: 硬件存储(NAS):稳定性高,存储空间一般都比较大 软件存储(NFS):部署简单,方案成熟 缺点: 硬件存储(NAS):成本高,且非完全的高可用,宕机后也会影响服务 软件存储(NFS):非高可用,服务端宕机后,客户端就无法再提供服务 文档:共享外部目录 |
2. 服务器配置要求编辑
2.1 服务器数量
注:若有条件,建议 Nginx、Redis、FTP分别部署在不同的服务器上。
1)两节点集群应用服务器1 | Web 容器(Tomcat、WebLogic、WAS) |
应用服务器2 | Web 容器(Tomcat、WebLogic、WAS) |
组件服务器3 | 负载均衡(Nginx) |
状态服务器(Redis) | |
文件服务器(FTP) |
应用服务器1 | Web 容器(Tomcat、WebLogic、WAS) |
应用服务器2 | Web 容器(Tomcat、WebLogic、WAS) |
应用服务器3 | Web 容器(Tomcat、WebLogic、WAS) |
组件服务器4 | 负载均衡(Nginx) |
状态服务器(Redis) | |
文件服务器(FTP) |
2.2 操作系统
帆软集群方案对于 Windows 系统和 Linux 系统均能支持。支持的操作系统版本如下表所示:
类别 | 操作系统 | 已验证版本号 |
---|---|---|
Linux | Centos6 | Centos 6.5、Centos 6.6、Centos 6.7、Centos 6.8、Centos 6.9 |
Centos7 | Centos 7.0、Centos 7.1、Centos 7.2、Centos 7.3、Centos 7.4 Centos 7.6、Centos 7.8、Centos 7.9 | |
RedHat6 | RedHat 6.5、RedHat 6.6、RedHat 6.7、RedHat 6.8、RedHat 6.9 | |
RedHat7 | RedHat 7.0、RedHat 7.1、RedHat 7.2、RedHat 7.3、RedHat 7.4 RedHat 7.7 | |
Ubuntu | Ubuntu 10.04.4、Ubuntu18.04、Ubuntu 20 | |
Amazon Linux | Amazon Linux AMI release 2018.03 | |
windows | Windows Server | Windows Server 2008、Windows Server 2012 Windows Server 2016 |
2.3 内存配置
服务器 | 系统内存 | 分配给 Web 容器 JVM 内存 |
---|---|---|
应用服务器 | 建议 16G 以上 | 建议 8G 以上,不要超过 32G,过大会导致系统 FullGC 时间过长 |
组件服务器 | 建议 8G 以上 | / |
2.4 磁盘空间
部署集群工程要求各机器的根目录空余空间至少 40G 以上,如果模板资源文件超大,根据实际情况选择较大磁盘空间的服务器。
机器 | 作用 | 硬件 | 配置 | 说明 |
---|---|---|---|---|
应用服务器1 | 部署工程 | /(根目录) | 保证至少有 40G 空余可用空间 | 系统使用中的临时缓存地址 |
应用服务器2 | /usr | 部署工程,至少保证有 15G 空余可用空间 | 默认日志存放路径 | |
组件服务器3 | 部署集群组件 | /(根目录) | 保证至少有 40G 空余可用空间 | 系统使用中的临时缓存地址 |
/usr | 保证至少有 15G 空余可用空间 | 安装集群的各个组件,存放日志文件 | ||
/home | 保证至少有 10G 空余可用空间 | 文件服务器存储目录,存放模板等资源文件 |
2.5 网络要求
1)公网环境和内网环境均可部署集群,不过要求集群的服务器间具有良好的通信环境,如下:
类型 | 带宽 | 网段 | 备注 |
---|---|---|---|
公网 | 10M 以上 | 同网段 | / |
内网 | 无要求 | 同网段 | 内网一般都是百兆/千兆带宽,故对带宽不做要求 |
Linux 系统用户:可使用 集群环境检测工具 对系统环境进行自动检测,或者使用 ping 语句检测。
Windows 系统用户:使用 ping 或者 telenet 语句进行检测。
2.6 Web容器
Web 容器是一种服务程序,是能够支持发布 Web 程序的软件,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求。
常规推荐:Tomcat 容器、WebLogic 容器、WebSphere 容器。
2.7 JDK
JDK 版本要求:JDK 1.8 且小版本需在 JDK8u102 以上。
3. 部署集群组件要求编辑
3.1 ROOT权限
Linux系统安装FTP时需要使用最高用户(root),否则不能进行,若不安装FTP则可不考虑这一要求。
3.2 GCC 编译器
Redis 和 Nginx 在 Linux 系统上的部署均依赖 GCC 编译器,所以须注意,若选用 Linux 服务器,请保证系统具备 GCC 编译环境
查询命令:gcc -v,若没有 gcc 环境则需要自行安装,联网安装命令:yum install gcc gcc-c++
3.3 端口准备
分类 | 内容 | 端口 | 备注 |
---|---|---|---|
负载均衡 | Nginx | 80 或 443 | 外部端口,必须对外开放,可修改(nginx.conf),是集群系统入口端口,其他负载均衡的端口请自行配置 |
web容器 | Tomcat | 8080 | 外部端口,可不对外开放,可修改(server.xml),SSL、短地址等在负载均衡层面配置 |
WebLoigc | 7001 | ||
WebSphere | 9080 | ||
消息通知 | Websocket 端口 | 38888/39888 | 详情请参见:集群配置WebSocket端口 |
Websocket 转发端口 | 38889 | ||
文件服务器 | FTP | 20、21 | 内部端口,可修改(自行操作) |
SFTP | 22 | 内部端口,不可修改 | |
HDFS | 9000 | 内部端口,可修改(自行操作) | |
状态服务器 | redis 单机 | 7379 | 内部端口,可修改(redis.conf) |
redis 集群 | / | 内部端口,根据配置情况自行修改(redis.conf) |
说明:
1)Web 容器、文件服务器、状态服务器包含多种,请根据选择的情况自行开放端口。
2)如果默认端口与其他工程有冲突,需要先修改端口,再开放对应的端口。
3)开启 21 端口和任何大于1024 的端口,再通过 passive 开启 ftp 被动模式。
4)对于 docker 容器,或者服务器之间端口严格限制的环境,需要对节点的服务器之间开放端口,用于节点间通信。
选择 TCP 协议是 7800/7810/7820/7830/7840/7850/7860/7870 八个端口
选择 UDP 协议是 45588~65536 随机端口
4. 集群其他配置要求编辑
4.1 缓存模式
增加了缓存模式,前端可进行选择,缓存和文件服务器搭配使用时可以增加文件服务器的高可用性,下面介绍一下如何选择。
1)缓存功能缓存的资源文件:包含报表文件、仪表板文件、配置文件、地图数据等,目前是"reportlets/" ,"resources/", "assets/","dashboards"四个文件夹。
主动缓存:启动工程时会缓存所有资源文件,后续使用和被动缓存基本一致。
被动缓存:仅对访问到的资源文件进行缓存。
2)缓存作用优点:
提高文件服务器的高可用性,若使用文件服务器时开启了缓存,当文件服务器宕机时,系统从缓存中读取资源文件,仍可正常对外提供服务。
缓存避免了频繁的文件读写,速度更快,可大幅提高模板的访问性能。
缺点:
缓存会占用系统内存和硬盘资源。
因为集群分裂等不稳定的情况,缓存偶尔也会存在不同步的情况,此时可通过界面手动刷新缓存进行同步
总结一下,开启缓存功能可以大幅提高工程的性能,并且配合文件服务器使用时,可提高系统的高可用性,建议使用文件服务器时考虑开启缓存。
4.2 通信协议
帆软集群支持 TCP 和 UDP 两种通信协议,目前默认是 TCP 协议,下面列举两种协议的区别:
TCP | UDP | |
---|---|---|
连接 | 基于连接 | 无连接 |
对系统资源的要求 | 较多 | 较少 |
程序结构 | 复杂 | 简单 |
数据正确性 | 保证 | 不保证 |
数据顺序性 | 保证 | 不保证 |
应用场景 | 网络负担重,对响应速度要求高 | |
socket | socket(PF_INET,SOCK_STREAM,0) | socket(PF_INET,SOCK_DGRAM,0) |
数据收发 | send/recv | sendto/recvfrom |
地址信息确定 | 在 connect/accept 时确定 | 在 sendto/recvfrom 函数中每次均需指定地址信息 |
其中需要注意的是,大部分云服务器(阿里云、亚马逊云等)都不支持UDP协议,因此只能选择TCP协议。
若服务器对TCP/UDP协议均支持,当节点数较少时选择TCP/UDP协议差异不大, 当节点数较多时,建议选择UDP协议,通信效率更高。