1. 概述编辑
1.1 版本
FineBI 版本 | JAR 包版本 | 新增功能 |
---|---|---|
5.1.7 | 2020-11-05 | 支持热备部署,热备插件需要向技术支持获取 |
5.1.10 | 2021-02-05 | 热备插件内置到 JAR 包中,更新 JAR 时自动安装最新的热备插件;配置 fine_conf_entity 表时,新增参数:hotBackConf.slave |
1.2 应用场景
用户工程的 JAR 为纯抽取 JAR(Spiser 引擎)或者直连和抽取混用 JAR 时,若希望节点宕机不影响工程使用,可参考本文配置热备。
1.3 功能简介
当主节点(active节点)宕机后,子节点可以在短时间内顶替主节点成为新的 active 节点保证工程正常使用。
active 节点的数据每次更新完成之后,standby 节点会自动根据命令同步 active 节点上的表数据(默认初始化配置的 master 节点为 active 节点,子节点为 standby 节点)。
注1:热备支持的集成模式为纯 Spider 引擎或者 Spider 引擎+直连引擎。
注2:本方案仅解决高可用诉求,不具备 BI 请求的负载均衡属性,对 BI 工程并发情况没有优化。
1.4 基本架构
1.5 实现步骤
热备步骤如下图所示:
2. 准备工作编辑
2.1 安装包清单
配置热备所需的环境安装包清单如下表所示:
文件内容 | 说明 | 是否必须 |
---|---|---|
JDK 1.8安装包 | 节点工程所在服务器 JDK 版本一致,版本为:JDK 1.8 且小版本需在 JDK8u102 以上 | 是 |
FineBI 安装包 | 确认两个工程版本和 JAR 包的时间一致,且都为 5.1.7 及以上版本 | 是 |
FTP 安装包 | 安装配置步骤请参见本文 3.2 节内容 注:配置集群时建议使用 文件服务器 | 是 |
Redis 安装包 | 安装配置步骤请参见本文 3.3 节内容 | 是 |
Nginx 安装包 | 安装配置步骤请参见本文 3.6、3.7 节内容 | 是 |
Nginx 健康检查包 | 安装配置步骤请参见本文 3.6、3.7 节内容 | 是 |
热备插件 | 参考本文 3.9 节内容 | 是 |
2.2 基础环境准备
参考 热备集群环境准备 准备好基础环境。
Redis 和 Nginx 在 Linux 系统上的部署均依赖 GCC 编译器,所以须注意,若选用 Linux 服务器,请保证系统具备 GCC 编译环境。查询命令:gcc -v,若没有 GCC 环境则需要自行安装,联网安装命令:yum install gcc gcc-c++
确认工程已经部署在容器中( 例如:Tomcat 要求版本一致且在 8.5 及以上)。
构成集群的两个环境所依赖的 JDK 版本要一致。
两工程的服务器时间一致。
2.3 确认通信状态
确认主节点工程已经配置外接数据库,若两个工程都配置了外接数据库,则必须为同一个外接数据库。
确认两个工程彼此之间以及各自到外接数据库之间的通讯正常。
3. 集群及组件部署编辑
应用集群必须先将 BI 工程部署到外部容器,这里以 Tomcat 服务器为例。
3.1 单机 Tomcat 工程配置
参考 Tomcat服务器部署 在两个服务器中部署 FineBI 工程。
Tomcat 默认端口为 8080,若系统端口冲突可自行改为其他端口,如示例修改 Tomcat 访问端口为 8818,修改%Tomcat%/conf下的 server.xml 文件,如下图所示:
启动工程之后,配置外接数据库
注:配置作为主节点的工程的外接数据库。
在浏览器中输入访问地址http://IP:端口/webroot/decision,成功打开 BI 工程登录页面,即部署成功。
3.2 安装配置 FTP
在主节点工程所在服务器安装 FTP 。
详情参见:Linux 系统安装配置 FTP
3.2.1 安装 FTP
执行命令检查是否安装 FTP:
rpm -qa |grep vsftpd
若未安装,则联网安装,执行命令:
yum install vsftpd -y
3.2.2 修改 FTP 相关配置
1)编辑 vsftpd.conf 配置文件,将 anonymous_enable 值改为 NO ,禁止匿名登录。
vi /etc/vsftpd/vsftpd.conf # 编辑vsftpd.conf配置文件
anonymous_enable=NO # 禁止匿名登录
2)新增 FTP 用户
useradd ftpuser # 新建名为 ftpuser 的用户,并自动建立/home/ftpuser 目录
passwd ftpuser # 设置该用户的密码
然后连续两次输入要给该用户设置的密码即可,##使用 ftpuser 的账户密码可以登录并使用 ftp 服务##
3)启动 vsftpd
service vsftpd start # 启动vsftpd服务
4)拷贝 WEB-INF,给文件夹赋权限
拷贝正式环境 Web 工程里的 WEB-INF 文件夹,并粘贴到/home/ftpuser目录下,在平台开启文件服务器时,ftp 路径填写 /home/ftpuser/WEB-INF
赋予权限
chmod -R 777 /home/ftpuser #给 ftpuser 文件夹赋予写入权限
3.3 安装配置 Redis
在主节点工程所在服务器安装 Redis 。
详情参见:Linux 系统安装配置单机 Redis
3.3.1 下载源码包
Redis-5.0.4:redis-5.0.4.tar.gz
3.3.2 安装
mkdir /usr/redis # 创建 Redis 目录
cd /usr/redis # 进入目录
# 将 Redis 安装包传输到该目录下 #
tar -zxvf redis-5.0.4.tar.gz # 解压安装包
cd /usr/redis/redis-5.0.4 # 进入解压目录
make
make test
make install # 安装命令
redis-server -v # 检查安装结果
3.3.3 修改配置
进入编辑文件,如下所示:
vi /usr/redis/redis-5.0.4/redis.conf # 编辑 redis.conf 配置文件
修改如下内容:
bind 127.0.0.1 ---> # bind 127.0.0.1
protected-mode yes ---> protected-mode no
daemonize no ---> daemonize yes # 默认以后台程序方式运行,不需要加&强制后台运行了
port 6379 ---> port 7379 # 将端口改为 7379
pidfile /var/run/redis_6379.pid ---> pidfile /var/run/redis_7379.pid # 将端口改为 7379
# requirepass foobared ---> requirepass 123456 # 123456为密码可任意替换
maxmemory 4294967296 # 配置内存为 4G 单位是 byte,也可以配置成其他大小,推荐大小为4G(需添加内容)
maxmemory-policy allkeys-lru # 过期策略,LRU 近期最少使用算法(需添加内容)
3.3.4 启动 redis
cd /usr/redis/redis-5.0.4/src #进入 src 目录
./redis-server /usr/redis/redis-5.0.4/redis.conf #启动 Redis 时需指定配置文件
redis-cli -p 端口 -a 密码 #本地启动Redis客户端,可以进行查看key值,删除key值,检查redis状态等操作
3.4 开启集群并拷贝部署子节点
启动之前部署好的主节点,配置集群。
以管理员身份进入数据决策系统,点击「管理系统>智能运维>集群配置」,如下图所示:
3.4.1 配置状态服务器
打开状态服务器按钮,选择 redis 单机,主机 IP 中填入使用的 redis 所在的服务器地址,端口填写为 3.3 节中修改的端口号 7379,输入密码,测试连接成功即可,如下图所示:
3.4.2 配置文件服务器
选择「文件服务器共享」进行文件服务器的配置,主机为 3.2 节安装 FTP 的主机 IP,用户名和密码为 3.2 节设置的用户名密码,目录为 3.2 节创建好的 /home/ftpuser/WEB-INF,点击「测试连接并保存」,如下图所示:
3.4.3 开启集群
点击「开启集群」按钮,如下图所示:
3.4.4 拷贝主节点工程到子节点
关闭主节点工程,拷贝主节点 webroot 至子节点工程 %Tomcat%/webapps下,建议压缩打包后再传输、解压,节省时间。
重启两个节点工程,即可看到两个节点,则部署完成,如下图所示:
3.5 安装 nginx
详情请参见:Linux 系统安装配置 Nginx
3.5.1 下载安装包
在服务器上安装 nginx,在 /usr下新建一个 nginx 目录,上传并解压 nginx 的安装包
安装包如下:ngx_healthcheck_module-master.zip、nginx-1.15.6.tar.gz
3.5.2 安装步骤
1)执行如下命令:
cd /usr/nginx #进入目录
tar zxvf nginx-1.15.6.tar.gz # 解压 nginx-1.15.6
unzip ngx_healthcheck_module-master.zip # 解压 ngx_healthcheck_module-master
2)然后执行以下命令,安装所需的依赖包:
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
3)开始安装,执行如下命令:
cd /usr/nginx/nginx-1.15.6 #进入解压目录
patch -p1 < /usr/nginx/ngx_healthcheck_module-master/nginx_healthcheck_for_nginx_1.14+.patch # 应用健康检查补丁
./configure --prefix=/usr/nginx --with-stream --add-module=/usr/nginx/ngx_healthcheck_module-master #检查依赖
make && make install #开始安装
4)启动 nginx
进入到/usr/nginx/sbin 下,使用./nginx启动 nginx ,更多命令介绍如下所示:
./nginx -s reload 重启
./nginx 启动
./nginx -s stop 关闭
5)检查 nginx 安装情况,执行
ps -ef|grep nginx
3.6 修改 Nginx 配置
想使用 Nginx 搭配 Web 容器发挥负载均衡的作用,必须还要对 Nginx 进行配置。
建议直接下载本节所示的 nginx.conf 文件替换现有的 nginx.conf 文件,根据实际情况修改以下部分内容:
示例:nginx.conf
3.6.1 配置主、子节点的 IP
如下图所示:
3.6.2 配置 Nginx 转发
修改端口和 IP 如下图所示:
3.6.3 重启 Nginx
配置完成后重启 Nginx,执行以下命令
cd /usr/nginx/sbin #进入sbin目录
./nginx -s reload #启动nginx
3.7 对接单节点
在「管理系统>智能运维>集群配置>节点管理」下记住主节点服务器的 hostname 和节点 ID,如下图所示:
3.7.1 JAR 包在 2021-02-05 之前
集群 master 节点配置:外置数据库中找到 BI 的外置数据库配置表fine_conf_entity 表,新增 3 条 ID 记录,具体说明如下表所示:
id | value | 说明 |
---|---|---|
SystemOptimizationConfig.biClusterMasterNodeHostName | 主节点服务器的 hostname | id 用来规定 Web 集群中的主节点,value 对应主节点服务器的 hostname |
hotBackConf.master | 主节点的 hostname | 热备 master 节点配置 |
SystemOptimizationConfig.ClientMasterId | 主节点 ID | 修改定时任务指定节点 |
如下图所示:
3.7.2 JAR 包在 2021-02-05 及之后
集群 master 节点配置:使用 fine_conf_entity可视化配置插件 新增 4 条 ID 记录,具体说明如下表所示:
id | value | 说明 |
---|---|---|
SystemOptimizationConfig.biClusterMasterNodeHostName | 主节点服务器的 hostname | id 用来规定 Web 集群中的主节点,value 对应主节点服务器的 hostname |
hotBackConf.master | 主节点的 hostname | 热备 master 节点配置 |
hotBackConf.slave | 备节点的 hostname | 备节点配置 |
SystemOptimizationConfig.ClientMasterId | 主节点 ID | 修改定时任务指定节点 |
如下图所示:
3.8 安装热备插件
部署完成之后安装热备插件,重启集群,先重启主节点,再重启子节点,二者间隔至少 30s。
注:在某一个节点安装插件即可。
3.8.1 JAR 包在 2021-02-05 之前
如需获取热备插件,请联系技术支持。技术支持联系方式:QQ「800049425」、电话「400-811-8890」。
3.8.2 JAR 包在2021-02-05 及之后
热备插件会随主 JAR 的升级自动解压安装覆盖,正常情况下无需手动安装插件:
若升级前未安装热备插件,JAR 包更新到 2021-02-05 及之后版本,启动工程后,将自动安装最新的热备插件。
支持换 JAR 自动替换最新的插件,重启工程后会自动解压安装,可覆盖原插件。
4. 效果检查编辑
节点有四个概念:master(定义的主节点)、slave(定义的备节点)、active(当前实际的主节点)、standby(当前实际的备节点)。
一般来说,用户环境两个节点机器性能是差不多的,所以一般都是主节点默认成为 active(当前实际的主节点)。但有些情况下,若次节点性能较好,启动得比主节点早,会先抢到锁成为 active ,主节点由于启动得晚会成为 standby 。
4.1 日志检查
在「管理系统>智能运维>平台日志」中点击全局设置,将日志级别调整为 INFO ,点击「保存」,如下图所示:
工程启动,查看 active 节点的启动日志,能看到[HotBack][Startup] register current node as active node : xxx,其中 xxx 为 active 节点的 hostname 。如下图所示:
4.2 热备功能检查
kill 掉主节点,等待 90s ,检查备节点日志是否打印: register current node as active node : xxx,其中 xxx 是备节点的 hostname(此时备节点已经成为新的 active 节点,主节点重启后会转为 standby 节点),如下图所示:
5. 注意事项编辑
5.1 热备数据源简介
为防止节点数据同步失败,当节点启动或发生节点切换时,新 active 节点会对节点本地数据进行检测,若检测到本地数据滞后,会对对应的数据表拉起热备数据源更新任务。