# 集群会话故障转移
SuccBI支持集群部署,并支持会话共享和故障转移。当集群中某个节点出现故障后,系统支持会话转移能力,实现无感切换到其他健康的集群节点,保证系统的高可用和用户体验。
集群会话故障转移功能基于Redis实现,用户登录系统时,会将session信息存储到Redis中,一旦某个web节点发生故障,集群中的其他节点可以从Redis中获取session信息,保证故障切换时session信息不会丢失,使集群节点切换时用户没有感知。
# 配置会话共享
# 部署Redis
在使用会话共享功能时,需要使用redis来存储session信息,SuccBI支持使用redis单节点、哨兵模式和集群模式进行session信息的存储,Redis部署可参考Redis安装配置。
# Nginx配置
集群会话故障转移服务还需要配置负载均衡服务器,如Nginx,配置可参考反向代理和负载均衡,注意事项如下:
- SuccBI会话共享功能在Nginx代理服务器配置会话粘滞和不配置会话粘滞的情况下都可以使用,推荐使用会话共享功能时不配置会话粘滞。
- 集群进行Nginx配置时需要配置故障转移,故障转移配置可参考官方文档 (opens new window)。
# 系统配置
Redis环境配置完毕后,可以在系统中配置会话共享,具体配置如下:
在系统设置>安全设置>会话管理中,将会话存储配置为Redis,并配置会话最长保持时间。 配置界面如下所示:
进入项目列表>系统数据>资源,在左侧settings目录找到
settings.json
文件,并参考以下内容添加配置:
#单节点模式
"sys.redis": [{
"serviceName": "test",
"mode": "singleton",
"urls": ["192.168.10.60:7006"],
"masterName": "test"
}],
#集群模式
"sys.redis": [{
"serviceName": "test",
"mode": "cluster",
"urls": [
"192.168.10.60:7000",
"192.168.10.60:7001",
"192.168.10.60:7002",
"192.168.10.60:7003",
"192.168.10.60:7004",
"192.168.10.60:7005"
],
"masterName": "test"
}],
#哨兵模式
"sys.redis": [{
"serviceName": "mymaster",
"mode": "sentinel",
"urls": [
"192.168.10.60:7117",
"192.168.10.60:7118",
"192.168.10.60:7119"
],
"masterName": "mymaster"
}],
参数介绍如下:
- serviceName:服务名称,建议和
masterName
配置相同。 - mode:singleton|sentinel|cluster,分别对应Redis单节点、哨兵模式和集群模式。
- urls:若模式为单节点或者集群模式,配置对应节点的url集合,如果模式是哨兵模式,需要填写哨兵节点的url集合。
- masterName:主节点名称,若设置为哨兵模式,需要配置为Redis主节点名称,默认为mymaster。
注意
- Redis参数和
会话存储
配置完毕后,需要重启才能生效。 - 在
settings.json
文件中配置Redis参数后,需要同时配置会话存储
,否则会话共享功能不会生效。 - 若配置了
会话存储
,但未在settings.json
文件中配置Redis参数或Redis参数配置有误,系统将会提示异常,无法正常使用。
# 注意事项
- Redis出现故障时,系统会提示异常,无法正常登录使用,此时应尽快恢复reis服务。
异常提示如下所示:
- 若Redis故障短时间内无法恢复,导致系统无法正常使用,可以在web服务器中设置jvm参数
-Dsucc.sessionStore=default
禁用会话共享功能,然后重启web服务器,待Redis恢复后重新启动集群会话故障转移服务。
注意
集群中的每一台web服务器都需要设置jvm参数,启动前还需设置配置Nginx为会话粘滞,否则无法登录系统!
0条评论
评论