
部署流程分析文档
📋 部署流程概览
这是一个完整的 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 是一个由阿里巴巴开源的云原生镜像分发系统,主要解决以 Kubernetes 或 Mesos 为核心的分布式应用编排系统的镜像分发难题。
- 一般说来,如果只是用于容器集群管理,Kubernetes 更加合适,如果定制需求比较多,或者要搭建大数据平台,架构相对松耦合的 Mesos 显然更加合适
- Mesos 通过 Dragonfly(P2P 分发工具)从 Harbor 拉取容器镜像,可加速镜像下载,提升分发效率
阶段四:服务发现与流量转发
步骤 9: 注册服务信息
- Apache ZooKeeper 是一个开源的分布式协调服务,广泛用于分布式系统中
- Mesos 将服务信息注册到 Apache Zookeeper
步骤 10: 查询服务信息
- Nginx 从 Apache Zookeeper 查询最新的服务实例信息,确保流量转发的准确性
步骤 11: 转发流量
- NGINX 根据查询到的服务信息,将用户流量转发到新部署的 Mesos 服务实例
🏗️ 架构特点
- 分离部署:静态资源(Akamai)与动态服务(Mesos)分离
- 镜像管理:使用 Harbor 集中管理镜像
- 加速分发:Dragonfly 加速镜像拉取
- 服务发现:Zookeeper 提供服务注册与发现
- 负载均衡:NGINX 作为流量入口和负载均衡器
- 容器编排:Mesos 管理容器生命周期
🛠️ 技术栈总结
| 组件 | 用途 |
|---|---|
| GitLab | 版本控制和代码仓库 |
| Jenkins | CI/CD 持续集成和部署 |
| Akamai | CDN 静态资源分发 |
| Harbor | 容器镜像仓库 |
| Dragonfly | P2P 镜像分发系统 |
| Mesos | 容器编排和资源管理 |
| BROMO | 部署管理平台 |
| Apache Zookeeper | 服务注册与发现 |
| NGINX | 反向代理和负载均衡 |
📊 流程图说明
开发者 → GitLab → Jenkins → [Akamai/Harbor] → BROMO → Mesos → Zookeeper → NGINX → 用户流量
💡 总结
这是一个典型的微服务部署架构,适用于大规模分布式系统的持续部署场景。整个流程实现了:
- ✅ 自动化构建和部署
- ✅ 镜像版本管理
- ✅ 服务自动发现
- ✅ 流量自动转发
- ✅ 高可用和负载均衡