请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
坐标系(uid:1092237)
?_>` 职业资格认证:FCA-FineReport | FCA-FineDataLink | FCP-FineBI V6.x | FCP-报表交付工程师
对基于Docker的FineOps运维平台的理解与心得
【Docker】 英文原意:n.码头工人 定义:一组平台即服务的产品,一个开源的应用容器引擎。 编码:主体采用Go语言开发,极小部分C语言。 初创:dotcould公司 (法国) 架构:客户端(Client) + 服务端(Server) ———————————————————————————————————————— 原理:(个人理解) Docker的图标是一只驮着集装箱的鲸鱼,背上的集装箱就是封装好的镜像…… 但我有个更佳的类比例子,那就是把使用Docker比作烹饪!真的非常有助于理解Docker的工作原理! ------------------------------------------------------------------------------------------ Linux服务器(宿主机) ▶ 厨房 宿主机内核 ▶ 厨具设施 Docker引擎 ▶ 厨师 厨师到厨房准备做饭,便是Docker的部署过程。 ------------------------------------------------------------------------------------------ 远程镜像仓库 ▶ 商场里的冷冻柜 本地镜像仓库 ▶ 厨房里的冰箱 Docker镜像 ▶ 冰箱里的土豆牛肉罐头 厨师从冰箱取出罐头后,拿到灶台加热。这罐新出锅的土豆牛肉,便是Docker根据镜像创建好的容器实例。 如果厨师想做的菜冰箱里没有,那就只能去商场购买,这便是服务器连接远程镜像仓库来下载镜像的过程。 ------------------------------------------------------------------------------------------ 土豆牛肉罐头(冷冻) 也可以进行拆解,通常来讲,Docker镜像会包含精简版的Linux内核、程序运行环境、组件或应用程序。 精简版的Linux内核 ▶ 罐头外壳 程序运行环境 ▶ 罐头中的调味料 组件或应用程序 ▶ 罐头中的土豆和牛肉 冷冻罐头不能直接吃,对应Docker镜像是无法修改的。 容器是根据镜像创建的,正如没购买土豆牛肉罐头就无法做出土豆牛肉这盘预制菜。 ------------------------------------------------------------------------------------------ 用烹饪类比,甚至还能解释Docker容器化部署之于非容器化部署的优势: 非容器化部署会先在测试环境服务器中准备运行环境 (如Java环境变量),之后部署并启动应用 (如Tomcat)。测试无问题后,再去生产环境的服务器,重复相同操作。此时若有组件版本差异或步骤遗漏,就有上线失败的风险。 一如厨师参加烹饪比赛,在比赛现场做的菜,却与平时做的菜味道不同。 于是预制菜 (Docker容器) 应运而生,完美解决了味道不一和烹饪效率的问题:批量生产的罐头,内容物都是精确配比的,操作简单,只要加热就能还原相同的味道。 正如Docker镜像,只要转化成一个容器实例,简单配置后就能直接运行。 ———————————————————————————————————————— 【FineOps】 全称:Fine Operation 定义:一个专门用于帆软应用的运维平台。 ———————————————————————————————————————— 原理:(个人理解) 在Linux服务器中部署FineOps运维平台,实际上是先安装了Docker,然后启动Docker服务,把FineOps各个组件的镜像,实例化成各个容器。 各个容器的用户体系、资源配置(例如“OPS”组件,需要2C4G的基础配置)、网络端口映射都是独立存在且相互隔离的。 了解运维平台组件作用 - 帮助文档 其中包含的“Nginx”组件,让FineOps服务器成为了整个帆软集群的内网关,提供负载转发服务,所有服务的入口、使用都从这个入口访问。 为了方便理解,可以把容器看作阉割版虚拟机,每个容器都有自己的一套端口,自己的一套用户体系。 端口和用户都能自定义映射关系,例如把Nginx容器的80端口映射到宿主机的8080端口,把Nginx容器的root用户映射到宿主机的nginx用户等。 前面提到过Docker是C/S架构:一个Docker集群,主节点部署Docker客户端+Docker服务端,其他从节点,只部署Docker服务端即可。 主节点的Docker客户端,会通过网络远程控制其他节点的Docker服务,进行镜像的下载容器化等。想必这就是为什么FineBI的容器化部署,只需要在浏览器中操作FineOps运维平台,配置一下新服务器的信息即可进行部署的原因。 快速入门 (部署新项目) - 帮助文档 ———————————————————————————————————————— 以上内容仅为个人学习和理解,如有错误请务必指正,感谢!
FineReport集群部署·踩坑整理
【部署版本】FineReport 11.0 【Linux服务器】CentOS 7.9 ———————————————————————————————————————— 【帆软应用服务器】JDK + Tomcat + webroot 【FineDB服务器】MySQL 【负载均衡服务器】Keepalived + Nginx 【状态服务器】Redis 【文件服务器】NAS ———————————————————————————————————————— 【部署背景】 2台帆软应用服务器(主备),2台FineDB服务器(主备),2台负载均衡服务器(主备),6台状态服务器(三主三从),1台文件服务器 内网所有服务器防火墙均已关闭,内网与办公设备的防火墙开通需提前申请 用户准许使用全root用户部署 ———————————————————————————————————————— 【参考帮助文档】FineReport文档 > 部署集成 > 集成部署 > Linux系统手动配置高可用集群 ———————————————————————————————————————— 【部署过程中遇到的问题及原因】 ---------------------------------------------------------------------------------------------------- 1. 帆软应用服务器 (1) 使用服务器部署包进行部署,执行失败。原因为错装成了Linux版FR设计器的安装包 (2) 单节点部署完成后,使用浏览器访问工程登录页报错。原因为该浏览器所在设备的IP未开通与内网服务器的防火墙 (3) 使用浏览器访问工程登录页,报错“fontconfig不存在”。原因为服务器部署包由于版权原因没有部分字体,在Linux服务器中使用“yum install fontconfig”命令下载即可 (4) 根据帮助文档配置的Tomcat自启动未生效。原因为帮助文档中描述配置文件的java环境变量时多了个“/”;另外Tomcat服务启动日志打印中有不少警告信息,使用“systemctl daemon-reload”命令重启系统服务管理器,使修改生效 (5) 配置FineDB外置库MySQL报错:“Table 'finedb.fine_conf_entity' doesn't exist”。原因为MySQL新建finedb数据库时,字符集编码设置为了“utf8mb4”和“uft8mb4_bin”,FineDB外置MySQL数据库时,不支持太新的字符集编码,应修改为“utf8mb3”和“utf8_bin” ---------------------------------------------------------------------------------------------------- 2. 负载均衡服务器 (1) Nginx编译安装后,在Nginx安装目录的sbin目录下启动./nginx,报错:“OPENSSL_init_ssl() failed”。原因推测为openssl-1.1.1a组件太老,与Nginx-1.26.2不适配 (2) 输入“make”进行Nginx预编译时报错:“Can't locate IPC/Cmd.pm in @INC (@INC contains: /路径 /路径)”。原因为缺少相应的组件或环境,输入命令“yum install perl-IPC-Cmd”即可解决 (3) 根据帮助文档操作,到指定路径那一步报错:“error: the HTTP rewrite module requires the PCRE library”。原因为缺少对应的库,通过yum命令安装即可 (4) Nginx编译安装后,在Nginx安装目录的sbin目录下启动./nginx,报了6行相同的错:“nginx: bind() to 0.0.0.0:80 failed (98:Address already in use)”。原因为80端口被占用了,使用kill命令干掉占用的进程 (5) 重新部署Nginx并按照帮助文档编译安装后,Nginx安装目录下却没有新增sbin、conf等配置文件夹。原因为缺少相应的组件或环境,使用“yum install -y make gcc autoconf automake libtool pkg-config zlib-devel perl bison flex openssl-devel perl-IPC-Cmd Perl-CPAN”命令下载所有用到的东西 (6) 使用网上找到的最新版本的健康检查补丁,启动Nginx时总是报错:“nginx: unknown directive "healthcheck_status" in /路径/nginx.conf :59。个人猜测是新版本健康补丁的部分组件名称发生变化,帮助文档中的配置文件还是老版本的,所以配置不成功(于是健康检查补丁暂时改为帮助文档提供的老版本) 注意:如果是用“yum”命令下载的Nginx相关依赖包,可以先查看以下版本号。以openssl组件为例,“openssl -version”,如果想卸载,直接使用“yum remove openssl”命令即可卸载 注意:如果之前安装了健康检查补丁,现在想卸载掉,直接在原安装命令中加“-R”即可干净卸载,例如: patch -p1 -R < /data/nginx/ngx_healthcheck_module-master/nginx_healthcheck_for_nginx_1.14+.patch (7) 按照帮助文档配置Keepalived后,浏览器访问发现配置的虚拟IP并未生效,查看keepalived启动日志,报错:“VRRP_Instance(VI_1) ignoring received advertisment...(VI_1):ip address associated wiith VRID 33 not present in MASTER advert:192.168.101.200;bogus VRRP packet received on eth0 !!!”。原因为配置文件中的【virtual_router_id】参数和已有局域网中的VID配置重复(冲突)了,换一个0~255之间的其他数字即可 ---------------------------------------------------------------------------------------------------- 3. 最终集群部署 (1) 复制主节点的webroot工程到从节点,启动从节点,在浏览器中访问FR登录页,直接报错: “抱歉,您无法访问该页面 cannot find store device 请联系管理员”。 原因为:我在将主节点的webroot工程复制到从节点时操作有问题,我是直接删除从节点的webroot工程,然后放上主节点的webroot工程,这样会有一定问题,应当严格采用覆盖的方式; 而且从节点自始至终就不应该启动,我之前启动了从节点,还配置了外置库,这也可能是报错的原因 (2) 集群完全部署成功后,上传注册信息license报错:“请检查ftp路径是否有写文件权限,请检查工程环境网络,请检查集群工程各节点与文件服务器的连接状态。”我逐一检查发现都没有问题,后来重启了一下Linux系统就好了,原因不明
个人成就
内容被浏览1,579
加入社区3年21天
返回顶部