JumpServer 社区版 v3.10.9,
运行方式:docker 多节点负载均衡,外置Mysql+Redis Sentinel 部署
故障典型,web页面上反复提示:server error occur, contact administrator,或者 账号已退出,请重新登录 ,日志显示redis连接异常,实测redis无故障,且无错误日志。
通过检查日志,定位到问题,怀疑为redis连接池问题,按论坛教程,还有github的issues,在处理后问题依旧,通过修改jms_core 的/opt/jumpserver/apps/jumpserver/settings/base.py文件,恢复正常
import os
import platform
import re
import socket #增加一行
……
ka_options = {
socket.TCP_KEEPIDLE: 10,
socket.TCP_KEEPINTVL: 5,
socket.TCP_KEEPCNT: 5
}
REDIS_OPTIONS = {
"REDIS_CLIENT_KWARGS": {
"health_check_interval": 30
},
"CONNECTION_POOL_KWARGS": {
'max_connections': 100,
'retry_on_timeout': True,
'socket_keepalive': True,
'socket_keepalive_options': ka_options,
'check_connection': True
}
}
……