使用 Apache 对 install4j 应用程序更新的金丝雀部署
Canary deployment of update to install4j application using Apache
我有一个带有 install4j 自动更新的桌面应用程序(在应用程序启动时检查)。
我想分阶段推出更新。
为此,我正在考虑让 Apache Load Balancer 为我的一部分用户提供 updates.xml 的更新版本。
我遇到的问题:
如果对 updates.xml 请求的响应设置了 cookie,那么对媒体部分的请求是否会包含该 cookie? cookie 是防止粘性丢失所必需的,如提供的 link 的“负载均衡器粘性详细信息”部分所述。我不希望收到更新后的客户端应用程序 updates.xml 然后在获取媒体部分时出现 404,因为它的请求被重定向到“旧”服务器。
如果我将负载平衡设置为将 10% 的流量重定向到新 updates.xml,这并不意味着我将实现 10% 的用户获得更新版本。实际百分比将没有相关性。这是因为即使是最新的应用程序仍会在启动时检查 updates.xml,计入总流量。我想这没问题,只要我不需要精确的数字,只是想避免大爆炸部署。但是有更好的方法吗?
编辑
我在部署文件夹上实现了负载平衡。工作流程是这样的:
- 我有服务器绿色和服务器蓝色。流量仅定向到服务器绿色。
- 当我要部署时,我将新的 updates.xml 和媒体文件复制到服务器蓝,只有媒体文件到服务器绿,旧的 updates.xml 不更新。
- 我们将流量 90% 路由到服务器绿色,10% 路由到服务器蓝色。
- 随着我们对新版本的信心增强,我们逐渐增加了 Server Blue 的流量。
- 当我们准备好进行 100% 部署时,我们将新 updates.xml 复制到绿色服务器,现在两个服务器都有完全相同的文件。
- 此时,我们如何配置流量平衡并不重要。它可以是 100-0、50-50、0-100 等。我们选择 90% 绿色 - 10% 蓝色,因为这是我们下一次部署所需的平衡配置。在下一次部署时,我们只需部署到 Server Blue,无需再次更改平衡配置。
If the response to a request of updates.xml sets a cookie, will the request to the media parts include that cookie?
不,cookie 不受 install4j 管理,您只能在“请求 headers”属性 等操作中设置 cookie,例如“检查更新”和“下载文件”操作.
您必须首先向服务器上的某些资源添加“HTTP 请求”操作并配置其“响应变量名 headers”属性 以提取 cookie。 “HTTP 请求方法”属性 可以设置为“HEAD”,因此您只能得到 headers。从该变量(地图实例)中,您可以获取 cookie 变量并将其保存到另一个安装程序变量中。此逻辑可以在“运行 脚本”操作中完成。
我有一个带有 install4j 自动更新的桌面应用程序(在应用程序启动时检查)。 我想分阶段推出更新。
为此,我正在考虑让 Apache Load Balancer 为我的一部分用户提供 updates.xml 的更新版本。 我遇到的问题:
如果对 updates.xml 请求的响应设置了 cookie,那么对媒体部分的请求是否会包含该 cookie? cookie 是防止粘性丢失所必需的,如提供的 link 的“负载均衡器粘性详细信息”部分所述。我不希望收到更新后的客户端应用程序 updates.xml 然后在获取媒体部分时出现 404,因为它的请求被重定向到“旧”服务器。
如果我将负载平衡设置为将 10% 的流量重定向到新 updates.xml,这并不意味着我将实现 10% 的用户获得更新版本。实际百分比将没有相关性。这是因为即使是最新的应用程序仍会在启动时检查 updates.xml,计入总流量。我想这没问题,只要我不需要精确的数字,只是想避免大爆炸部署。但是有更好的方法吗?
编辑
我在部署文件夹上实现了负载平衡。工作流程是这样的:
- 我有服务器绿色和服务器蓝色。流量仅定向到服务器绿色。
- 当我要部署时,我将新的 updates.xml 和媒体文件复制到服务器蓝,只有媒体文件到服务器绿,旧的 updates.xml 不更新。
- 我们将流量 90% 路由到服务器绿色,10% 路由到服务器蓝色。
- 随着我们对新版本的信心增强,我们逐渐增加了 Server Blue 的流量。
- 当我们准备好进行 100% 部署时,我们将新 updates.xml 复制到绿色服务器,现在两个服务器都有完全相同的文件。
- 此时,我们如何配置流量平衡并不重要。它可以是 100-0、50-50、0-100 等。我们选择 90% 绿色 - 10% 蓝色,因为这是我们下一次部署所需的平衡配置。在下一次部署时,我们只需部署到 Server Blue,无需再次更改平衡配置。
If the response to a request of updates.xml sets a cookie, will the request to the media parts include that cookie?
不,cookie 不受 install4j 管理,您只能在“请求 headers”属性 等操作中设置 cookie,例如“检查更新”和“下载文件”操作.
您必须首先向服务器上的某些资源添加“HTTP 请求”操作并配置其“响应变量名 headers”属性 以提取 cookie。 “HTTP 请求方法”属性 可以设置为“HEAD”,因此您只能得到 headers。从该变量(地图实例)中,您可以获取 cookie 变量并将其保存到另一个安装程序变量中。此逻辑可以在“运行 脚本”操作中完成。