1. 概述编辑
1.1 应用场景
用户工程的 JAR 为纯抽取 JAR(Spiser 引擎)或者直连和抽取混用 JAR 时,若希望节点宕机不影响工程使用,可参考本文配置热备。
1.2 功能简介
当主节点(active节点)宕机后,子节点可以在短时间内顶替主节点成为新的 active 节点保证工程正常使用。
active 节点的数据每次更新完成之后,standby 节点会自动根据命令同步 active 节点上的表数据(默认初始化配置的 master 节点为 active 节点,子节点为 standby 节点)。
注1:热备支持的集成模式为纯 Spiser 引擎或者 Spider 引擎+直连引擎。
注2:本方案仅解决高可用诉求,不具备 BI 请求的负载均衡属性,对 BI 工程并发情况没有优化。
1.3 基本架构
1.4 实现步骤
热备步骤如下图所示:
2. 准备工作编辑
2.1 安装包清单
配置热备所需的环境安装包清单如下表所示:
文件内容 | 说明 | 是否必须 |
---|---|---|
JDK 1.8安装包 | 节点工程所在服务器 JDK 版本一致,且在 1.8 及以上 | 是 |
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 及以上)。
两工程的服务器时间一致。
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
执行命令检查是否安装 FTP:
rpm -qa |grep vsftpd
若未安装,则联网安装,执行命令:
yum install vsftpd -y
新增 FTP 用户
useradd ftpuser # 新建名为 ftpuser 的用户,并自动建立/home/ftpuser 目录
passwd ftpuser # 设置该用户的密码
然后连续两次输入要给该用户设置的密码即可,##使用 ftpuser 的账户密码可以登录并使用 ftp 服务##
启动 vsftpd
service vsftpd start # 启动vsftpd服务
拷贝 WEB-INF,给文件夹赋权限
在/home下新建目录 ftpuser 作为 Tomcat 的文件服务器,将 %Tomcat%/webroot 工程下的 WEB-INF 拷贝到 /home/ftpuser 下,如下图所示:
详情参见:Linux 系统安装配置 FTP
3.3 安装 Redis
在安装 FTP 的服务器上安装 Redis .
3.3.1 检查 GCC 编译环境
执行如下命令:
gcc -v #检查是否有 gcc 编译器
3.3.2 下载源码包
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 volatile-lru # 过期策略,LRU 近期最少使用算法(需添加内容)
详情参见:Linux 系统安装配置单机 Redis
3.4 配置开启集群
注:配置之前确认 Redis 开启。
3.4.1 配置状态服务器
管理员登录部署好的 BI 工程,选择「管理系统>智能运维>集群配置」,打开状态服务器按钮,选择 redis 单机,主机IP 中填入使用的 redis 所在的服务器地址,端口填写为 3.3.3 节中修改的端口号 7379,密码无,测试连接成功即可,如下图所示:
3.4.2 配置文件服务器
选择「文件服务器共享」进行文件服务器的配置,主机为 3.2 节安装 FTP 的主机 IP,用户名密码即它的对那个用户名和密码,目录为 3.2 节创建好的 /home/ftpuser/WEB-INF,点击「测试连接并保存」,如下图所示:
3.4.3 开启集群
点击「开启集群」按钮,如下图所示:
3.5 拷贝主节点工程到子节点
将做了前面操作的工程 %Tomcat%/webapps/webroot 工程拷贝至另一个子节点工程 %Tomcat%/webapps下,替换 webroot 。启动主节点工程,即可看到两个节点,则部署完成,如下图所示:
3.6 安装 Nginx
在服务器上安装 nginx,在 /usr下新建一个 nginx 目录,上传并解压 nginx 的安装包
安装包如下:ngx_healthcheck_module-master.zip、nginx-1.15.6.tar.gz
执行如下命令:
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
确认已有 gcc 环境,若该节点没有,则重新安装,执行:
gcc -v
然后执行以下命令,安装所需的依赖包:
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
开始安装,执行如下命令:
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 #开始安装
检查 nginx 安装情况,执行
ps -ef|grep nginx
nginx命令补充:
进入到/usr/nginx/sbin 下:
./nginx -s reload 重启
./nginx 启动
./nginx -s stop 关闭
3.7 修改 Nginx 配置
示例:nginx.conf
3.7.1 配置主、子节点的 IP
如下图所示:
3.7.2 配置 Nginx 转发
修改端口和 IP 如下图所示:
3.7.3 重启 Nginx
配置完成后重启 Nginx,执行以下命令
cd /usr/nginx/sbin #进入sbin目录
./nginx -s reload #启动nginx
3.8 对接单节点
在「管理系统>智能运维>集群配置>节点管理」下记住主节点服务器的 hostname 和节点 ID,如下图所示:
集群 master 节点配置:关闭「管理系统>智能运维>集群配置>节点管理」下的 「开启集群」按钮,在外置数据库中找到 BI 的外置数据库配置表fine_conf_entity 表,新增 4 条 ID 记录,具体说明如下表所示:
id | value | 说明 |
---|---|---|
SystemOptimizationConfig.biClusterMasterNodeHostName | 主节点服务器的 hostname | id 用来规定 Web 集群中的主节点,value 对应主节点服务器的 hostname |
WebSocketConfig.requestPorts | websocket 端口号 | 为了防止 websocket 端口冲突,需要修改 BI 的外置数据库配置表 fine_conf_entity 表中对应的 websocket 端口号,与 3.7.2 节 Nginx 配置文件中的保持一致 |
hotBackConf.master | 主节点的 hostname | 热备 master 节点配置 |
SystemOptimizationConfig.ClientMasterId | 主节点 ID | 修改定时任务指定节点 |
如下图所示:
以上四个参数修改和确认完成后,开启「管理系统>智能运维>集群配置>节点管理」下的 「开启集群」按钮。
3.9 安装热备插件
部署完成之后安装热备插件,重启集群,先重启主节点,再重启子节点,二者间隔至少 30s。
注1:在某一个节点安装插件即可。
注2:如需获取热备插件,请联系技术支持。技术支持联系方式:QQ「800049425」、电话「400-811-8890」。
4. 效果检查编辑
4.1 日志检查
在「管理系统>智能运维>平台日志」中点击全局设置,将日志级别调整为 INFO ,点击「保存」,如下图所示:
kill 掉主节点,检查子节点 fanruan.log 日志是否打印: register current node as active node : xxx ,其中 xxx 是子节点的hostname(此时子节点已经切换为新的active节点,主节点转为standby节点),如下图所示:
4.2 查看 Nginx 状态页
在浏览器输入ip:负载均衡端口号/status查看健康页面,可以看到节点健康状态,会发现当前 active 节点的 BI.main 状态为 up ,而当前 standby 节点的 BImain 状态为标红,这是正常情况。如下图所示:
注:除了 standby 节点的 BI.main 标红为正常,其他节点状态应该都不标红 。