集群部署

在并发访问量比较大的情况,可以采用集群部署AnyReport,推荐采用方法:Nginx + Tomcat + Redis 部署, Nginx做负载均衡将请求发给不同的服务器,Redis实现tomcat的Session共享

1.1 安装Redis
下载对应服务器的Redis并安装,以windows版本安装示例:下载:Redis-x64-3.2.100 并解压,将Redis设置windows 服务,
在Redis目录执行命令:redis-server —service-install redis.windows-service.conf —loglevel verbose
卸载服务:redis-server —service-uninstall
开启服务:redis-server —service-start
停止服务:redis-server —service-stop

1.2 Tomcat与redis连接 Session共享
将如下 jar 包copy 到tomcat的lib目录中

在tomcat的 conf目录中修改context.xml 文件,连接redis缓存数据库

host是安装Redis服务器ip地址
  1. <Valve className="com.s.tomcat.redissessions.RedisSessionHandlerValve"/>
  2. <Manager className="com.s.tomcat.redissessions.RedisSessionManager"
  3. host="127.0.0.1"
  4. port="6379"
  5. database="0"
  6. maxInactiveInterval="60" />

1.3 复制多份tomcat
将上面配置好的tomcat,复制到不同服务器,如tomcat1,tomcat2, 则客户端访问服务1、服务2等会话session将保持一致

1.4 配置Nginx
下载Nginx并解压,修改Nginx目录下的nginx.conf 文件

server:配置每个tomcat服务的IP地址与端口
anyrt.com 为服务器集群名称可以取其它名称
proxy_pass http://anyrt.com; //后面的名称要与upstream名称保持一致

Nginx启动:进入Nginx目录如E:\webmulti\nginx-1.12.2\nginx-1.12.2 执行命令start nginx 启动nginx , 关闭nginx服务:nginx.exe -s stop

1.5 系统同步配置
集群配置应用于用户同步、定时任务,报表、表单模板等配置信息同步

配置文件目录:WEB-INF/cluster.properties
cluster.enabled=true
node.master=false
cluster.server = 127.0.0.1:8080,127.0.0.1:8081
cluster.serversocket=9001
cluster.tcpserver=127.0.0.1:9002

cluster.enabled:是否是集群部署,默认值为false,true=启用集群部署
node.master:是否是主服务器,true是主服务执行定时任务(用户同步、报表定时发送), false是从服务不执行定时任务

cluster.server:服务ip:port,更新报表、表单模板时通知其它服务同时更新,是http web通信,其它节点的ip与port,多个以逗号间隔
cluster.serversocket:socket服务端口,tcp socket通信,应用局域网
cluster.tcpserver:链接其它socket服务节点的ip:port
cluster.dyncServer:本服务的ip:port, 动态获取本节点ip
cluster.protocol:同步使用的协议http或https

如果配置了cluster.server 是采用http方式同步数据,可不用配置cluster.serversocket、cluster.tcpserver
示例:节点1 节点2
cluster.enabled=true cluster.enabled=true
node.master=true node.master=false
cluster.server =127.0.0.1:9002 cluster.server=127.0.0.1:9001

如果配置了cluster.serversocket、cluster.tcpserver 是采用tcp方式同步数据,可以不配置cluster.server
示例:节点1 节点2
cluster.enabled=true cluster.enabled=true
node.master=true node.master=false
cluster.serversocket=9001 cluster.serversocket=9002
cluster.tcpserver=127.0.0.1:9002 cluster.tcpserver=127.0.0.1:9001

  1. 如果配置了cluster.dyncServer 是动态获取ip地址,采用httphttps方式同步数据
  2. 示例:节点1 节点2
  3. cluster.enabled=true cluster.enabled=true
  4. node.master=true node.master=false
  5. cluster.dyncServer =ip1:8080 cluster.dyncServer =ip2:9080 //每个节点的ip名称如ip1,ip2不能重复
  6. cluster.protocol=https cluster.protocol=https