部署流程概览

部署流程分析文档

📋 部署流程概览

这是一个完整的 CI/CD 部署流程,展示了一套从代码提交到流量上线的端到端自动化部署流水线,采用了 GitLab + Jenkins + Mesos + Harbor 等主流技术栈,并通过内部组件 BROMO 进行调度衔接。

共包含 11 个主要步骤


🔄 完整部署流程

阶段一:代码提交与构建触发

步骤 1: 提交代码
  • 开发者将代码提交到 GitLab 代码仓库
步骤 2: 触发构建
  • Jenkins 旨在简化软件交付流程。它是一个适用于各种软件工程任务的多功能平台,主要用于管理 CI/CD 管道,以确保更改得到有效验证和部署
  • GitLab 触发 Jenkins 构建任务

阶段二:构建与镜像管理

步骤 3: 检出代码并构建镜像
  • Jenkins 从 GitLab 检出代码
  • 执行构建,生成 Docker 镜像
步骤 4a & 4b: 上传静态文件
  • Akamai 是全球最大的内容分发网络(CDN)和云服务提供商
  • Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供 IMAP / POP3 / SMTP 服务
  • Jenkins 将静态文件上传到 Akamai 和 Nginx,实现静态资源的 CDN 加速和本地缓存。
  • 用于前端资源的分发和加速
步骤 5: 推送镜像
  • Harbor 是一个开源的企业级容器镜像仓库,可以帮助存储、管理和分发Docker 容器镜像
  • Jenkins 将构建好的镜像推送到 Harbor 镜像仓库

阶段三:应用部署与编排

步骤 6: 触发应用更新
  • Jenkins 通过内部组件 BROMO 触发应用更新指令,把部署任务传递给 Mesos 集群
步骤 7: 更新 Mesos 任务
  • Mesos 是一个开源的分布式资源管理框架,旨在高效地管理和调度大规模集群中的计算资源。
  • BROMO 通知 Mesos 更新任务配置
  • Mesos 负责容器编排和资源管理
步骤 8: 拉取镜像
  • Dragonfly 是一个由阿里巴巴开源的云原生镜像分发系统,主要解决以 KubernetesMesos 为核心的分布式应用编排系统的镜像分发难题。
  • 一般说来,如果只是用于容器集群管理,Kubernetes 更加合适,如果定制需求比较多,或者要搭建大数据平台,架构相对松耦合的 Mesos 显然更加合适
  • Mesos 通过 Dragonfly(P2P 分发工具)从 Harbor 拉取容器镜像,可加速镜像下载,提升分发效率

阶段四:服务发现与流量转发

步骤 9: 注册服务信息
  • Apache ZooKeeper 是一个开源的分布式协调服务,广泛用于分布式系统中
  • Mesos 将服务信息注册到 Apache Zookeeper
步骤 10: 查询服务信息
  • Nginx 从 Apache Zookeeper 查询最新的服务实例信息,确保流量转发的准确性
步骤 11: 转发流量
  • NGINX 根据查询到的服务信息,将用户流量转发到新部署的 Mesos 服务实例

🏗️ 架构特点

  1. 分离部署:静态资源(Akamai)与动态服务(Mesos)分离
  2. 镜像管理:使用 Harbor 集中管理镜像
  3. 加速分发:Dragonfly 加速镜像拉取
  4. 服务发现:Zookeeper 提供服务注册与发现
  5. 负载均衡:NGINX 作为流量入口和负载均衡器
  6. 容器编排:Mesos 管理容器生命周期

🛠️ 技术栈总结

组件 用途
GitLab 版本控制和代码仓库
Jenkins CI/CD 持续集成和部署
Akamai CDN 静态资源分发
Harbor 容器镜像仓库
Dragonfly P2P 镜像分发系统
Mesos 容器编排和资源管理
BROMO 部署管理平台
Apache Zookeeper 服务注册与发现
NGINX 反向代理和负载均衡

📊 流程图说明

复制代码
开发者 → GitLab → Jenkins → [Akamai/Harbor] → BROMO → Mesos → Zookeeper → NGINX → 用户流量

💡 总结

这是一个典型的微服务部署架构,适用于大规模分布式系统的持续部署场景。整个流程实现了:

  • ✅ 自动化构建和部署
  • ✅ 镜像版本管理
  • ✅ 服务自动发现
  • ✅ 流量自动转发
  • ✅ 高可用和负载均衡
相关推荐
切糕师学AI8 小时前
什么是灰度发布(Gray Release)?
devops·持续部署·持续集成·灰度发布·release·gray release
freejackman15 小时前
持续集成-Jenkins 基础教程
java·python·ci/cd·自动化·jenkins·持续部署·持续集成
1candobetter4 天前
SELinux在Nginx反向代理场景的权限配置
持续部署
oscar9998 天前
持续交付与持续部署的区别
ci/cd·持续部署·持续交付
wxr061616 天前
部署Spring Boot项目+mysql并允许前端本地访问
前端·spring boot·mysql·持续部署
庚昀◟1 个月前
用AI来“造AI”!Nexent部署本地智能体的沉浸式体验
人工智能·ai·nlp·持续部署
Allen_LVyingbo2 个月前
开源协同∞智算赋能:GitCode+昇腾NPU部署CodeLlama全流程实践
华为云·持续部署·gitcode
小毅&Nora2 个月前
【后端】蓝绿发布全链路改造详解:从配置到生产环境的完整实践
架构·持续部署