#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 внутри контейнера, и есть много способов создать аутентификацию в веб-приложениях. Поэтому я не могу ответить определенно в вашем случае. Но, да, здесь высока вероятность того, что вам нужно обмениваться данными сеанса между экземплярами. И репликация не является правильным способом из-за временных задержек. Попробуйте сохранить сеансы внутри базы данных.