一. Smartbi Proxy 概述
Smartbi Proxy负载均衡服务,为产品提供负载均衡和代理服务。
1. 使用场景
Smartbi 在集成到第三方系统时,遇到了跨域访问问题,则需要在第三方系统的应用服务器上部署 Smartbi Proxy,然后通过其间接访问 Smartbi 应用;
把 Smartbi 部署在内网隔离环境下,但同时希望可以在外网上访问,我们就可以在外网上部署 Smartbi Proxy,通过其代理访问内网的 Smartbi 应用。
2. 工作原理
proxy代理分发的原理是按“CPU使用率”、“内存”、“GC时间”去分发,如下图:
注意 |
---|
用户可以动态的调整资源阈值、cpu、内存、gc等权重比 |
如果某个服务器节点故障,则请求分发时会跳过该节点。
或者当某个服务器节点的CPU使用率和GC时间大于预设的阈值,则请求分发时会跳过该节点,如下图
3. 特点
动态路由、审查与监控、稳定、支持协议转发日志;
支持限流、动态负载均衡(根据资源繁忙程序进行分发)、身份安全验证;
微服务网关特点。
4. 异常熔断机制
异常熔断机制能够防止“由于单个服务节点出现问题从而导致大面积的服务节点异常”这类事件的发生。
当产品在某一个时间内快速出现失败(出现超时、拒绝连接等情况)时,会触发异常熔断机制。此时分发异常的节点10s内默认不可用,Proxy会在一定时间内检查后面的节点是否正常,如果检测到还有正常的节点,则会转发到其他正常的节点,以确保系统核心服务能够正常运行。
通过Smartbi proxy实现Smartbi集群的负载均衡,提高Smartbi的可用性。
二. 操作说明
1. 环境准备
IP地址 | 主机名 | 角色 |
---|---|---|
192.168.137.110 | smartbi-1 | smartbi 集群节点1 |
192.168.137.111 | smartbi-2 | smartbi 集群节点2 |
192.168.137.112 | proxy | smartbi-proxy 负载均衡 |
注意 |
---|
不同集群之间不可以使用同一个proxy来代理 |
安装包列表:
服务 | 软件包 | 备注 |
---|---|---|
smartbi | smartbi.war | smartbi |
JDK | jdk1.8.0_181-linux_x64.tar.gz | JDK |
tomcat | apache-tomcat-8.5.51.tar.gz | Tomcat安装包 |
smartbi proxy | smartbi.war ProxyClient.ext | smartbi proxy程序安装包 smartbi proxy 扩展包,部署smartbi集群时需要 |
安装介质,请联系Smartbi官方支持获取。 |
信息 | ||
---|---|---|
| ||
扩展包说明: 1、ProxyClient扩展包是用于扩充或改造Smartbi产品功能的一个扩展包。扩展包也可以通过扩展点对Smartbi进行定制开发,能够把新功能无缝集成到系统中。 2、扩展包其实是一个类war包的东西,其实Smartbi通过扩展包机制将其作为smartbi.war包的补充。 3、配置集群时必须配置。 |
2. 部署Smartbi
smartbi-1和smartbi-2两台服务器节点,参考 Linux Tomcat部署Smartbi 部署好Smartbi,并配置好License,知识库相关信息,能正常访问Smartbi。
注意 | ||
---|---|---|
| ||
Smartbi集群需要连接 1、Smartbi集群需要连接相同的知识库 2、所有节点的smartbi应该使用相同的版本 |
3. 部署Smartbi Proxy
3.1 环境准备
①在apache官网下载apache-tomcat-8.5.57.tar.gz安装包
http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz
②在oracle官网下载64位的jdk安装包
注意 | ||
---|---|---|
| ||
此版本的Smartbi Proxy只能在tomcat8、JDK1.8以上环境安装部署。 |
3.1.1 防火墙配置
为了便于安装,建议在安装前关闭防火墙。使用过程中,为了系统安全可以选择启用防火墙,但必须启用Smartbi使用到的相关端口。
方法一:关闭防火墙
临时关闭防火墙(立即生效)
代码块 | ||
---|---|---|
| ||
systemctl stop firewalld |
永久关闭防火墙(重启后生效)
代码块 | ||
---|---|---|
| ||
systemctl disable firewalld |
查看防火墙状态
代码块 | ||
---|---|---|
| ||
systemctl status firewalld |
方法二:开启防火墙
相关服务及端口对照表
服务名 | 开放端口 |
---|---|
Smartbi Proxy | 8080 |
如果确实需要打开防火墙安装,需要给防火墙放开以下需要使用到的端口
开启端口:8080
代码块 | ||
---|---|---|
| ||
firewall-cmd --permanent --add-port=8080/tcp |
配置完以后重新加载firewalld,使配置生效
代码块 | ||
---|---|---|
| ||
firewall-cmd --reload |
查看防火墙的配置信息
代码块 | ||
---|---|---|
| ||
firewall-cmd --list-all |
关闭selinux
临时关闭selinux,立即生效,不需要重启服务器。
代码块 | ||
---|---|---|
| ||
setenforce 0 |
永久关闭selinux,修改完配置后需要重启服务器才能生效
代码块 | ||
---|---|---|
| ||
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config |
3.1.2 安装Java环境
安装包解压到/opt目录
代码块 | ||
---|---|---|
| ||
tar -zxvf jdk1.8.0_181-linux_x64.tar.gz -C /data |
配置java环境变量
①执行 vi ~/.bash_profile 文件末尾添加,并保存
代码块 | ||
---|---|---|
| ||
export JAVA_HOME=/data/jdk1.8.0_181 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH |
②使配置生效
代码块 | ||
---|---|---|
| ||
source ~/.bash_profile |
③查看java版本信息
代码块 | ||
---|---|---|
| ||
java -version |
3.2. 部署Smartbi Proxy
3.2.1 安装Tomcat
①Tomcat安装包解压到/data目录
代码块 | ||
---|---|---|
| ||
tar -zxvf apache-tomcat-8.5.57.tar.gz -C /data |
②修改Tomcat启动参数
进入Tomcat下的bin目录
代码块 | ||
---|---|---|
| ||
cd /data/apache-tomcat-8.5.57/bin |
创建Tomcat启动参数文件:setenv.sh
代码块 | ||
---|---|---|
| ||
vi setenv.sh |
具体参数如下(根据实际部署替换配置中的路径):
代码块 | ||
---|---|---|
| ||
export JAVA_HOME="/data/jdk1.8.0_181"
export JRE_HOME="/data/jdk1.8.0_181/jre"
export CATALINA_HOME="/data/apache-tomcat-8.5.57"
export JAVA_OPTS="-Dfile.encoding=UTF-8 -Duser.region=CN -Duser.language=zh -Djava.awt.headless=true -Xms512m -Xmx2048m -XX:MaxPermSize=512m -Dmail.mime.splitlongparameters=false -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC" |
赋予setenv.sh相关权限
代码块 | ||
---|---|---|
| ||
chmod 755 setenv.sh |
3.2.2 部署Smartbi Proxy
服务 | 软件包 | 备注 |
---|---|---|
Smartbi Proxy | smartbi.war | Smartbi Proxy程序安装包 |
ProxyClient.ext | Smartbi Proxy 扩展包,部署smartbi集群时需要 |
1)上传Smartbi Proxy war包
将smartbi.war上传到/data/apache-tomcat-8.5.57/webapps目录下
信息 |
---|
proxy会获取version.txt判断网络是否连通,因此war包中必须有version.txt文件,否则会无法访问smartbi。假如没有该文件,后期通过proxy访问smartbi会出现500报错。 |
2) 启动Tomcat 服务器
进入/data/apache-tomcat-8.5.57/bin目录下,执行startup.sh脚本启动tomcat程序
代码块 | ||
---|---|---|
| ||
cd /data/apache-tomcat-8.5.57/bin ./startup.sh |
3.2.3 登陆Smartbi Proxy控制台
浏览器访问 http://IP:8080/smartbi/proxy#/login
初始默认账号:admin 密码:admin
登陆后首页如下图:
由于没有Smartbi Proxy配置将扩展包上传到Smartbi服务器中,所以首页显示暂无数据。
注意 |
---|
Smartbi Proxy主页默认暂无数据,在使用Proxy为Smartbi做代理时,需要将Proxy的扩展包上传到Smartbi中,并在Smartbi Config页面配置Proxy代理相关信息。Smartbi会将自身信息上报到Proxy中。 |
在监控设置中,设置项的默认值说明如下:
修改Smartbi Proxy登陆密码
选择修改密码,输入旧密码,设置新密码,保存即可。
Proxy日志默认保存在:<Tomcat安装路径>/log/目录下
4. 配置Smartbi集群
4.1 上传Proxy扩展包,配置代理地址
注意 |
---|
所有Smartbi节点均需 上传proxy扩展包 和 配置代理地址 |
① 浏览器访问所有Smartbi节点的config页面:http://IP:端口/smartbi/vision/config ,找到【扩展包】选项,配置扩展包路径,如果已设置则忽略,如下图:
② 点击选择 选择ProxyClient.ext扩展包,上传,上传完成后需要重启Smartbi,使扩展包生效。
③ Smartbi重启完成后,重新登录Smartbi Config页面,滚动到页面底部,找到【代理服务】选项,配置代理服务器地址和代理服务器登录账号密码,如下图:
注意 |
---|
若config页面没有显示【代理服务】选项,则需要清理浏览器全部缓存,并关闭所有的浏览器,再重新打开浏览器访问config页面。 |
注意 |
---|
若需配置多个proxy代理服务,可在“代理服务器地址”中输入多个proxy代理服务地址,服务地址之间使用英文逗号隔开 注:配置代理服务时,需确保多个代理服务器使用相同的用户名和密码,并且服务都正常启动方可通过“测试代理服务连接”。 |
配置完成,保存即可,无需重启Smartbi。
4.2 Smartbi设置集群配置
分别访问Smartbi节点的conf页面(即 http://IP:Port/smartbi/vision/config.jsp),设置集群配置,参考以下配置方法。
集群节点smartbi-1主机:
服务器地址列表:192.168.137.110:40000,192.168.137.111:40000
其中:192.168.137.110 是 smartbi-1 服务的物理机IP地址;
192.168.137.111 是 smartbi-2 服务的物理机IP地址;
端口40000是Smartbi集群内部通信的端口,远程端口:40001,用于远程连接其他Smartbi服务器缓存共享的端口,备用监听端口增值填写100,设置完成保存,并重启Smartbi。
注意 |
---|
使用手动模式时,部署Smartbi集群的各个节点,网络必须是互相连通的。 如果smartbi服务器关闭防火墙,则无需设置远程访问端口和备用监听端口增值;如果smartbi服务器开启防火墙,则需要开放对应的端口:40000,40001,40100,40101 端口说明以及开放防火墙操作: 40000:集群监听端口; 40100:集群备用监听端口 40001:集群远程访问端口; 40101:集群远程访问备用端口 firewall-cmd --permanent --add-port=40000/tcp firewall-cmd --permanent --add-port=40100/tcp firewall-cmd --permanent --add-port=40001/tcp firewall-cmd --permanent --add-port=40101/tcp firewall-cmd --reload 备用端口增值100,是指集群监听端口40000和远程访问40001端口分别自增100,即集群备用监听端口40100和集群备用访问端口40101。备用端口增值可自行定义,但需要开放对应的备用端口。 |
集群节点smartbi-2主机:
服务器地址列表:192.168.137.110:40000,192.168.137.111:40000
其中:192.168.137.110 是 smartbi-1 服务的物理机IP地址;
192.168.137.111 是 smartbi-2 服务的物理机IP地址;
端口40000是Smartbi集群内部通信的端口,远程端口:40001,用于远程连接其他Smartbi服务器缓存共享的端口,备用监听端口增值填写100,设置完成保存,并重启Smartbi。
注意 |
---|
使用手动模式时,部署smartbi集群的各个节点,网络必须是互相连通的。 如果smartbi服务器关闭防火墙,则无需设置远程访问端口和备用监听端口增值;如果smartbi服务器开启防火墙,则需要开放对应的端口:40000,40001,40100,40101 端口说明以及开放防火墙操作: 40000:集群监听端口; 40100:集群备用监听端口 40001:集群远程访问端口; 40101:集群远程访问备用端口 firewall-cmd --permanent --add-port=40000/tcp firewall-cmd --permanent --add-port=40100/tcp firewall-cmd --permanent --add-port=40001/tcp firewall-cmd --permanent --add-port=40101/tcp firewall-cmd --reload 备用端口增值100,是指集群监听端口40000和远程访问40001端口分别自增100,即集群备用监听端口40100和集群备用访问端口40101,备用端口增值可自行修改,但需要开放对应的备用端口。 |
配置集群方式 | 说明 |
---|---|
手动模式 | 手动填写ip地址,一起配置集群,对于所填ip地址,需保证两个节点的网络必须是连通的。 |
自动模式 | 自动模式实际上是广播模式,要求同网段才能收到广播,如需测试现场环境能不能使用自动模式来配置Smartbi集群可参考如下文档: |
5. 验证Smartbi集群
1、分别访问两个Smartbi系统监控页面,查看缓存
smartbi-1服务:
http://IP:PORT/smartbi/vision/sysmonitor.jsp
smartbi-2服务:
http://IP:PORT/smartbi/vision/sysmonitor.jsp
系统监控缓存页面中peers如图所示,即表示集群配置成功
2、可通过在任意一台smartbi服务器中创建文件目录,在其他smartbi服务器上刷新查看是否实时同步,如果同步,则smartbi集群部署成功。
6. 验证Smartbi负载均衡
1、浏览器打开 http://IP:PORT/smartbi/proxy#/login 访问Smartbi Proxy,首页会显示所有Smartbi的状态相关信息。
2、使用Proxy地址访问Smartbi
即 http://ProxyIP:PORT/smartbi/ 可正常代理到后端的任意一台Smartbi。
Smartbi集群部署完成。
7. smartbi-proxy包更新
smartbi-proxy更新方法和smartbi更换war包方法相同,具体操作可参考:War包更新方法
注意 |
---|
proxy版本更新,一般只需要更新proxy的war包就行,除非特殊说明,proxy的扩展包可以不用更换。 |
三. 常见问题
1. Tomcat8.x部署注意事项
① 提升smartbi启动速度
注意 |
---|
注:Tomcat 如果是8.0版本,需要修改smartbi.war包中WEB-INF目录下面的web.xml文件,具体修改方法见下图。 需要添加这个配置的原因是: 1、JSP/Servlet 3.0 规范中,如果没有指定metadata-complete=true参数,则会在启动过程中扫描整个war包中所有jar类中是否包含@Servlet等相应的注解,旧版本是需要在web.xml中指定(比如原先创建一个servlet,我们都需要在web.xml中添加对应的Servlet的入口)。 2、这样会导致启动的过程非常缓慢,可能耗时半小时以上。 3、添加这两个属性(metadata-complete="true",<absolute-ordering />)可以指定不再进行相应的扫描,从而提高Smartbi启动速度。 |
② 取消Tomcat上传大小限制
Tomcat 8.x 默认上传文件大小(maxPostSize)限制为 2MB。如果需要取消上传文件大小限制,只需将“maxPostSize”的值设置为负数:
代码块 | ||||
---|---|---|---|---|
| ||||
vi <Tomcat8.x目录>/conf/server.xml |
添加 maxPostSize="-1"
配置参考下图:
重启Tomcat,使其生效。
...