Docker WebLogic集群在任何云上的部署自动化

http://DCHQ.io上免费注册以获取对现成的多层Java,Ruby,Python和PHP模板的访问以及应用程序生命周期管理功能,如监视,容器更新,放大/缩小和持续交付。

背景

Java开发人员和DevOps专业人员长期以来一直在努力实现企业Java应用程序的自动化部署。 这些应用程序的复杂性通常意味着,每次在DEV / TEST环境中部署应用程序时,都必须重新配置应用程序依赖性和外部集成。

许多解决方案宣传“一次建模,随处部署”消息,以进行应用程序部署。 但是,实际上,总会有一些复杂性,例如,很难在本地vSphere虚拟环境和AWS环境中重用应用程序模板。

免责声明 -这仍在进行中。 该博客适用于DEV / TEST环境。

但是,最近,Docker容器普及了将应用程序组件打包到Linux容器中的想法,只要安装了Docker Engine,它们就可以在所有Linux主机上完全相同地部署。

不幸的是,对企业Java应用程序进行容器化仍然是一个挑战,主要是因为现有的应用程序组合框架无法解决复杂的依赖关系,外部集成或置备后的自动扩展工作流。 此外,容器的短暂设计意味着开发人员必须启动新的容器并在每次版本更新时重新创建复杂的依赖关系和外部集成。

DCHQ具有托管和内部部署版本,可解决所有这些挑战,并通过高级应用程序组合框架简化了企业Java应用程序的容器化,该框架通过跨映像环境变量绑定,可扩展的BASH脚本插件扩展了Docker Compose。可以在请求时间或后置资源时调用,并通过应用程序群集在多个主机或区域上实现高可用性,并支持自动扩展。

设置应用程序后,用户可以监视正在运行的容器的CPU,内存和I / O,获取通知和警报,并执行第二天的操作,例如预定备份,使用BASH脚本插件和Scale的容器更新。进出。 此外,借助Jenkins促进连续交付的即用型工作流使开发人员可以刷新正在运行的应用程序的Java WAR文件,而不会破坏现有的依赖关系和集成。

在此博客中,我们将介绍基于Docker的WebLogic集群的端到端部署自动化。 我们将介绍:

  • 构建可在任何地方运行的Linux主机上重复使用的WebLogic群集的应用程序模板
  • 在任何云上配置和自动扩展基础架构(本博客中以Rackspace为例)
  • 在Rackspace云服务器上部署WebLogic群集
  • 在管理服务器上部署购物车Java WAR文件
  • 访问浏览器内置终端以运行容器
  • 触发构建后,使用Jenkins启用持续交付工作流来更新正在运行的应用程序的WAR文件
  • 监视正在运行的容器的CPU,内存和I / O

为Oracle WebLogic 12c集群构建应用程序模板

登录到DCHQ(托管的DCHQ.io或本地版本)后,用户可以导航至“ 管理” >“ 模板” ,然后单击“ +”按钮以创建新的Docker Compose模板。

我们使用Radu Dobrinescu的映像(radudobrinescu / wls12c:2.0)构建的自定义映像创建了WebLogic Cluster应用程序模板。

您会注意到, cluster_size参数使您可以指定要启动的容器数(具有相同的应用程序依赖性)。 我们使用它来定义受管服务器群集的大小。

host参数允许您指定要用于容器部署的主机。 这样,您可以确保跨不同主机(或区域)的应用程序服务器群集的高可用性,并且可以遵守关联性规则以确保数据库在例如单独的主机上运行。 以下是host参数支持的值:

  • host1,host2,host3等–在数据中心(或集群)中随机选择一个主机进行容器部署
  • <IP地址1,IP地址2等> -允许用户指定用于容器部署的实际IP地址
  • <主机名1,主机名2等> -允许用户指定用于容器部署的实际主机名
  • 通配符 (例如“ db- *”或“ app-srv- *”)–指定要在主机名中使用的通配符

此外,用户可以通过引用另一个图像的环境变量来创建跨图像环境变量绑定。 在这种情况下,我们在这种情况下进行了一个绑定:ADMIN_HOSTNAME = {{AdminServer | ip}} –在其中,管理服务器主机IP在请求时动态解析,用于确保受管服务器可以与管理服务器建立连接。

以下是受支持的环境变量值的列表:

  • {{字母数字| 8}} –创建一个随机的8个字符的字母数字字符串。 这对于创建随机密码最有用。
  • {{<图像名称> | ip}} –允许您输入容器的主机IP地址作为环境变量的值。 这对于允许中间件层与数据库建立连接最有用。
  • {{<图像名称> | container_ip}} –允许您输入容器的容器名称作为环境变量的值。 这对于允许中间件层与数据库建立安全连接(不暴露数据库端口)最有用。
  • {{<图像名称> | container_private_ip}} –允许您输入容器的内部IP作为环境变量的值。 这对于允许中间件层与数据库建立安全连接(不暴露数据库端口)最有用。
  • {{<图像名称> | port _ <端口号>}} –允许您输入容器的端口号作为环境变量的值。 这对于允许中间件层与数据库建立连接最有用。 在这种情况下,指定的端口号必须是内部端口号,即不是分配给容器的外部端口。 例如,{{PostgreSQL | port_5432}}将转换为实际的外部端口,该端口将允许中间件层与数据库建立连接。
  • {{<图像名称> | <环境变量名称>}} –允许您将一个图像的环境变量的值输入到另一个图像的环境变量中。 这里的用例是无止境的-因为大多数多层应用程序将具有跨映像依赖关系。

1312046_orig

Docker WebLogic映像的实际构建也可以通过DCHQ自动化。 用户可以单击自动 > 图像构建 ,然后单击+按钮。 用户可以使用Dockerfile或具有Dockerfile的私有/公共GitHub项目创建映像。

我们为WebLogic创建的映像是使用Radu Dobrinescu的映像(radudobrinescu / wls12c:2.0)( https://hub.docker.com/r/radudobrinescu/wls12c/ )构建的。 我们对自己的Dockerfile中的映像进行了一些修改,然后将新映像推送到我们自己的存储库(dchq / weblogic:latest)。 可以使用cron表达式计划图像的构建。 此外,用户可以在标签名称中使用{{timestamp}},以便为每个新版本创建唯一的标签名称。 这样,用户可以还原到较旧的映像进行备份。

1493591_orig

在任何云上预配和自动扩展基础架构

保存应用程序后,用户可以注册云提供商,以在13个不同的云端点(包括vSphere,OpenStack,CloudStack,Amazon Web Services,Rackspace,Microsoft Azure,DigitalOcean,HP Public)上自动配置和自动扩展群集。云,IBM SoftLayer,Google Compute Engine等。

首先,用户可以通过导航至“ 管理” >“ 仓库和云提供商” ,然后单击“ +”按钮选择“ Rackspace”,为Rackspace注册一个Cloud Provider。 需要提供Rackspace API密钥-可以从Rackspace Cloud控制面板的“帐户设置”部分检索。

5753717_orig

然后,用户可以使用自动扩展策略创建集群,以自动启动新的Cloud Server。 可以通过导航到“ 管理” >“ 集群”页面,然后单击+按钮来完成。 您可以选择一个基于容量的放置策略,然后选择Weave作为网络层,以促进群集内多个主机之间安全,受密码保护的跨容器通信。

7614103_orig

用户现在可以通过导航到“ 管理” >“ 主机” ,然后单击“ +”按钮选择“ Rackspace” ,在新创建的群集上置备许多Cloud Server。 选择云提供商后,用户可以选择所需的区域,大小和图像。 然后选择一个集群,然后可以指定云服务器的数量。

3835654_orig

将WebLogic群集部署到Rackspace云服务器

设置云服务器后,用户可以在新的云服务器上部署基于Docker的多层Java应用程序。 这可以通过导航到自助服务库,然后单击“自定义”来请求多层应用程序来完成。

用户可以选择环境标签(例如DEV或QE)和在单击“运行”之前创建的Rackspace群集。

6971080_orig

设置WebLogic群集后,用户可以访问Admin Server Console,以确保发现并运行受管服务器。 该URL为http:// <admin_server_host_ip>:7001 / console 。 默认凭据为weblogic / welcome1。

8678212_orig

使用插件框架部署购物车Java WAR文件

一旦WebLogic群集启动并运行,用户即可执行BASH脚本插件以在其中一台服务器上部署Java WAR文件。 在这种情况下,我们只需调用一个插件即可在Admin Server上部署Shopping Cart应用程序。 用户可以从“ 操作”菜单中选择“ 插件” ,然后选择将在其上执行插件的容器。 然后,用户可以搜索插件并覆盖公开的参数。

8004261_orig

在这个简单的插件中,我们从远程可访问的服务器中获取三个文件,以部署应用程序。

  • deploy.py
  • deploy_app.sh
  • 购物车大战

以下是实际使用的文件:

deploy.py
————————

9511694_orig

deploy_app.sh
————————

9950961_orig

访问正在运行的容器的浏览器内终端

在Live Apps页面上,容器名称旁边应有一个命令提示符图标。 这允许用户通过代理消息队列使用安全的通信协议进入容器。 租户管理员可以定义命令白名单,以确保用户不会对正在运行的容器进行任何有害更改。

在这种情况下,我们使用命令提示符来确保确实将deploy.py文件下载到了Admin Server。 通过做一个简单的cat /oracle/fmwhome/wlst_custom/deploy.py –我们能够验证该文件确实存在于该容器中。

3212316_orig

然后,我们访问了Admin Server Console,并导航到Deployments,以确保确实部署了Shopping Cart应用程序。

8860693_orig

最后,我们在http:// <admin_server_host_ip>:7001 / shoppingcart上访问了实际的应用程序

5864798_orig

监视正在运行的容器的CPU,内存和I / O利用率

一旦应用程序启动并运行,我们的开发人员将监视正在运行的容器的CPU,内存和I / O,以在这些指标超过预定义的阈值时获得警报。 这在我们的开发人员执行功能和负载测试时特别有用。

用户可以执行历史监视分析,并将问题与容器更新或构建部署相关联。 这可以通过单击正在运行的应用程序的“ 动作”菜单,然后单击“ 监视”来完成 。 可以选择一个自定义日期范围以历史查看CPU,内存和I / O。

8600536_orig

触发构建时,使用Jenkins启用持续交付工作流以更新正在运行的应用程序的WAR文件

对于希望遵循“不可变”容器模型的开发人员,通过重建包含应用程序代码的Docker映像并在每次应用程序更新时旋转新容器,DCHQ提供了自动构建功能,该功能允许开发人员从Dockerfiles或包含以下内容的私有GitHub项目中自动创建Docker映像: Dockerfiles。

但是,许多开发人员可能希望使用最新的Java WAR文件更新正在运行的应用程序服务器容器 。 为此,DCHQ允许开发人员使用Jenkins启用连续交付工作流程。 这可以通过单击正在运行的应用程序的“ 操作”菜单上,然后选择“ 连续交付”来完成 。 用户可以选择已经向DCHQ注册的Jenkins实例,将在Jenkins上生成最新WAR文件的实际Job,然后选择BASH脚本插件来获取此构建并将其部署在运行的应用程序服务器上。 保存此策略后,只要触发构建,DCHQ就会从Jenkins获取最新的WAR文件,并将其部署在运行的应用程序服务器上。

请注意,可以自定义BASH脚本插件,以确保对WebLogic Server采取正确的步骤顺序。 例如,用户可能希望使用特定的部署计划或运行一些脚本,然后再取消部署然后部署新的WAR文件。

因此,开发人员将始终将最新的Java WAR文件部署在DEV / TEST环境中的运行容器上。

4236275_orig

结论

容器化企业Java应用程序仍然是一个挑战,主要是因为现有的应用程序组合框架无法解决复杂的依赖关系,外部集成或置备后的自动扩展工作流。 此外,容器的短暂设计意味着开发人员必须启动新的容器并在每次版本更新时重新创建复杂的依赖关系和外部集成。

DCHQ具有托管和内部部署版本,可解决所有这些挑战,并通过高级应用程序组合框架简化企业Java应用程序的容器化,该框架可促进跨映像环境变量绑定,可在以下位置调用的可扩展BASH脚本插件。请求时间或事后置备,以及应用程序群集以在多个主机或区域上实现高可用性,并支持自动扩展。

免费注册在http://DCHQ.io或下载DCHQ在-Pemise获取与应用程序生命周期管理功能以及像监控,集装箱更新,规模输入/输出访问外的箱多层Java应用程序模板,持续交付。

翻译自: https://www.javacodegeeks.com/2015/11/deployment-automation-of-docker-weblogic-cluster-on-any-cloud.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值