在上一期中,我们介绍了星云私有化部署落地方案~前端。今天,我们将继续深入探讨星云私有化部署落地方案,重点讲解后端部分的部署架构,包括中间件和后端服务两大核心。
从星云私有化部署整体方案中,可以知道我们采用了MySQL、Redis、Elastic Search、RabbitMQ和FastDFS这五种中间件组件。它们在私有化部署中的具体落地方案如下图所示:
(1)将星云使用的五种组件镜像上传至维搭自有的Harbor仓库。
(2)将组件相关的配置和初始化脚本等,集中存储在GitLab上进行版本管理。
(3)配置和脚本中涉及的变量(如组件服务的IP、端口、用户名、密码等),统一放入 .env 文件中维护,确保能够根据不同环境进行灵活调整。
(4)使用 Docker Compose 管理各个组件服务容器的生命周期。
(5)在初次部署时,通过一键部署脚本 install.sh 从 GitLab 拉取相关配置,随后利用 Docker Compose 创建各组件服务容器。此过程为一次性操作,之后可直接通过修改 .env 文件并使用各组件自有的 Docker Compose 配置来管理容器。
由于星云后端基于 Spring Cloud 微服务架构,私有化部署涉及多个方面,包括 Maven 依赖包发布、配置服务部署、常规服务部署以及 SQL 脚本的维护与执行。整个后端服务的私有化部署架构如下图所示:
(1)在 Nexus 上创建一个专门用于私有化部署的 Maven 仓库。
(2)每次进行 Milestone 部署时,先编译该版本的 JAR 包,并上传至 Nexus 的 Snapshot 仓库。
(3)在服务打包时,直接从对应的公共仓库获取已上传的 JAR 包。
(1)维护一份专门用于私有化部署的配置文件,存放在 GitLab 的 config-repo 仓库中。对于涉及环境差异的配置,全部使用变量,而具体的值则在私有化服务器的 .env 文件中维护。
(2)在 Jenkins 构建 Config 服务镜像时,将后端的 Config 服务与上述 config-repo 配置文件一起打包,生成一个新的 Config 镜像。
(3)在私有化服务器上启动 Config 服务时,通过 Docker Compose,将 .env 文件中的具体值注入到容器内的 config-repo 配置文件中。服务启动完成后,即可对外提供配置服务。
(1)后端服务通过指定 tag 拉取源码,并从 Nexus 拉取依赖包,完成打包并生成镜像,随后将镜像推送至镜像仓库。
(2)在 docker-compose-eureka.yml 中维护 Eureka 服务的部署配置,部署时通过拉取 Eureka 镜像并结合 Config 服务提供的配置来创建并启动 Eureka 容器。
(3)在 docker-compose-app.yml 中维护所有后端应用服务的部署配置。部署时,首先检查 Config 服务和 Eureka 服务是否已启动完成,确保依赖服务正常后,基于后端服务镜像和 Config 服务配置共同创建并启动相应的应用容器。
SQL 脚本的维护与执行采用了开源的 SQL 迁移工具 Flyway(Flyway GitHub)。该工具能够与 Spring Boot 服务无缝集成,实现服务启动时自动按版本顺序执行 SQL 脚本,已执行成功的版本会自动跳过。我们只需按 Flyway 的要求维护版本,复杂的 SQL 执行判断和顺序管理都由 Flyway 处理。此外,Flyway 还支持使用变量,若某些 SQL 脚本与私有化环境相关,可以在 SQL 文件中以变量形式存在,具体值则在 .env
文件中维护,并在容器创建时注入。关于 Flyway 的详细使用方法,我将在下篇文章中进行专门介绍。
本文详细介绍了中间件和后端服务(包括依赖包、配置服务、常规服务和 SQL 执行)的私有化部署方案。该方案简化了整个部署流程,显著提升了私有化部署的便捷性和效率。
我是维搭的小刘,感谢您的阅读,我们下篇文章再见!如果觉得有帮助,欢迎点赞和转发。