乐创者服务(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