Истек срок действия сеанса для сервера tomcat в Kubernetes с репликацией

#kubernetes #kubernetes-ingress #azure-aks #tomcat9

#kubernetes #kubernetes-вход #azure-aks #tomcat9

Вопрос:

мы настроили Kubernetes на aks, у нас есть балансировщик нагрузки для службы tomcat с 2 репликами, но когда мы входим в наше приложение с использованием внешнего IP (балансировщик нагрузки), мы получаем сообщение об ошибке, в котором говорится, что «срок действия сеанса истек, и, пожалуйста, войдите в систему снова», может кто-нибудь мне помочь.

Ниже приведены файлы YML

Файл развертывания Tomcat

 - apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: tomcat
  spec:
    replicas: 2
    selector:
      matchLabels:
         app: tomcat
    strategy: {}
    template:
      metadata:
        labels:
          app: tomcat
      spec:
        containers:
        - image: (customimage):latest
          imagePullPolicy: ""
          name: tomcat-container
          ports:
          - containerPort: 8080
  

Служебный файл

 - apiVersion: v1
  kind: Service
  metadata:
    name: tomcat
  spec:
    type: LoadBalancer
    ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
    selector:
       app: tomcat
  

Комментарии:

1. Где вы храните данные сеанса? По умолчанию tomcat хранит данные сеанса локально, поэтому вы не можете переключаться между модулями. waitingforcode.com/tomcat/session-storage-in-tomcat/read Вам нужно разделить хранилище сеансов между контейнерами или использовать липкий сеанс, который позволяет получать доступ к одному и тому же контейнеру в любое время (на самом деле липкий сеанс — плохая идея для динамических контейнеров)

2. Мы используем образ tomcat из общедоступного реестра и напрямую настраиваемся в Kubernetes. Нужно ли настраивать репликацию сеанса для tomcat?

3. Я не использовал tomcat внутри контейнера, и есть много способов создать аутентификацию в веб-приложениях. Поэтому я не могу ответить определенно в вашем случае. Но, да, здесь высока вероятность того, что вам нужно обмениваться данными сеанса между экземплярами. И репликация не является правильным способом из-за временных задержек. Попробуйте сохранить сеансы внутри базы данных.