问题描述
我在kubernetes集群中运行bitnami / redis舵图。我的django应用程序将其用作会话缓存。
CACHES = {
'default':
{
"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://redis-service:6379/0","OPTIONS":
{
"CLIENT_CLASS": "django_redis.client.DefaultClient"
}
}
}
这是我的session_engine变量的样子
SESSION_ENGINE="django.contrib.sessions.backends.cache"
当我将redis作为单个副本部署运行时,此设置运行良好。当我切换到Bitnamis舵图(带有哨兵)时,当我尝试登录到管理页面时,我间歇性地收到此错误
无法创建新的会话密钥。缓存很可能是 不可用。
如果我切换到单一Pod Redis部署,则可以正常工作。但是使用bitnami舵图似乎是导致此问题的原因。
我可以确认可以从Django吊舱访问Redis集群。更令人困惑的是它是间歇性引起的。
任何帮助将不胜感激。
更新1。
在检查redis的日志后,我得到了
1601409529.593320 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachendvrotljwn4502p278mbmvxy1l5xgkqk"
1601409529.594428 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachezw19k1uqzb164h1n9x8b8dcjywrwltva"
1601409529.595374 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachejf4y14zd7ll9rjtc8fh6ecicu3mqsbpn"
1601409529.596342 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cacheaacgflnnjvwjkb4kjahsr8qir3qxgua1"
1601409529.597401 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachelhx6l6hgikkhb958iynvdmjyz4tqkwig"
1601409529.598442 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachewaemv1rhy6j1lel5j87vt30e3c5saanq"
1601409529.599485 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachegs5rmaz3sc8scevoczbcozd6fh4svukl"
1601409529.600538 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cache19k1kr63ql4odwwqc9e0l1uv7oj4ck0j"
1601409529.601610 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachemdci7awb7z5wmdcim093tfehu2e60ru6"
1601409529.602664 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cacheeubmkiqvc0gnn273er86c2qoscauqzqa"
看起来像是来自此https://github.com/django/django/blob/master/django/contrib/sessions/backends/cache.py#L42
因此django尝试将键插入缓存并避免冲突,它会在抛出异常之前尝试10000次。
我可以看到redis中没有按键。
成功登录后的日志如下
1601410010.012538 [0 127.0.0.1:53662] "ping"
1601410010.308631 [0 10.2.1.74:6379] "SET" ":1:django.contrib.sessions.cachee7f697vcuv1fyxfyvgw6uexyv2w58o1a" "\x80\x05}\x94." "PX" "1209600000" "NX"
1601410010.323639 [0 10.2.1.74:6379] "SET" ":1:django.contrib.sessions.cachee7f697vcuv1fyxfyvgw6uexyv2w58o1a" "\x80\x05\x95\xb0\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\r_auth_user_id\x94\x8c\x0224\x94\x8c\x12_auth_user_backend\x94\x8c)django.contrib.auth.backends.ModelBackend\x94\x8c\x0f_auth_user_hash\x94\x8c@dccdd9eb53e5ebfcd0f544de6aefa932892729837c6d16257be00d5715204eda\x94u." "PX" "1209600000"
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)