【问题标题】:Azure kubernetes - Application with Session management?Azure kubernetes - 具有会话管理的应用程序?
【发布时间】:2021-01-24 03:55:43
【问题描述】:

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

【问题讨论】:

  • 您需要提前计划...如果您只运行一个副本,那么没有问题,但如果您使用多个副本,那么您应该将会话层与您的应用程序...这可以很容易地在会话层使用 redis 之类的东西来完成。

标签: azure kubernetes session-state


【解决方案1】:

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

如果应用无状态并且不与其他实例共享任何内容,一切都会变得更容易。见Twelve Factor App - Processes

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2016-01-19
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多