加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

如何将Weblogic从虚拟机迁移到容器

发布时间:2021-01-08 02:35:06 所属栏目:站长百科 来源:网络整理
导读:《如何将Weblogic从虚拟机迁移到容器》要点: 本文介绍了如何将Weblogic从虚拟机迁移到容器,希望对您有用。如果有疑问,可以联系我们。 随着PaaS和DevOps解决方案需求的增涨,我们可以看到那些运行在虚拟机上或直接运行在裸机上的遗留应用程序,在实践时会遇
副标题[/!--empirenews.page--]

《如何将Weblogic从虚拟机迁移到容器》要点:
本文介绍了如何将Weblogic从虚拟机迁移到容器,希望对您有用。如果有疑问,可以联系我们。

随着PaaS和DevOps解决方案需求的增涨,我们可以看到那些运行在虚拟机上或直接运行在裸机上的遗留应用程序,在实践时会遇到一系列的障碍.分解和迁移的过程复杂度非常高.通常,为了获得PaaS或CaaS模式的好处,应用程序所有者必须去重新设计他们的应用架构.

在这个文章里,我们将分析把运行在虚拟机上的Java 遗留应用程序迁移到基于容器平台上的具体挑战.使用Oracle WebLogic Server做为案例,我们将展示分解过程的具体步骤和迁移的结果.

迁移到容器的动机

对比Java EE应用运行在裸机的时代,硬件虚拟化已经是一个很大的进步.它给了我们解决多个应用间隔离及提高硬件利用率的能力.然而,Hypervisors(虚拟机管理程序)在宿主机上会使用大量CPU和内存,且每个虚拟机都要求拥有完整的操作系统、TCP栈和文件系统.

每个虚拟机都有固定的内存,只有部分的虚拟机管理程序可以为通过内存膨胀(memory ballooning)机制的帮助为运行中的虚拟机重新分配内存.所以为了应用程序未来的规模,我们在每个虚拟机里都会预留一些资源,但这些资源并没有得到完全的利用.同时,由于在一个虚拟机内实例间缺乏适当的隔离,这些资源也不能被其他的程序共享.

而容器通过共享宿主机的OS kernel、TCP栈、文件系统和其他的系统资源,仅使用很少的资源和CPU就可以运行,进一步提高了性能和资源利用率.

这里有两种类型的容器——应用容器和系统容器.通常,一个应用容器运行时相当于一个单进程.而一个系统容器则像一个完整的操作系统,可以在一个单容器内执行操作系统所有的功能,比如systemd、SysVinit和通过openrc产生其他类似openssh、crond and syslogd的进程.两种类型的容器在不同的使用场景都非常有用,而且在冗余管理进程上不浪费内存,通常消耗的内存比虚拟机少.然而,对于Java遗留应用程序的迁移只有使用系统容器可以不需要大量的应用重构.

不同于虚拟机,对于运行中实例的容器资源的不需要重启就可以很容易修改限制.而且这些在限制边界内没有被消耗的资源自动与在同一个物理节点上的其他容器共享.

此外,容器对于开发而言也非常有用,在创建,打包,测试应用方面用一种敏捷的方式加快应用的开始进度和提高应用的可扩展性.

这些在物理机上没有被利用的资源可以很容易弹性扩展或新应用的容器使用.考虑到提高容器的隔离,不同类型的应用可以运行在相同的物理节点而不相互影响.这些可以平均提高已存在的基础设备资源利用率的3-10倍.

什么是分解

在迁移过程中,程序分解是基本部分,它可以帮助把大的单块应用分解成小的,按逻辑块划分的,和可以独立运行程序.

以图中显示的是在从虚拟机迁移到容器时应用的一个简单的分解过程:

 

在虚拟机中运行Java遗留应用程序

在软件程序开发里有句老话:遗留软件是好的,只不过是还在运行的旧软件.下面通过案例让我们更精确的知道在Oracle Weblogic Server上它是怎么工作的.

在虚拟机中Oracle Weblogic Server的结构

在虚拟机中运行时,Weblogic Server包含三种类型的实例:

  • Administration Server.(管理服务器)
  • Node Manager.(节点管理器)
  • Managed Server.(被管理服务器)

管理服务器是中心节点,通过它可以配置和管理集群中的所有资源.它通过与节点管理器连接增加或删除被管理节点.而被管理节点运行Web应用、EJBs、Web service和其他的资源.

通常,每个虚拟机上运行一个节点管理器和多个被管服务服务器,而一个管理服务器则管理所有虚拟机上的所有实例.

通过虚拟机扩展 WebLogic

现在想象一下遇到流量高峰期需要扩展集群,新的被管服务器将会被加入到虚拟机中用于处理增长的负载,直到没有资源分配.

但是当流量还在不断增长,而当前被管理服务的实例数量不足以处理负载时,则需要增加一个新的虚拟机去处理程序的进一步增长的业务规模.

典型的通过多个虚拟机对WebLogic进行扩展包括三个步骤:

  1. 提供一个提前配置好 Weblogic Server 模板的新虚拟机
  2. 在新的虚拟机上启动一个节点管理器,并连接到管理服务器上
  3. 添加一个新的被管理服务器处理部分增长的业务负载

然后,这个扩展的步骤重复,在新增加的虚拟启动更多的被管理服务器直到资源限制.

 

在虚拟机中运行WebLogic的劣势

这样运行Oracle WebLogic是一种资源利用率非常低下的方式,这里有几个资源浪费或未使用的点:

  1. 每个虚拟机要求拥有完整的操作系统,TCP 栈和文件系统,这些需要使用宿主机大量的 CPU 和内存.
  2. 这些资源的分配并非高度微粒化,在某些场景,所有当我们只需要增加一个被管理服务器时也需要去准备一个完整的虚拟机.
  3. 如果当一个虚拟机的资源不足时,添加额外的 CPU 或仅是增加内存也需要重启整个虚拟机.
  4. 每个虚拟机都需要节点管理器用来增加或删除被管理节点,需要消耗额外的资源和增加额外复杂的配置.
  5. 在同一个虚拟机里运行的实例由于缺少隔离会相互影响,从而影响整个应用的性能.也出于这个原因,我们不能在同一个虚拟机上混合搭配运行不同的应用程序.
  6. 虚拟机的可移植性受限于一个厂商,所以当我们想从一个云迁移到另一个云会有一系列的问题.
  7. 在虚拟机上做模板打包和实施CI/CD会非常慢和过程复杂.

从虚拟机迁移到容器

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读