1. 概述编辑
1.1 版本说明
运维平台 | 功能变动 |
---|---|
V1.0 | - |
V1.3.1 | 支持纯净部署运维平台 |
V1.4 | 新增支持安装组件:Elasticsearch、ElasticsearchExporter、SkywalkingOap、SkywalkingUi、Minio |
V1.5 | 容器化部署方式拆分为两步 1)使用finekey部署运维平台(参见本文) 2)使用运维平台部署FineReport、FineBI等工程组件 详情请参见:部署新项目 |
1.2 应用场景
如需使用运维平台,目前仅支持通过容器化部署方式获取。
服务器部署一直都是比较繁重的运维操作,为了降低部署带来的较高成本,官方上线了容器化部署工具 FineKey 。
工具内置了最新版本的 docker 容器。包含 FR/BI 业务工程的镜像、各类组件镜像、Tomcat 镜像的镜像仓库。
使用该工具可以实现自动化部署,一条命令即可完成所有的部署工作,省心省力又高效。
本文介绍:使用 FineKey 工具部署运维平台的方案。
注:容器化部署工具 FineKey中的FineReport、FineBI工程镜像,均为帆软发布的最新版本。
2. 部署准备编辑
2.1 FineKey运行环境要求
容器化部署工具 FineKey 的运行,对服务器环境有一些要求,如下表所示:
配置 | 要求 |
---|---|
系统版本 | CentOS 7.3 及以上 Ubuntu 18.04.4 及以上 |
系统内核 | 3.10及以上 |
硬件配置 | 剩余空闲物理内存:最低 16G 剩余空闲磁盘容量:最低 500G CPU架构:目前只支持 X64、AMD64 |
2.2 组件运行环境要求
容器化部署工具 FineKey 会安装许多组件。如下表所示:
组件 | 组件说明 |
---|---|
ops | 运维平台容器,对其他容器进行运维 |
ops-agent | 管理FineReport/FineBI相关组件,容器化升级也是该组件完成 与物理节点绑定,每个物理节点安装一个ops_agent |
loki | loki日志查询的容器,提供日志查询,需要配合promtail容器使用,可以理解为promtail收集日志后loki展示出来 |
grafana | grafana容器,从Prometheus获取数据后做成监控仪表板来展示,loki的日志查询和告警规则也是grafana中的 |
prometheus | Prometheus容器,收集exporter的metric数据,用于给grafana看板展示 |
alertmanager | 告警容器,和grafana配合,主要就是告警规则,修改、触发等功能 |
promtail | 与FineReport/FineBI绑定,一个工程对应一个promtail组件,收集日志信息 |
elasticsearch | ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。 Elasticsearch 设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 |
elasticsearch_exporter | elasticSearch的exporter,收集elasticSearch的指标 |
skywalking_ui | 链路追踪展示界面端 |
skywalking_oap | 链路追踪的数据上报和分析整理服务端 |
nacos | 一个动态服务发现、配置管理和服务管理平台,支持注入到其他服务中 |
node_exporter | 服务器物理节点的exporter 收集物理服务器的各种指标信息,运维平台所在节点安装一个node_exporter |
nginx | nginx服务的容器,提供负载转发服务,所有服务的入口、使用都从这个入口访问 集群强制安装 |
nginx_exporter | nginx服务的exporter,收集nginx的指标信息 强制安装 |
registry | 存放docker镜像的仓库 |
1)请确认当前服务器是否符合组件的运行环境最低要求。
下表列出的为组件正常运行的最低配置要求。
建议配置一般为最低配置的两倍,可根据服务器实际情况自行调整。
如需使用链路追踪功能,运维平台服务器配置要求至少4C16G。
如不使用链路追踪功能,即部署但不运行elasticSearch、skywalking_ui、skywalking_oap容器,运维平台服务器配置要求最低4C8G。
组件 | 容器CPU限制 | 容器内存限制 | 内存配置xmx |
---|---|---|---|
ops | 2Core | - | - |
ops-agent | 1Core | - | 1G |
loki | 1Core | 1G | - |
grafana | 1Core | 1G | - |
prometheus | 1Core | 1G | - |
alertmanager | 1Core | 1G | - |
promtail | 1Core | 1G | - |
elasticsearch | 1Core | - | 2G |
elasticsearch_exporter | 0.1Core | 0.1G | - |
skywalking_ui | 1Core | - | 1G |
skywalking_oap | 1Core | - | 2G |
nacos | 2Core | - | 2G |
node_exporter | 0.1Core | 0.1G | - |
nginx | 1Core | - | - |
nginx_exporter | 0.1Core | 0.1G | 0.1G |
registry | 1Core | - | - |
2)请确认容器安装的默认配置是否可用。
请确认默认的映射端口端口是否已被使用,如已被使用,请安排好其他空闲端口。
请确认准备使用的端口是否开放了防火墙、安全组等,确保可连接。
注:端口portMapping为{映射端口:容器内端口} ,其中映射端口可改,容器内端口修改无效。
组件 | 安装默认配置 |
---|---|
ops | 端口:{8081: 8080} |
ops-agent | 端口:{9070:9070} |
loki | 端口:{3100:3100} |
grafana | 端口:{3000:3000} |
prometheus | 端口:{9090:9090} |
alertmanager | 端口:{9093:9093} |
promtail | 端口:{9080:9080} |
elasticsearch | 端口:{9200:9200} 用户:elastic(不支持修改) 密码:elasticadmin |
elasticsearch_exporter | 端口:{9114:9114} |
skywalking_ui | 端口:{8082:8080} |
skywalking_oap | 端口:{11800:11800} 端口:{12800:12800} |
nacos | 端口:{8848:8848} |
node_exporter | 端口:{9100:9100} |
nginx | root用户:{80: 8080} 非root用户:{8090: 8080} |
nginx_exporter | 端口:{9113: 9113} |
registry | 端口:5000 |
2.3 确认docker状态
请先确认服务器上是否已安装了docker,若已安装,请确保docker正在运行。
1)确认是否安装docker:
执行命令:docker version
若安装了docker,则会返回版本。
2)若安装了docker:
执行命令:systemctl status docker
确认docker是running状态
2.4 确认用户权限
运行finekey工具的用户,必须要有root用户组权限。
3. 上传FineKey编辑
3.1 获取工具
「运维平台」目前仍处于内测阶段。
如需试用运维平台,请填写表单申请:运维平台申请表
或微信扫描下方二维码,进入运维平台产品试用报名入口。
3.2 上传工具
获得工具包后,需要将它上传到 Linux,上传文件的方法请自行查阅相关资料。
本文示例是将工具包上传到了 CentOS 7.6.1810 的 /home/test 路径下,如下图所示:
3.3 解压工具
先使用 cd 命令进入工具包所在文件夹下,再键入如下命令进行解压:
tar zxvf finekey-fr-publish11.0.tar.gz
3.4 文件说明
解压后的文件如下表所示:
文件夹/文件 | 文件说明 | |
---|---|---|
finekey/bin | 运行finekey的可执行文件 | |
finekey/conf | finekey.yaml | 新部署运维平台配置文件 |
finekey.migrate.yaml | 迁移工程配置文件 | |
finekey.push.yaml | 拉取镜像配置文件 | |
finekey/resources | 资源文件,镜像包放在其中images文件夹中 |
4. 配置finekey.yaml文件编辑
yaml 文件指的是工具解压目录下 conf 文件夹里的 finekey.yaml,该文件是控制后面整个自动部署流程的。
无任何自备组件的单机部署可不做任何配置,可以直接在当前宿主机本地部署,各个组件使用部署工具自带组件。
但是如果有个性化或特殊的部署需求,可以打开 yaml 文件自行配置,yaml文件的配置需要在启动FineKey之前完成。
4.1 文件内容说明
配置 | 配置项 | 说明 |
---|---|---|
基础配置 | yaml文件中需要配置一些部署所需的必要信息,例如工程节点配置等 | |
cluster | 单机/集群部署,建议修改为true false:代表单机部署 true:代表集群部署 | |
depoloymentType | V1.3.1及之后版本,可在nodes配置前,通过添加语句进行纯净部署 语句depoloymentType: xxx depoloymentType值支持三种: 0:部署2.2节列举的全部组件+frbi工程相关组件 1:只部署frbi相关组件,不部署运维组件 2:只部署2.2节列举的全部组件,不部署frbi相关组件 建议配置为2,只部署运维组件。再使用运维平台部署FineReport、FineBI等工程组件,详情请参见:部署新项目 。 | |
nodes | 值为部署的节点相关配置 包括:ip,port,user,password 集群有几个节点就写几组ip,port,user,password 如果ssh方式为密钥,则将password配置注释,新增keypath: 密钥绝对路径/密钥文件 | |
dataRootPath | 根挂载目录 挂载目录所在分区,必须满足磁盘空闲空间≥500G | |
repo | 1)如需全新安装registry镜像仓库,可指定仓库端口 2)如已有镜像仓库,需要输入仓库的url、username、password、ssl | |
全新安装组件 | components下,配置的是2.2节列举的待安装的组件 全新安装的每个组件都可以自定义端口,参数为:portMapping: {访问用的端口: 镜像中固定的端口 }。 安装的组件和默认端口如2.2节,请排查端口是否可用,是否开放,并修改yaml文件中的端口。 | |
fr | FineReport环境变量,默认为5120M 可在 yaml 文件 config 中自行配置xmx值。 | |
mysql | 如果在下方existingComponents中未配置已有finedb数据库,默认安装一个mysql5数据库作为外接配置库 无论是否有指定的外接数据库,都建议默认安装内置的mysql5容器,数据库名finedb,用户名root,密码mysql 可在 yaml 文件中修改mysql数据库的端口和密码 | |
ops_agent | 默认安装一个ops_agent,可在 yaml 文件中修改端口。 | |
redis | 如果没有已部署的状态服务器,放开components中redis的注释,会自动安装单机redis 暂不支持安装redis集群 | |
minio | 如果没有已部署的文件服务器,放开components中minio的注释,会自动安装minio作为文件服务器 若同时存在minio、sftp和ftp时,集群默认优先使用ftp作为文件服务器,其次sftp,最后minio | |
nginx | 无需单独配置,默认安装nginx作为负载均衡 | |
ftp | 无需单独配置,默认安装ftp ftp会用linux自带的sftp,放在挂载目录/fr下 若同时存在minio、sftp和ftp时,集群默认优先使用ftp作为文件服务器,其次sftp,最后minio | |
对接原有组件 | existingComponents下,是用于工程对接原本就有的组件 如果有指定的外接数据库、文件服务器,状态服务器以及负载均衡,放开 yaml 文件中existingComponets部分,并配置好已有组件的相关信息,方便接入工程 | |
finedb | 如果自备外接finedb数据库,放开existingComponets中finedb部分 用于对接已有的数据库,作为工程的外接finedb库 databaseType:数据库类型 database:数据库名称 schema:数据库模式 ip:数据库所在IP port:数据库端口 user:数据库用户名 password:数据库密码 | |
redis | 如果自备redis,放开existingComponets中redis部分 用于对接已有的redis,作为工程的状态服务器,支持对接单机redis/集群redis password:密码 nodes:按照格式罗列各个节点的ip和端口 | |
ftp | 文件服务器,目前只支持和finekey在同一机器上的非默认文件服务器,path处只能写当前机器上的目录绝对路径 若同时存在minio、sftp和ftp时,集群默认优先使用ftp作为文件服务器,其次sftp,最后minio | |
minio | 若同时存在minio、sftp和ftp时,集群默认优先使用ftp作为文件服务器,其次sftp,最后minio |
4.2 文件示例
基础配置:
cluster: false #是否集群
deploymentType: 0 # 0:常规部署 1:只部署应用 2:只部署运维平台
nodes:
- ip: localhost #机器ip,本地则直接localhost
port: 22 #机器ssh端口,localhost可不写
user: #节点ssh用户,localhost可不写
password: #节点ssh密码,非root是必填,除非普通用户但sudo里配置了nopass,其他情况比如设置了免密登录,也得填密码
keyPath: #节点ssh密钥文件,root用户可以使用,普通用户但是sudo里配置了nopass也可以使用
- ip: 192.168.101.145
port: 22
user: xxx
password: xxx
全新安装组件:
dataRootPath: ~/data #各个组件默认创建的挂载路径
repo:
port: 5000
components: #需要安装的组件
fr:
config: { xmx: 5120 } #环境变量
# redis:
# password: redis
mysql:
password: mysql
rocketmq_namesrv:
portMapping: {9876: 9876}
rocketmq_broker:
portMapping: {10911: 10911}
password: rocketmq
rocketmq_exporter:
portMapping: {5557: 5557}
ops_agent:
portMapping: {9070: 9070}
elasticsearch:
portMapping: {9200: 9200}
password: elasticadmin
minio:
portMapping: {9000: 9000, 9001: 9001}
password: minioadmin #用户默认为minioadmin,密码长度不小于8位
配置已有组件:
existingComponents: #如果已有组件,请配置下方,无现有组件,下方空置即可
finedb:
databaseType: oracle
database: fr
schema: xxx
ip: 192.168.5.47
port: 1521
user: system
password: xxx
redis:
password: 123456
nodes:
- ip: 192.168.101.201
port: 7379
ftp:
ip: 192.168.101.201
port: 21
user: adrian
password: 1
path: /elijah
charset: UTF-8
minio: #同时存在minio、sftp和ftp时,优先使用ftp,其次sftp,最后minio
ip: 192.168.5.47
port: 9000
user: adrian
password: minioadmin
path: /test
ssl: false #不支持本地生成的ssl证书
bucket: test
sftp: #同时存在minio、sftp和ftp时,优先使用ftp,其次sftp,最后minio
-ip: 192.168.5.47 #sftp的地址信息默认使用nodes的第一个
port: 1521
user: system
password: qwe123
path: ~/data/sftp #默认使用dataRootPath/fanruan_xxxxx/sftp
5. 启动FineKey部署编辑
5.1 启动部署
1)使用 cd 命令进入工具解压目录下 bin 文件夹
2)键入如下命令执行自动化部署:
./finekey
3)整个部署过程需要花费一段时间,请耐心等待,如果部署过程中出现报错,请参考 容器化部署常见问题 ,查看有无对应的解决方案。
5.2 完成部署
当出现 deployment success!bye~ 提示时,表示已经成功部署,如下图所示:
5.3 访问工程
部署完成后,服务会自动启动,此时可以直接访问「决策平台」和「运维平台」:
访问运维平台,在浏览器地址栏输入:http://{ip}/ops/decision(请把{ip}换成自己的主机IP)
例如本文示例,浏览器地址栏键入:http://192.168.110.254/ops/decision,即可访问运维平台,如下图所示:
6. 容器化运维指令编辑
此处列出一些常用的容器化运维指令:
重启容器指令:docker restart 容器名,例如:docker restart fanruan_fr
查看所有容器运行情况:docker ps -a
启动指定容器:docker start 容器名,例如:docker start fanruan_fr
停止指定容器:docker stop 容器名,例如:docker stop fanruan_fr