【发布时间】:2021-10-20 12:26:21
【问题描述】:
我有一个带有 install4j 自动更新的桌面应用程序(在应用程序启动时检查)。 我想分阶段推出更新。
为此,我正在考虑让Apache Load Balancer 向我的一部分用户提供更新版本的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 复制到绿色服务器,现在两台服务器的文件完全相同。
- 此时,我们如何配置流量平衡并不重要。它可以是 100-0、50-50、0-100 等。我们选择 90% 的绿色 - 10% 的蓝色,因为这是我们下一次部署所需的平衡配置。在下一次部署时,我们只需部署到 Server Blue,无需再次更改平衡配置。
【问题讨论】:
标签: apache install4j canary-deployment