1. 概述编辑
帆软集群架构简单概述就是「负载均衡+状态服务器+文件服务器/节点间同步+外置数据库」,架构很明了,不过架构中各个应用组件,我们需要针对不同场景进行选择和搭配。
本文将介绍如何选择集群方案,为 IT 人员规划设计集群方案时提供一些有效的指引。
2. 集群方案编辑
2.1 集群架构
目前支持的具体架构如下表所示:
环境 | 应用架构 | 容器 | 外接数据库 | 负载均衡 | 状态服务器 | 文件服务器 |
---|---|---|---|---|---|---|
Linux Windows | Servlet | Tomcat WebLogic WebSphere | MySQL SQLServe Oracle DB2 | 1)软件负载均衡:
2)硬件负载均衡:F5 | Redis+(集群/哨兵/单机) | FTP SFTP HDFS 共享外部目录
|
需要注意以下几点:
不建议使用 Nginx-1.14.1 之前的版本,推荐使用 Nginx-1.15.6 。
Windows 集群非常不建议使用 Nginx ,请务必使用 Traefik 。
NFS 方案存在中文乱码问题,不建议使用。
2.2 集群配置推荐
如下表所示:
类别 | 普通方案 | 高可用方案 | 说明 |
---|---|---|---|
外置数据库 | 单机数据库 | 主备模式 | 数据库的 max_connections、pool_size 等配置容易影响并发限制,可进行调优 |
负载均衡 | 推荐使用 Nginx | Nginx+keepalived | 每个 Nginx 应用内存 1G 即可(正常情况下 5W 并发仅需 15M ),存储空间不作要求 |
状态服务器 | Redis单机 | Redis集群/哨兵 | 每个 Redis 应用内存 4G 即可 |
文件服务器 | FTP/SFTP | HDFS/NAS/OSS | 文件服务器容易影响并发性能,可以进行调优 如 FTP ,如果多节点频繁读写模板就会导致阻塞和卡顿,可以进行配置或提升磁盘性能 |
节点 | 并发数:同一时间向服务器发送编辑/查看请求的用户数量,节点具体配置请参见下方表格 | 1)jvm 内存不超过 32G 2)节点内存,建议至少是 jvm 内存的1.25 倍 |
节点具体配置如下表所示:
并发数 | 节点数 | 节点内存配置 |
---|---|---|
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.3 低成本高可用方案推荐
2.3.1 lic 数量:2 个
1)方案说明:
工程:
两节点
文件服务器:
有两种方式:
方式一:节点间同步
方式二:部署两个 FTP 服务器(一个主服务器、一个备用服务器),在集群配置页面中填写两个服务器的地址。当主 FTP 服务器宕机时,帆软工程可以自动连接到备用 FTP 服务器,从而保障工程正常运行。
注:如果你对该方案感兴趣,请通过技术支持联系集群团队获取该功能,技术支持联系方式:QQ「800049425」、电话「400-811-8890」。
负载均衡:
Nginx+Keepalived
数据库:
用户需自行配置高可用数据库。
若公司已有数据库服务,数据库版本符合帆软的要求(MySQL 、SqlServer、Oracle、DB2)则可直接使用,若需要新部署数据库服务,则建议部署 MySQL,部署比较简单。
状态服务器:
redis+keepalived 主从部署。
Redis 的高可用方案目前主要 5 种方式:
Redis Master-Slave + Keepalived + VIP
这是很经典的db架构,也可以用与mysql的主从切换。基本原理是:Keepalive通过脚本检测master的存活,然后通过漂移VIP(Virtual IP)完成主从切换。
Redis Master-Slave + DNS Service + Sentinel
基本原理是Sentinel集群进行Redis的存活检测和Redis M-S状态切换。完成切换之后,sentinel调用notification-script参数制定的配置文件,通知DNS Server更改DNS配置,master dns解析执行新的master。Redis Master-Slave + Configure Center(Zookeeper) + Sentinel.
基本原理和第二种方案相似,只是notification-script通知的是配置中心完成redis连接配置的修改,比如Zookeeper实现的配置中心。Redis Master-Slave + Sentinel + Twemproxy + Lvs.
这种方案层次比较多,sentinel通知twemproxy进行redis m-s的配置更改。Redis Cluster,redis3.0 发布了该功能
目前 Sentinel 和 Cluster 两种方案都明确支持,但这两种方案都需要至少三台服务器来部署搭建 Redis 相关服务。
目前有需求仅使用两台服务器来实现 Redis 的高可用,可采用 Redis Master-Slave + Keepalived + VIP 方案来支持。
2)服务器 A
一个工程节点
一个 Nginx+Keepalived
一个 FTP /节点间同步
一个 redis+Keepalived
一个外接数据库
3)服务器 B
一个工程节点
一个 Nginx+Keepalived
一个 FTP /节点间同步
一个 redis+Keepalived
一个外接数据库
4)服务器 C
不需要
2.3.2 lic 数量:3个及以上
1)方案说明
工程:
3 节点
文件服务器:
有两种方式:
方式一:节点间同步
方式二:部署两个 FTP 服务器(一个主服务器、一个备用服务器),在集群配置页面中填写两个服务器的地址。当主 FTP 服务器宕机时,帆软工程可以自动连接到备用 FTP 服务器,从而保障工程正常运行。
注:如果你对该方案感兴趣,请通过技术支持联系集群团队获取该功能,技术支持联系方式:QQ「800049425」、电话「400-811-8890」。
负载均衡:
Nginx+Keepalived
状态服务器:
redis 集群,3 主 3 从
数据库:
用户需自行配置高可用数据库。
若公司已有数据库服务,数据库版本符合帆软的要求(MySQL 、SqlServer、Oracle、DB2)则可直接使用,若需要新部署数据库服务,则建议部署 MySQL,部署比较简单。
2)服务器 A
一个工程节点
一个 Nginx+Keepalived
一个 FTP
一个 redis 主节点+从节点
一个外接数据库
3)服务器 B
一个工程节点
一个 Nginx+Keepalived
一个 FTP
一个 redis主节点+从节点
一个外接数据库
4)服务器 C
一个工程节点
一个Nginx+Keepalived
一个 redis 主节点+从节点
2.4 典型集群结构推荐
2.4.1 2 个节点的集群(入门级高可用)
环境 | Linux | CentOS 7 |
---|---|---|
应用架构 | servlet | |
容器 | Tomcat | Tomcat 6 |
外置数据库(配置数据库) | MySQL(单机) | MySQL 5 |
负载均衡 | Nginx(单机) | Nginx-1.15.6 |
状态服务器 | Redis(单机) | Redis 5 |
文件同步方式 | 节点间同步 | 不需要单独配置文件服务器 |
2.4.2 3 节点集群(标准高可用)
环境 | Linux | CentOS 7 |
---|---|---|
应用架构 | servlet | |
容器 | Tomcat | Tomcat 6 |
外置数据库(配置数据库) | Oracle(集群) | Oracle 11g RAC |
负载均衡 | Nginx(热备) | Nginx + Keepalived |
状态服务器 | Redis(集群) | Redis 5(三主三从) |
文件同步方式 | HDFS | Hadoop 2.0 |
2.4.3 Windows集群
环境 | Windows | Windows Server 2008 |
---|---|---|
应用架构 | servlet | |
容器 | WebLogic | WebLogic 12.2.1.3.0 |
外置数据库(配置数据库) | SQL Server(单机) | SQL Server 2008 |
负载均衡 | Traefik(单机) | Traefik 2.0 |
状态服务器 | Redis(单机) | Redis 5 |
文件同步方式 | 节点间同步 | 不需要单独配置文件服务器 |
2.4.4 其他说明
除此以外,还支持 K8S 集群介绍,实现应用编排,自动扩容。
云环境上,如 AWS 上的 ELB 、阿里云的 OSS 、腾讯云 Redis 等,通过云厂商的技术,实现集群环境的更高可用。
注:如果你对这两种方案感兴趣,请通过技术支持联系集群团队获取该功能,技术支持联系方式:QQ「800049425」、电话「400-811-8890」。
3. 部署运维编辑
流程如下图所示:
3.1 申请资源
每个组件都需要申请资源。
以本文 2.4.1 节为例,需要申请工程服务器 2 个,每个预计内存 12G ,磁盘 100G ;外置数据库服务器一个,磁盘 100G ;负载均衡服务器一个,内存 8G ;状态服务器一个,内存 8G 。
防火墙:所有节点之前的网络必须是通的。
端口:请参见:端口准备
3.2 开始部署
1)使用 集群环境检测工具 检查下系统环境是否符合集群部署的要求。
2)每个服务器需要安装所需组件,可以使用自动化部署工具(只适合 Linux 系统)。
具体请参见:Linux 系统自动化部署集群
3)运行帆软工程,在配置页面配置所有组件,具体请参见:配置开启集群
4)在配置开启集群界面中,可配置「Redis存储key前缀参数」,设置该参数后,将不会与其他工程的 key 冲突。
5)重启工程,如果节点个数正常且没有标红,说明集群部署成功。如下图所示:
注:配置完成之后,可安装 系统可用性监测工具 ,当集群突然不可用时,会第一时间收到通知。
3.3 集群使用建议
修改模板尽量切换到远程目录进行修改,如果确实需要手动更改模板文件,需手动刷新下缓存。