概述
本文简单介绍:
1)项目部署的必要性/部署原理
2)单机和集群的简介/区别/适用场景/组成部件
3)部署架构/运维平台的作用
本地部署与服务器部署
问题:
既然用户可以直接在自己电脑端安装 FineBI 和设计器,为什么还需要在服务器端部署项目呢?
答案:
官网提供的个人试用版FineBI和设计器,内置了Tomcat服务器,所以可以直接使用。
但是每个试用版FineBI和设计器,都对应了一个本地工程,大家无法共用同一个工程。
对于正式的企业工程,需要让多个操作员连接到同一个工程,并让多个查看者能够在不同的电脑上访问同一个工程。
因此,需要在服务器上部署工程,来确保不同的操作员和查看者可以在各自的电脑终端上访问同一个工程。
容器化部署与传统部署
帆软为什么采用容器化部署方案?
相比于传统的中间件+jdk+工程的部署方式,帆软采用运维平台进行容器化部署。
容器化部署,是使用容器化技术(如Docker),将应用程序和依赖的环境配置,封装在一个独立容器中。
相比于传统部署架构,容器化部署可大幅降低客户的维护成本和资源成本。
项目生命周期 | 传统部署 | 运维平台部署 | |
---|---|---|---|
环境准备 | 操作系统 硬件配置 | 无法进行检测 可能会因为操作系统版本过低、磁盘空间不足、内存不足,为工程埋下隐患,导致宕机 | 对部署环境的操作系统、内存、磁盘空间均进行强制检测,防止部署在不适合的服务器中 |
集群组件 配置库 运维组件 | 需要自行准备组件介质,自行安装,并在工程部署成功后手动对接 | 1)运维平台部署的项目中,自带各类组件,支持一键部署 2)用户也可自行准备各类高可用组件,在部署项目时接入 | |
项目部署 | 端口检测 网络检测 | 无法在安装项目时指定工程端口 只能在项目部署成功后,手动修改 如端口被占用、无法连通,也需手动排查 | 在部署项目时,支持修改各个组件的占用端口 对于各个组件的端口占用和网络连通情况进行检测和提示 |
权限检测 | 只确保可以上传文件,但对启动工程的服务器用户权限无法进行检测 可能会因为权限不足,导致工程运行/功能使用存在问题 | 在部署项目时,对所用用户的权限进行检测和提示 防止因为用户权限不足,导致运行/功能异常 | |
参数配置 | 对于容器配置、JVM参数、glibc、各项内存等,不会进行配置 一般都在工程出现问题后,才会进行排查调整,存在滞后性 | 运维平台使用的镜像中,已经配置好了这些常用参数 | |
工程部署 | 需要使用终端远程服务器,进行文件上传、解压和运行 | 通过运维平台,界面可视化完成部署全部操作 | |
工程注册 | 提供多种注册方案,需要根据环境选择 不合适的注册方案,可能会在工程重启或网络情况出现变化后失效 | 界面化进行容器私有云认证,简单快捷不失效 | |
项目运维 | 工程升级 | 需要手动替换JAR包,手动启停 如升级失败,无法回滚,需要自行手动再替换 | 界面化更换镜像包实现升级 升级前备份,升级失败支持快速回滚 |
工程备份 | 仅支持备份关键配置、JAR包、插件等 其他内容需要用户自行手动备份 | 支持一键备份,支持自动备份 支持将项目备份到运维平台所在服务器,实现异地备份 包括:工程组件、配置组件、集群组件、依赖镜像 | |
工程还原 | 仅支持在工程启动的情况下使用平台还原功能 如工程无法启动,需要手动替换文件进行还原 | 支持通过运维平台,界面可视化完成还原操作 支持在项目不可用的情况下对工程进行还原 若存在不可用服务器,支持在还原时重新指定新节点 | |
工程运维 | 不提供相关功能/作用范围小 | 支持且不限于: 集中项目健康管理 快速排查故障问题 快速定位性能问题 自动监测与告警 |
finekey、运维平台、运维项目之间的关系是什么?
产品/功能 | 说明 |
---|---|
finekey与运维平台 | 一键部署CLI工具 1)初始化部署环境:搭建docker环境、处理容器网络 2)部署运维平台:通过finekey自带的镜像/云端拉取镜像,来部署运维平台 3)内网升级运维平台:内网环境下的运维平台无法直接从云端拉取镜像,因此需要借助离线版finekey更新镜像 |
运维平台与运维项目 | 帆软项目的全方位运维管理工具 1)部署、对接单机/集群的运维项目,包括FineReport、FineBI、FineDataLink 2)部署的运维项目中,不仅仅包括工程,还包括配套的外接配置库、集群组件、运维组件等 3)一个运维平台支持对接管理多个运维项目 4)对于接入的运维项目,运维平台可以对其进行启停、注册、升级、巡检、监控、告警等全方位运维操作 |
单节点应用与多节点集群
单节点应用
就是一个部署好的工程。
多节点集群
集群(cluster)就是将多个相同的工程集中起来提供同一种服务,这些单个的工程就是集群的节点(node)。
基于集群的横向扩展性,用户可通过增加节点数量使并发趋于线性增长,从而获得较高的并发支撑性能。
同时也可以用多个工程做备份,避免单机不可用导致系统停止造成的损失(业务中断、数据/模板丢失),确保系统 7*24h 稳定运行。
集群的优势
帆软集群具有高可用性、高性能、易于管理、可伸缩性和安全保障等优点,适用于企业级的报表生成和管理需求。
可以帮助企业更好地管理和控制报表数据的存储、生成、共享等方面的性能和效果。
优势 | 说明 |
---|---|
高可靠性 | 帆软集群通过集群节点、负载均衡器、状态服务器等多个组件协同工作,有多个节点来分担处理请求的负荷。 当集群节点发生故障时,负载均衡器会自动将请求转发到其他可用节点,保证系统的高可靠性。 |
高并发 | 帆软集群允许并行处理多个仪表板生成和数据计算任务,通过多个节点从而实现任务的分布式处理。 通过集群的横向扩展,实现数据计算与仪表板生成的加速,从而提高整体的性能。 节点数量越多,支持的并发越高。 |
易于管理 | 帆软集群提供了完整的管理平台,包括集群节点的监控、配置、部署和故障自动修复等功能,可以大大降低集群维护和运维的难度和风险,帮助企业更好地管理和维护系统。
|
强扩展性 | 基于良好的架构设计,Web集群具有良好的横向扩展性,帆软集群可以快速增加集群节点的数量,使并发趋于线性增长,以应对高峰期和流量波动,做到系统的可伸缩性和高效性。 |
集群和单机的区别/集群解决什么问题?
当我们把集群和单机比作一组出租车承接客人的话,它们的区别可以这样解释:
1)解决高负载问题
单机就像是一辆出租车,它可以接受乘客的订单,但是如果订单请求变得非常多,该出租车的服务能力可能无法满足,并可能会出现性能瓶颈。
此时,你需要多辆出租车来分担订单处理工作。而这些出租车可以被组成为一个出租车队的形式称之为集群。
这样,您可以将乘客分配到不同的车辆中,并将他们同时送到目的地,从而提高服务效率。
2)解决高可靠问题
但是,仅仅增加车辆的数量只能解决工程高负载问题,并不足以保证高可靠性。
您还需要一个良好的车队管理系统来确保每辆车都可以顺利地运行,并提供相同的服务质量和客户体验。
在集群设计中,这意味着您需要将多个服务器组合在一起,以实现负载均衡、配置信息数据库、状态服务器和文件服务器等功能。
这些组件可以确保整个集群的高可靠性,并提供稳定的服务。
3)总结
集群和单机的主要区别在于共享资源和协作工作。
集群中,多个工程相互通信共享数据和任务,可以提供更好的可扩展性和更高的性能。
单机中,所有的资源都被独占使用,没有扩展性和动态性可言。
总之,集群设计是一种有效的解决方案,可以提高系统的负载能力和可用性,并确保系统的稳定性和一致性。
集群为什么需要多类组件?
在搭建集群时,需要注意到这不是一件轻松简单的事情。
为了提供无缝丝滑的服务,必须提高服务质量并组建一个优秀的车队。
我们需要考虑如何构建一个良好的车队,这是集群架构需要解决的问题。
组件 | 说明 |
---|---|
工程节点 | 集群节点就是一辆辆出租车。 当某个出租车出现了故障,会自动安排其他出租车来代替它的工作,以确保整个车队仍然正常工作。 帆软集群设计避免了主节点的概念,只将第一个加入集群的节点作为基准节点。每个节点都平等地提供服务和进行管理操作。 每个节点都是一个可以独立运行的工程,负责处理用户的请求,处理生成报表的任务和管理其他组件的工作。集群节点间通过一系列的网络协议和服务进行通信和协作。 |
负载均衡 | 负载均衡就像出租车队的调度中心,用于协调和分配所有的工作和请求。 在接待客户时,负载均衡作为统一入口,负责对接客户,不需要让客户一个个询问司机。 在集群中,负载均衡用于分配任务到各个节点上,使它们能够更高效地工作。 负载均衡器会在所有节点之间平衡负载,确保每个节点都分配到足够的任务并保持忙碌状态。 |
外接数据库 | 配置库,即外接数据库FineDB,类似于出租车队的车管所。 它存储并维护所有车辆和司机的信息,为每个司机提供相同的车辆装饰、报价、出行路线等信息。让每一辆车都给顾客提供一致的出行体验。 在集群中,配置库用于存储和维护所有节点的配置信息和参数,这些参数是为了使集群节点协调工作而必须合理设置的。 |
状态服务器 | 状态服务器就像出租车队的管理中心。 它负责监控和维护车队的整体状态,包括车辆和司机的位置,以及服务进度。 在集群中,状态服务器也执行相似的任务。它监控每个节点及整个集群的运行状态、记录日志和错误信息、协调节点间的通信和任务分配等。 |
文件服务器 | 文件服务器类似于出租车队的存储仓库。 它存储所有与车队相关的文件,包括车辆维护记录、保险单、车辆位置数据等。 在集群中,文件服务器用于存储和共享集群中所需的文件和数据资源,以确保每个节点都可以访问并使用它们。 |