# 集群会话故障转移

SuccBI支持集群部署,并支持会话共享和故障转移。当集群中某个节点出现故障后,系统支持会话转移能力,实现无感切换到其他健康的集群节点,保证系统的高可用和用户体验。

集群会话故障转移功能基于Redis实现,用户登录系统时,会将session信息存储到Redis中,一旦某个web节点发生故障,集群中的其他节点可以从Redis中获取session信息,保证故障切换时session信息不会丢失,使集群节点切换时用户没有感知。

# 配置会话共享

# 部署Redis

在使用会话共享功能时,需要使用redis来存储session信息,SuccBI支持使用redis单节点、哨兵模式和集群模式进行session信息的存储,Redis部署可参考Redis安装配置

提示

建议在生产环境中使用集群模式或者哨兵模式来存储session信息,保证服务的高可用。

# Nginx配置

集群会话故障转移服务还需要配置负载均衡服务器,如Nginx,配置可参考反向代理和负载均衡,注意事项如下:

  • SuccBI会话共享功能在Nginx代理服务器配置会话粘滞和不配置会话粘滞的情况下都可以使用,推荐使用会话共享功能时不配置会话粘滞。
  • 集群进行Nginx配置时需要配置故障转移,故障转移配置可参考官方文档 (opens new window)

# 系统配置

Redis环境配置完毕后,可以在系统中配置会话共享,具体配置如下:

  1. 系统设置>安全设置>会话管理中,将会话存储配置为Redis,并配置会话最长保持时间。 配置界面如下所示:

    会话管理配置

  2. 进入项目列表>系统数据>资源,在左侧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。

注意

  1. Redis参数和会话存储配置完毕后,需要重启才能生效。
  2. settings.json文件中配置Redis参数后,需要同时配置会话存储,否则会话共享功能不会生效。
  3. 若配置了会话存储,但未在settings.json文件中配置Redis参数或Redis参数配置有误,系统将会提示异常,无法正常使用。

# 注意事项

  1. Redis出现故障时,系统会提示异常,无法正常登录使用,此时应尽快恢复reis服务。

异常提示如下所示:

异常提示

  1. 若Redis故障短时间内无法恢复,导致系统无法正常使用,可以在web服务器中设置jvm参数-Dsucc.sessionStore=default禁用会话共享功能,然后重启web服务器,待Redis恢复后重新启动集群会话故障转移服务。

注意

集群中的每一台web服务器都需要设置jvm参数,启动前还需设置配置Nginx为会话粘滞,否则无法登录系统!

是否有帮助?
0条评论
评论