我们想要迁移到 nginx,并且希望拥有与现在相同的行为:
我们使用以下负载平衡设置:Apache mod_jk 和 AJP 连接到 JBoss 4.2.3 工作进程。安装了 JKStatusManager 以在线配置工作进程设置。工作进程具有粘性会话。没有用于会话故障转移的会话复制。
不幸的是,我们无法启用会话复制以实现会话故障转移,因为我们的会话状态太大(JSF)。我们无法转向客户端复制,因为会话状态太大。
当我们需要更新工人时,我们会执行以下操作:
- 使 50% 的工人丧失工作能力
- 等待大约 60 分钟,直到这些工作者没有客户端连接
- 更新这些工人
- 使这些工人能够
- 对另外 50% 也做同样的事情
这不是最佳选择,但效果很好。
问题:是否可以使用 nginx 实现相同的行为?(AJP 连接除外。我们希望在后端使用 nginx-module HttpProxyModule 的 HTTPS)
答案1
就像 Martin F 所说的那样,如果不破解 nginx,你想要做的事情就无法实现——如果你要这么做,你可能想将编程资源投入到其他地方。
您说您的会话数据“太大”而无法复制——“太大”到底有多大?
超过某个点后,您就需要管理自己的会话信息,并将状态数据放入分布式数据库(可能是像 Mongo 这样的 NoSQL DB),然后让该数据库为您处理复制...