集群部署
在并发访问量比较大的情况,可以采用集群部署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地址
<Valve className="com.s.tomcat.redissessions.RedisSessionHandlerValve"/>
<Manager className="com.s.tomcat.redissessions.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0"
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
如果配置了cluster.dyncServer 是动态获取ip地址,采用http或https方式同步数据
示例:节点1 节点2
cluster.enabled=true cluster.enabled=true
node.master=true node.master=false
cluster.dyncServer =ip1:8080 cluster.dyncServer =ip2:9080 //每个节点的ip名称如ip1,ip2不能重复
cluster.protocol=https cluster.protocol=https