任何云上的 Docker 3 层 Java 应用程序自动化

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

DCHQ 简化了企业应用程序的容器化,并使得通过一键部署按钮在多台主机上复制非常复杂的应用程序环境成为可能。 DCHQ 不仅自动化应用程序部署,而且还与 12 家不同的云提供商集成,以自动配置和自动扩展由分布式虚拟机组成的支持 Weave 的集群。

在此博客中,我们将介绍部署在 Tomcat 服务器上的基于 Docker 的 3 层 Java 应用程序的部署自动化和生命周期管理,其中 Nginx 用于负载平衡,MySQL 用于数据库。

这可以通过导航到自助服务库然后单击自定义来请求多层应用程序来完成。在此示例中,我们有一个多层应用程序,由 Nginx(用于负载平衡)、Tomcat(集群应用程序服务器)和 MySQL(作为数据库)组成。您会注意到 Nginx 正在调用 BASH 脚本插件以动态(或在请求时)将应用程序服务器的容器 IP 添加到 default.conf 文件中。 Tomcat 还调用 BASH 脚本插件从指定的 URL 部署 Java WAR 文件。您会注意到 cluster_size 参数允许您指定要启动的容器数量(具有相同的应用程序依赖性)。 主机 参数允许您指定要用于容器部署的主机。以下是主机参数支持的值:

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

此外,用户可以通过引用另一个图像的环境变量来创建跨图像环境变量绑定。以下是支持的环境变量列表:

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

在单击“运行”之前,用户可以选择环境标签(如 DEV 或 QE)和支持 Weave 的数据中心。

一旦应用程序启动并运行,用户就可以监控正在运行的容器的 CPU、内存和 I/O 利用率,并执行第 2 天的操作,例如备份、使用 BASH 插件的容器更新、扩展/扩展和持续交付.

在录制的演示中,我们将应用程序服务器集群从 2 个扩展到 3 个。用户可以安排在工作时间进行扩展,在周末进行扩展。然后我们使用 BASH 插件更新 Nginx 的 default.conf 文件,以便它知道添加的新应用程序服务器。还可以安排 BASH 脚本插件以适应用例,例如以定义的频率清理日志或更新配置。应用程序时间表可用于跟踪对应用程序所做的每个更改以进行审核和诊断。

当容器或主机关闭或主机或容器的 CPU 和内存利用率超过定义的阈值时,警报和通知可用。


DCHQ.io 托管 PaaS ( http://dchq.io ) 免费注册以获取此模板以及 Ruby、Python、PHP、MEAN.JS、Clustered MongoDB 和许多其他模板。


立即下载本地 DCHQ