将应用程序升级到新版本而不会给用户造成任何可用性方面的损失,这样的升级称为滚动升级。管理好应用程序升级前后的两个版本可以确保应用程序的当前用户能够不中断地完成任务,同时新用户可以透明地获得应用程序的新版本。执行滚动升级时,用户不会察觉在进行升级。
根据应用程序两个版本间变更的大小,滚动升级的难度将有所不同。
如果变更很小(例如静态文本和图像的变更),则此应用程序的两个版本可以兼容,并且可同时在同一群集中运行。
兼容的应用程序必须满足以下条件:
使用相同的会话信息
使用兼容的数据库模式
通常具有兼容的应用程序级业务逻辑
使用相同的物理数据源
您可以对单个群集或多个群集中兼容的应用程序执行滚动升级。有关更多信息,请参见在单个群集中升级。
如果应用程序的两个版本不满足上述所有条件,则应用程序被视为不兼容。在一个群集中执行不兼容的应用程序版本将破坏应用程序数据并导致会话故障转移功能失常。问题取决于不兼容的类型和程度。好的做法是通过创建要在其上部署新版本的“阴影群集”来升级不兼容的应用程序,然后再慢慢停止旧的群集和应用程序。有关更多信息,请参见升级不兼容的应用程序。
应用程序开发者和管理员是确定应用程序版本是否兼容的最佳人员。如果不确定,请假定版本不兼容,因为这是最安全的方法。
假如单个群集的配置未与其他任何群集共享,则您可以对部署到此群集的应用程序执行滚动升级。
保存旧版本的应用程序或备份域。
要备份域,请使用 asadmin backup-domain 命令。有关该命令的更多信息,请参见 backup-domain(1)。
关闭群集的动态重新配置(如果已启用)。
从管理控制台执行此操作:
或者,使用以下命令:
asadmin set --user user --passwordfile password-file cluster-name-config.dynamic-reconfiguration-enabled=false
将已升级的应用程序重新部署到目标 domain 中。
如果使用管理控制台进行重新部署,域将自动成为目标。如果您使用 asadmin,请指定目标域。由于已禁用动态重新配置,因此旧应用程序将继续在群集上运行。
使用 asadmin enable-http-lb-application 为实例启用已重新部署的应用程序。有关该命令的更多信息,请参见 enable-http-lb-application(1)。
从负载平衡器停止群集中的一个服务器实例。
请执行以下步骤:
使用 asadmin disable-http-lb-server 禁用服务器实例。有关该命令的更多信息,请参见 disable-http-lb-server(1)。
使用 asadmin export-http-lb-config 导出负载平衡器配置文件。有关该命令的更多信息,请参见 export-http-lb-config(1)。
将已导出的配置文件复制到 Web 服务器实例的配置目录。
例如,对于 Sun Java System Web Server,目录位置为 web-server-install-dir/https-host-name /config/loadbalancer.xml。为确保负载平衡器能够装入新的配置文件,请通过在负载平衡器配置中设置 reloadinterval 来确保启用动态重新配置。
请等待,直至超时到期。
监视负载平衡器的日志文件以确保实例已脱机。如果用户看到重试 URL,将跳过停止时间并立即重新启动服务器。
在群集中的其他实例仍处于运行状态的情况下,重新启动已禁用的服务器实例。
重新启动操作将使服务器与域同步,并更新应用程序。
测试重新启动的服务器上的应用程序,以确保应用程序运行正常。
重新启用负载平衡器中的服务器实例。
请执行以下步骤:
使用 asadmin enable-http-lb-server 启用服务器实例。有关该命令的更多信息,请参见 enable-http-lb-server(1)。
使用 asadmin export-http-lb-config 导出负载平衡器配置文件。有关该命令的更多信息,请参见 export-http-lb-config(1)。
将配置文件复制到 Web 服务器的配置目录。
对群集中的每个实例重复步骤 5 至步骤 8。
当所有服务器实例都具有新的应用程序并已运行时,您可以再次为群集启用动态重新配置。
保存旧版本的应用程序或备份域。
要备份域,请使用 asadmin backup-domain 命令。有关该命令的更多信息,请参见 backup-domain(1)。
关闭所有群集的动态重新配置(如果已启用)。
从管理控制台执行此操作:
或者,使用以下命令:
asadmin set --user user --passwordfile password-file cluster-name -config.dynamic-reconfiguration-enabled=false
将已升级的应用程序重新部署到目标 domain 中。
如果使用管理控制台进行重新部署,域将自动成为目标。如果您使用 asadmin,请指定目标域。由于已禁用动态重新配置,因此旧应用程序将继续在群集上运行。
使用 asadmin enable-http-lb-application 为群集启用已重新部署的应用程序。有关该命令的更多信息,请参见 enable-http-lb-application(1)。
从负载平衡器停止一个群集
使用 asadmin disable-http-lb-server 禁用此群集。有关该命令的更多信息,请参见 disable-http-lb-server(1)。
使用 asadmin export-http-lb-config 导出负载平衡器配置文件。有关该命令的更多信息,请参见 export-http-lb-config(1)。
将已导出的配置文件复制到 Web 服务器实例的配置目录。
例如,对于 Sun Java System Web Server,目录位置为 web-server-install-dir/https-host-name /config/loadbalancer.xml。必须为负载平衡器启用动态重新配置(通过在负载平衡器配置中设置 reloadinterval),以便自动装入新的负载平衡器配置文件。
请等待,直至超时到期。
监视负载平衡器的日志文件以确保实例已脱机。如果用户看到重试 URL,将跳过停止时间并立即重新启动服务器。
在其他群集仍处于运行状态的情况下,重新启动已禁用的群集。
重新启动操作将使群集与域同步,并更新应用程序。
测试重新启动的群集上的应用程序,以确保应用程序运行正常。
在负载平衡器中启用此群集:
使用 asadmin enable-http-lb-server 启用群集。有关该命令的更多信息,请参见 enable-http-lb-server(1)。
使用 asadmin export-http-lb-config 导出负载平衡器配置文件。有关该命令的更多信息,请参见 export-http-lb-config(1)。
将配置文件复制到 Web 服务器的配置目录。
对其他群集重复步骤 5 至步骤 8。
当所有服务器实例都具有新的应用程序并已运行时,您可以再次为所有群集启用动态重新配置。
如果应用程序的新版本与旧版本不兼容,请使用以下过程。有关应用程序兼容条件的信息,请参见应用程序兼容性。此外,您必须在两个或更多群集中升级不兼容的应用程序。如果您只有一个群集,则请为升级创建“阴影群集”,如下所述。
升级不兼容的应用程序时,请执行以下操作:
赋予应用程序新版本一个名称,此名称应与旧版本的名称不同。以下步骤假定已重新命名此应用程序。
如果数据模式不兼容,请在规划数据迁移后使用不同的物理数据源。
将应用程序的新版本部署到与旧版本所部署到的群集不同的群集上。
在使运行旧应用程序的群集脱机前,请为其设置一个适当长的超时,因为此应用程序的请求无法故障转移到新的群集。这些用户会话将只会失败。
保存旧版本的应用程序或备份域。
要备份域,请使用 asadmin backup-domain 命令。有关该命令的更多信息,请参见 backup-domain(1)。
在与现有群集相同或不同组的计算机上创建“阴影群集”。如果已经拥有第二个群集,请跳过此步骤。
使用管理控制台创建新的群集并引用现有群集的命名配置。
为每台计算机上的新实例自定义端口,以避免与现有的活动端口冲突。
对于所有与群集相关联的资源,请使用 asadmin create-resource-ref 将资源引用添加到新创建的群集。有关该命令的更多信息,请参见 create-resource-ref(1)。
使用 asadmin create-application-ref 从新创建的群集创建对部署到此群集的所有其他应用程序(当前已重新部署的应用程序除外)的引用。有关该命令的更多信息,请参见 create-application-ref(1)。
使用 asadmin configure-ha-cluster 将群集配置为高可用性群集。有关该命令的更多信息,请参见 configure-ha-cluster(1)。
使用 asadmin create-http-lb-ref 创建对负载平衡器配置文件中新创建的群集的引用。有关该命令的更多信息,请参见 create-http-lb-ref(1)。
赋予应用程序新版本一个名称,此名称应与旧版本的名称不同。
将新群集作为目标来部署新的应用程序。使用一个或多个不同的上下文根。
使用 asadmin enable-http-lb-application 为群集启用已部署的新应用程序。有关该命令的更多信息,请参见 enable-http-lb-application(1)。
在另一个群集仍处于运行状态的情况下,启动新群集。
启动操作将导致群集与域同步,并使用新应用程序进行更新。
测试新群集上的应用程序,以确保应用程序运行正常。
使用 asadmin disable-http-lb-server 从负载平衡器上禁用旧群集。有关该命令的更多信息,请参见 disable-http-lb-server(1)。
为延迟会话存在的时间设置超时值。
使用 asadmin enable-http-lb-server 从负载平衡器上启用新群集。有关该命令的更多信息,请参见 enable-http-lb-server(1)。
使用 asadmin export-http-lb-config 导出负载平衡器配置文件。有关该命令的更多信息,请参见 export-http-lb-config(1)。
将已导出的配置文件复制到 Web 服务器实例的配置目录。
例如,对于 Sun Java System Web Server,目录位置为 web-server-install-dir /https-host-name /config/loadbalancer.xml。必须为负载平衡器启用动态重新配置(通过在负载平衡器配置中设置 reloadinterval),以便自动装入新的负载平衡器配置文件。
在超时时间到期或旧应用程序的所有用户都退出后,停止旧的群集并删除旧的应用程序。