乐创者服务(lczServer)的部署方式与单机部署过程基本一致,可参考对应文档。
1、分布式特有配置
sa用户登录lczServer门户,配置Redis、开启分布式模式等。
1.1 配置Redis
1.2 配置MongoDB
1.3 开启分布式模式
1.4 配置缓存模式
缓存模式选择”分布式缓存-redis(按需)”,配置硬盘缓存大小。
如果没有开启MongoDB或阿里云OSS,则只能选择Redis作为文件服务器,会大大降低服务器性能和稳定性。
2、缓存模式设置为“redis-按需”(如果系统报表访问量大,推荐开启此模式)
V6.8.4及以上版本推荐使用
缓存模式设置为“分部署缓存-redis”模式下,请求最终会分发到哪台服务器上完全无法预知,对一些临时缓存对象信息,只能通过文件服务器暂时存储,需要使用时再从文件服务器上按照存储key读取出来。因此,针对这类业务(例如:报表预览、导出等),性能并不高。
那么,有没有好的解决方案呢?
答案是肯定的。我们可以利用nginx提供的hash保持功能,来把一批相关请求固定发往同一台服务器,从而把分布式的文件缓存机制转化为本地缓存机制,从而大大提升处理性能。
2.1、服务器配置
sa用户登录门户,
2.2、Nginx增加配置项
为了保持相对的负载均衡,需要增加hash的匹配规则。
upstream lczReportServer_hash {
#根据参数进行Hash分配
hash $v_lcz_session_key;
server 144.20.80.4:8084;
server 144.20.80.5:8084;
}
upstream lczReportServer {
server 144.20.80.4:8084;
server 144.20.80.5:8084;
}
server {
# 匹配URI请求中的lcz_session_key(适用于分布式模式,数据缓存设置为: redis(按需))
set $v_lczReportServer http://lczReportServer;
if ($request_uri ~* "^\/.*lcz_session_key=([_a-zA-Z0-9]*)(&.*)?") {
set $v_lcz_session_key $1;
set $v_lczReportServer http://lczReportServer_hash;
}
# 乐创者报表/单元格表单/场景报表/透视分析/智能报告/数智大屏等后台接口
location ~ ^/lczServer/(hrServlet|hrServletEx) {
proxy_pass $v_lczReportServer;
proxy_set_header Host $http_host; # 或者 $host:$server_port
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#其他配置
}
2.3、linux下需安装upstream_consistent_hash
命令控制台进入到nginx源代码目录:
然后,按以下命令安装upstream_consistent_hash,
已centos为例,执行以下命令,获取源代码(如果失败了,请多执行几次,直到成功):
wget [https://github.com/replay/ngx_http_consistent_hash/archive/master.zip](https://github.com/replay/ngx_http_consistent_hash/archive/master.zip)
下载成功后,会在当前目录下看到 master.zip 文件;
//接下来,执行:
unzip master.zip
//解压缩成功后,当前目录下会增加名为ngx_http_consistent_hash-master的目录
//接下来,执行:
./configure --add-module=/ngx_http_consistent_hash-master
//如果nginx已经安装过了,请执行:
make clean
//如果nginx已经启动了,请先停止。
//接下来,执行:
make
make install
作者:柳杨 创建时间:2025-01-09 19:22
最后编辑:柳杨 更新时间:2025-04-22 15:31
最后编辑:柳杨 更新时间:2025-04-22 15:31
