Azure动态配置容器实例并维持用户会话粘性的扩容方案咨询
可行解决方案
1. Azure应用网关+ACI的会话粘性路由方案
- 用Azure应用网关配置Cookie-based会话粘性,将每个用户的请求固定到对应的ACI实例。创建ACI时为每个用户生成唯一标识,网关通过Cookie关联用户与实例,确保后续所有请求都路由到同一容器。
- 搭配Azure Functions或Logic Apps实现ACI的动态生命周期管理:用户登录时触发函数创建专属ACI,登出时自动销毁容器;同时函数负责向应用网关注册该ACI实例的路由规则,绑定用户会话Cookie,从根源避免孤儿容器。
2. 改用Azure Container Apps(ACA)
- ACA原生支持会话粘性配置(部署时指定
--session-affinity cookie参数),可直接为每个用户的容器实例绑定会话。ACA的自动扩缩容能力会根据用户负载动态调整,且路由规则会固定用户与对应容器的关联,不会出现随机分配问题。 - 借助ACA的Dapr集成满足文件夹结构读取需求:通过Dapr的服务调用组件,轻松实现容器内文件结构的查询,无需额外搭建独立API服务。
3. AKS集群+会话感知编排方案
- 部署Azure Kubernetes Service(AKS)集群,配置NGINX Ingress Controller开启会话粘性。用户登录时,通过自定义控制器或Operator创建专属Pod(对应原Docker容器),Ingress规则自动关联用户会话与Pod。
- 利用AKS的Pod生命周期钩子和Pod Disruption Budget,在用户登出时自动删除对应Pod,防止孤儿容器产生;同时可直接通过Kubernetes API实现文件夹结构读取的需求,简化架构。
4. Azure Bastion+ACI的直接会话方案
- 为每个用户的ACI实例配置Azure Bastion的SSH访问,前端通过Bastion的API建立会话连接,替代nodepty xterm的直接命令传递逻辑。Bastion会原生维护用户与ACI的会话关联,用户登出后可触发ACI的销毁流程。
- 可将Azure Storage文件共享挂载到ACI,统一管理文件资源,方便读取文件夹结构,无需额外API开发。
内容的提问来源于stack exchange,提问作者Good hoppy
相关产品推荐
相关产品推荐

