問題出現的前提 keycloak通過k8s部署,併進行了集群部署,共2個節點 通過功能變數名稱解析後,直接到外網LB,在LB上配置了k8s-ingress的IP,埠是80和443 在keycloak應用的ingress配置中,對功能變數名稱進行了keycloak服務的綁定 問題的描述 有時間無法完成登錄,點登錄後 ...
問題出現的前提
- keycloak通過k8s部署,併進行了集群部署,共2個節點
- 通過功能變數名稱解析後,直接到外網LB,在LB上配置了k8s-ingress的IP,埠是80和443
- 在keycloak應用的ingress配置中,對功能變數名稱進行了keycloak服務的綁定
問題的描述
- 有時間無法完成登錄,點登錄後,刷新了一次登錄頁,未完成登錄行為
- 有時在登錄時,出現死迴圈,反覆302到
login-actions/authenticate
,keycloak日誌中顯示“會話失效”,或者可以理解為,“你使用了無效的會話session_code”
問題解決過程
- 如果是單節點不會有這個問題
- 如果是多節點部署,需要在LB上添加會話保持
- 如果是容器化部署的情況下,如果k8s-ingress進行負載,那麼,除了在LB上添加了會話保持的,還需要為ingress添加會話保持,代碼如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: default
name: my-app
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/proxy-buffer-size: "16k" #緩衝區大小
nginx.ingress.kubernetes.io/proxy-buffers-number: "8" #緩衝區數據,不加它參數多時返
- 如果你使用rancher部署應用,直接在應用對應的負載均衡上添加即可
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!