weblogic实现应用程序的灰度发布

第一章 重新部署策略概述

在生产环境中,已部署的应用程序经常需要24x7的可用性,以便为客户和内部客户提供不间断的服务。WebLogic Server提供了灵活的重新部署策略,以帮助您根据所需的可用性级别更新或修复生产应用程序。

1 生产重新部署

生产重新部署策略涉及将更新的应用程序的新版本与同一应用程序的旧版本一起部署。WebLogic Server自动管理客户端连接,以便仅将新的客户端请求定向到新版本。在重新部署期间已经连接到该应用程序的客户端将继续使用该应用程序的旧版本,直到他们完成工作为止,此时WebLogic Server会自动淘汰该旧应用程序。可以提供不间断地提供客户端访问。WebLogic Server使您能够重新部署生产应用程序的新的更新版本,而不会影响该应用程序的现有客户端,也不会中断该应用程序对新客户端请求的可用性。

2 应用程序和模块就地重新部署

就地重新部署会立即用更新的部署文件替换正在运行的应用程序的部署文件。与生产重新部署相比,应用程序或独立Java EE模块的就地重新部署不能保证为应用程序的客户端提供不间断的服务。这是因为WebLogic Server立即删除了该应用程序的运行类加载器,并将其替换为新的类加载器,该类加载器加载了更新的应用程序类文件。对于未指定版本标识符的Java EE应用程序以及生产重新部署中不支持的Java EE应用程序和独立模块,WebLogic Server使用就地重新部署策略。您应该确保仅在计划的应用程序停机期间,或者在保留与应用程序的现有客户端连接不是很关键的时候,才进行应用程序和独立Java EE模块的就地重新部署。

2.1 静态文件的部分重新部署就地部署

WebLogic Server使您可以重新部署正在运行的应用程序中的选定文件,而不是一次重新部署整个应用程序。此功能通常用于更新正在运行的Web应用程序中的静态文件,例如图形,静态HTML页面和JSP。部分重新部署仅适用于使用展开的存档目录部署的应用程序。静态文件的部分重新部署不会影响应用程序的现有客户端。WebLogic Server只需替换已部署应用程序的静态文件,并在请求时将更新的文件提供给客户端。更新不影响应用程序客户端的单个Web应用程序文件。

2.2 Java EE模块的部分重新部署(就地部署)

部分重新部署还使您能够重新部署已部署的Enterprise应用程序中的单个模块或模块子集。同样,仅使用爆炸归档目录进行部署的应用程序才支持部分部署。请注意,在企业应用程序中对模块的重新部署使用就地重新部署策略,该策略不能保证客户端对模块的不间断访问。因此,您应该确保仅在计划的应用程序停机期间或在保留客户端对应用程序访问权限不是很关键的情况下,才可以在EAR中部分重新部署Java EE模块。

3 了解何时使用不同的重新部署策略

重部署策略

摘要

用法

生产重新部署

与应用程序的现有版本一起重新部署应用程序的较新版本。

升级需要不间断客户端访问的Web应用程序和企业应用程序。

应用程序和模块的就地重新部署

应用程序类加载器将立即替换为较新的类加载器,以加载更新的应用程序类文件。WebLogic Server不能保证在重新部署期间不中断的客户端访问,并且现有客户端的状态信息可能会丢失。

替换已离线进行计划维护的应用程序。

升级不需要不间断客户端访问的应用程序。

静态文件的部分重新部署(就地重新部署)

HTML,JSP,图形文件或其他静态文件将立即替换为更新的文件。

更新不影响应用程序客户端的单个Web应用程序文件。

Java EE模块的部分重新部署(就地重新部署)

模块类加载器将立即替换为较新的类加载器,以加载更新的类文件。WebLogic Server不能保证客户端在重新部署期间对模块的不间断访问,并且现有客户端的状态信息可能会丢失。

替换已离线进行计划维护或不需要不间断客户端访问的Enterprise应用程序组件

4使用生产重新部署来更新应用程序

WebLogic Server通过将新版本的应用程序与较旧的运行版本的应用程序一起部署来执行生产重新部署。在进行重新部署时,该应用程序的一个版本“处于活动状态”,而另一个版本“正在退出”。活动的应用程序版本会收到该应用程序的所有新客户端连接请求,而退出的应用程序版本仅处理进行重新部署时存在的那些客户端连接。在应用程序的所有现有客户端完成工作或达到配置的超时后,WebLogic Server会取消部署即将淘汰的应用程序版本。

 

第二章 实际项目重部署测试

1 应用程序版本及所在目录规划

代理:nginx 192.168.60.151:8080

集群:myCluster 192.168.60.151:7003,192.168.60.151:7004

 

 

 

当前部署的应用程序版本1.0的文件存储在:

/weblogic/myDeployments/demostage1/demo.war

更新的应用程序(版本1.1)文件存储在新的目录中:

/weblogic/myDeployments/demostage2/demo.war

2 部署1.0版本应用程序

命令:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic -password weblogic123 -deploy -name myTest  -source /weblogic/myDeployments/demostage1/demo.war -targets myCluster -stage -appversion 1.0GA

 

部署成功

 

 

 

通过nginx负载均衡访问结果:

 

3 重新部署新的应用程序版本(1.1)

默认情况下,WebLogic Server使应用程序的新重新部署版本处于活动状态,以处理新的客户端请求。现有客户端将继续使用较旧的应用程序,直到其工作完成并且可以安全地取消部署较旧的应用程序如果要指定一个固定的时间段,在该固定的时间段后将淘汰该应用程序的旧版本(无论客户端是否完成工作),则在-redeploy使用选项-retiretimeout命令例如指定30秒淘汰。

命令:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -redeploy -name myTest -source /weblogic/myDeployments/demostage2/demo.war   -targets myCluster  -appversion 1.1GA    -retiretimeout 30

 

重部署成功:

 

 

30秒过后,刷新浏览器可以看到旧版本已经被停用了。

4 回滚生产重新部署过程

撤消生产重新部署过程将切换活动和退出应用程序的状态,并相应地重定向新的客户端连接请求。如果您发现新部署的应用程序版本出现问题,并且希望阻止客户端访问它,则可能需要恢复生产重新部署过程。

命令:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -redeploy -name myTest -source /weblogic/myDeployments/demostage1/demo.war   -targets myCluster  -appversion 1.0GA    -retiretimeout 30

 

 

回滚成功:

 

 

5 取消部署

如果WebLogic Server尚未淘汰应用程序版本,则可以立即取消部署该应用程序版本,而无需等待退出完成。例如,如果应用程序仅在一个或两个您不想保留的长期运行的客户端会话中处于退休状态,则可能有必要。要强制取消部署应用程序的退休版本,请使用-undeploy命令并指定应用程序版本该命令可以取消部署任意部署好的版本应用程序。

命令:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  

-password weblogic123 -undeploy -name myTest -appversion 1.1GA

 

取消部署成功截图:

 

 

6 分发应用程序新版本1.1

分发新版本的应用程序时,WebLogic Server准备新的应用程序版本以进行部署。然后,您可以在“管理”模式下部署该应用程序,这使其只能通过已配置的“管理”通道使用外部客户端无法访问以管理模式分发和部署的应用程序。该应用程序的旧版本保持活动状态,以处理新的和现有的客户端请求。当您在“管理”模式下分发和部署新版本时,注意:WebLogic Server不会自动淘汰该应用程序的旧版本通过“管理”通道完成对新应用程序的测试后,可以取消部署新应用程序版本或启动它。启动应用程序会使WebLogic Server将新的客户端连接路由到更新的应用程序,然后开始淘汰较旧的应用程序版本。

6.1 分发应用程序步骤

1

命令:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -distribute  -name myTest  -source /weblogic/myDeployments/demostage2/demo.war  

-targets myCluster -stage   -appversion 1.1GA

 

新版本应用分发完成:

 

 

(2)分发应用程序后,以“管理”模式启动它:

在“管理”模式下启动该应用程序使客户只能通过已配置的“管理”通道访问应用

命令:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -start -adminmode  -name myTest    -appversion 1.1GA

 

分发完成:

 

 

  1. 使应用程序对客户可用

使用已配置的管理通道执行最终测试之后,使用weblogic.Deployer -start不带以下-adminmode选项的命令将在管理模式下运行的应用程序的分布式版本打开到新的客户端连接如果要指定一个固定的时间段,在该固定的时间段后将淘汰旧版本的应用程序(无论客户端是否完成工作),请使用以下-retiretimeout选项

命令:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  

-password weblogic123 -start -name myTest   -appversion 1.1GA -retiretimeout 30

启动成功:

 

30秒过后,刷新浏览器可以看到旧版本已经被停用了。

 

新版本的应用程序已经部署成功:

 

第四章 生产重新部署的最佳实践

  • 开发的应用程序必须遵循Oracle的生产重新部署编程惯例,否则切勿为生产应用程序指定版本字符串。
  • stage模式下部署应用程序时,最容易使用生产重新部署。stage模式下,WebLogic Server会为部署的每个不同版本的应用程序自动创建一个单独的目录。这些目录存储在服务器的已配置暂存目录中(默认情况下server_name/stage是域目录的子目录),并且在取消部署关联的应用程序版本时将这些目录删除。
  • 如果以nostage模式进行部署,则将应用程序的每个新版本存储在专用子目录中。这样可以确保您不会覆盖部署文件的旧版本,并且如果在更新后检测到问题,则可以恢复到较早的应用程序版本。
  • 如果以external_stage模式进行部署,则必须将每个应用程序版本的部署文件存储在每个目标服务器的登台目录的正确版本子目录中。例如,在部署和重新部署之前,需要将先前示例命令中使用的版本化的应用程序文件复制到子目录中/weblogic/myDeployments/demostage1/以及/weblogic/myDeployments/demostage2/每个服务器的登台目录中。

 

 

第五章 结论

通过weblogic的生产重部署可以实现WebLogic Server将新的客户端请求路由到以前分发的新应用程序版本(1.1)。现有客户端将继续使用较旧的应用程序(1.0),直到其工作完成并且可以安全地取消部署较旧的应用程序。这样就可以实现在用户无感知的情况下灰度部署应用程序,避免停机。

 

参考:

https://docs.oracle.com/cd/E23943_01/web.1111/e13702/redeploy.htm#DEPGD285

基本命令:

查看部署的应用

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -listapps

 

部署

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -deploy -name myTest  -source /weblogic/myDeployments/demostage1/demo.war -targets myCluster -stage -appversion 1.0GA

重部署

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -redeploy -name myTest  -source /weblogic/myDeployments/demostage2/demo.war  -targets myCluster  -appversion 1.1GA

 

固定的时间后淘汰旧版本(秒)

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -redeploy -name myTest -source /weblogic/myDeployments/demostage2/demo.war   -targets myCluster  -appversion 1.1GA    -retiretimeout 30

 

回退   直接使用undeloy淘汰旧版本

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -undeploy -name myTest -appversion 1.1GA

 

回滚生产重新部署过程。如果您发现新部署的应用程序版本出现问题,并且希望阻止客户端访问它,则可能需要恢复生产重新部署过程。

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -redeploy -name myTest -source /weblogic/myDeployments/demostage1/demo.war   -targets myCluster  -appversion 1.0GA -retiretimeout 300

 

分发应用程序

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -distribute -name myTest   -source /weblogic/myDeployments/demostage2/demo.war  -targets myCluster -stage   -appversion 1.1GA

分发应用程序后,以“管理”模式启动它:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -start -adminmode -name myTest   -appversion 1.1GA

 

 

默认情况下,WebLogic Server将新的客户端请求路由到以前分发的并在管理模式下运行的应用程序版本。现有客户端将继续使用较旧的应用程序,

直到其工作完成并且可以安全地取消部署较旧的应用程序。如果要指定一个固定的时间段,在该固定的时间段后将淘汰旧版本的应用程序(无论客户端是否完成工作),请使用以下-retiretimeout选项:

java weblogic.Deployer -adminurl t3://192.168.60.151:7001 -user weblogic  -password weblogic123 -start -name myTest   -appversion 1.1GA -retiretimeout 30

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值