我有一个带有 install4j 自动更新的桌面应用程序(在应用程序启动时检查)。我想分阶段推出更新。
为此,我正在考虑让Apache 负载均衡器为我的一部分用户提供更新版本的 updates.xml。我看到的问题:
如果对updates.xml 请求的响应设置了一个cookie,那么对媒体部分的请求是否会包含该cookie?需要 cookie 来防止失去粘性,如所提供链接的“负载平衡器粘性的详细信息”部分所述。我不希望客户端应用程序接收更新的updates.xml,然后在获取媒体部分时出现404,因为它的请求被重定向到“旧”服务器。
如果我将负载平衡设置为将 10% 的流量重定向到新的 updates.xml,这并不意味着我将让 10% 的用户获得更新的版本。实际百分比将没有相关性。这是因为即使是最新的应用程序仍会在启动时检查 updates.xml,计入总流量。我想这是可以的,只要我不需要精确的数字而只是想避免大爆炸部署。但是有更好的方法吗?
编辑
我在部署文件夹上实现了负载平衡。工作流程是这样的:
- 我有绿色服务器和蓝色服务器。流量仅定向到绿色服务器。
- 当我想部署时,我将新的updates.xml 和媒体文件复制到Server Blue,并且仅将媒体文件复制到Server Green,旧的updates.xml 不会更新。
- 我们将 90% 的流量路由到绿色服务器,10% 到蓝色服务器。
- 随着我们对新版本的信心增强,我们逐渐增加了 Server Blue 的流量。
- 当我们准备好 100% 推出时,我们将新的 updates.xml 复制到 Server Green,现在两台服务器都有完全相同的文件。
- 此时,我们如何配置流量平衡并不重要。它可以是 100-0、50-50、0-100 等。我们选择 90% 的绿色 - 10% 的蓝色,因为这是我们下一次部署所需的平衡配置。在下一次部署中,我们只需部署到蓝色服务器,无需再次更改平衡配置。