首页 > 解决方案 > Azure kubernetes - 具有会话管理的应用程序?

问题描述

我计划在 Azure kubernetes 上部署使用会话的 Asp.net 应用程序。如何确保传入请求转到创建会话的同一 pod。

标签: azurekubernetessession-state

解决方案


建议部署在 Kubernetes 上的应用具有遵循The Twelve Factor App的设计。

如果应用程序是无状态的并且不与其他实例共享任何内容,一切都会变得更容易。请参阅十二因素应用程序 - 流程

十二因素流程是无状态且无共享的。任何需要持久化的数据都必须存储在有状态的支持服务中,通常是数据库。

一些网络系统依赖于“粘性会话”——也就是说,将用户会话数据缓存在应用程序进程的内存中,并期望来自同一访问者的未来请求被路由到同一进程。粘性会话违反了十二因素,永远不应使用或依赖。会话状态数据非常适合用于提供超时的数据存储,例如 Memcached 或 Redis。

使用Redis是存储属于用户的临时数据的一种方式。

对于身份验证,我建议在Authorization: Bearer <token>标头中使用带有 JWT 令牌的 OpenID Connect。有关OpenID Connect 提供程序的示例,请参见Azure Active Directory B2C 。


推荐阅读