通过Nginx实现smartbi集群的负载均衡,提高smartbi的可用性
1、部署Tomcat和Smartbi
参考 Linux Tocmat部署Smartbi 文档部署Tomcat和Smartbi,并配置好License,知识库相关信息,能正常访问smartbi。
参考 Smartbi Proxy+Tomcat部署Smartbi集群 配置好smartbi config页面中的集群配置。
2、部署Nginx
参考Nginx官方文档 http://nginx.org/en/docs/ 使用源码或者YUM方式部署Nginx。
3、Nginx 配置
1、新增代理配置文件 proxy_params
在nginx的conf文件夹下新建proxy_params文件并加入如下代码:
proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 32k; proxy_buffering on; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k;
2、修改nginx.conf配置文件,增加代理配置
打开nginx.conf 修改配置如下:
这里使用ip_hash 权重分配模式每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,对于到smartbi产品的session会话,采取该种权重分配较为合适;
3、测试配置文件是否通过
nginx -t
测试通过!
4、重启nginx
nginx -s reload
5、使用Proxy地址访问smartbi
即 http://ProxyIP:PORT/smartbi/
例如:http://192.168.137.112:80/smartbi/ 可正常代理到后端的任意一台Smartbi。
4、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、常见问题
1.Tomcat8.x部署注意事项
1、提升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启动速度。
2、取消Tocamt上传大小限制
Tomcat8.x默认上传文件大小(maxPostSize)限制为2M,如果需要取消maxPostSize限制,需要将maxPostSize的值设置为负数:
vi <Tomcat8.x目录>/conf/server.xml
添加 maxPostSize="-1"
配置参考下图:
重启Tomcat,使其生效。