使用阿里云极速型NAS构建高可用的GitLab

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
日志服务 SLS,月写入数据量 50GB 1个月
简介: 基于阿里云文件存储NAS构建高可用的GitLab
+关注继续查看

使用阿里云文件存储NAS构建GitLab高可用环境

GitLab简介

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。GitLab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
由于Git的分布式特性,即使Gitlab不可用,开发人员仍然可以在本地提交代码。但是,某些Gitlab功能,比如CI,问题跟踪和持续集成会不可用,也会严重影响线上使用。因此高可用架构还是不可缺少的。GitLab软件架构如下图所示:
image

GitLab高可用设计

主备模式:启动2个实例,只有一个工作提供服务,数据通过分布式存储保持一致

image

主主模式(scales):Rails server启动多个,同时提供服务,数据库保持独立,数据通过NAS文件存储共享

image

GitLab高可用方案

水平扩展

这种架构适用于许多Gitlab客户访问的使用场景,解决高API使用率,大量排队的Sidekiq作业的问题。

  • 3 PostgreSQL nodes
  • 2 Redis nodes
  • 3 Consul/Sentinel nodes
  • 2 or more GitLab application nodes (Unicorn, Workhorse, Sidekiq, PGBouncer)
  • 1 NFS/Gitaly server
    image

混合扩展

这种架构通过组件在专用节点上分离,提供高资源使各组件不会相互干扰,解决服务争用/高负载的问题。

  • 3 PostgreSQL nodes
  • 1 PgBouncer node
  • 2 Redis nodes
  • 3 Consul/Sentinel nodes
  • 2 or more Sidekiq nodes
  • 2 or more GitLab application nodes (Unicorn, Workhorse)
  • 1 or more NFS/Gitaly servers
  • 1 Monitoring node (Prometheus, Grafana)
    image

全分布式扩展

该体系结构可扩展到数十万用户和项目,是GitLab.com体系结构的基础。 虽然分布式架构可以很好地扩展,但它增加了节点的复杂性,配置,管理和监控的难度,不易维护。

  • 3 PostgreSQL nodes
  • 4 or more Redis nodes (2 separate clusters for persistent and cache data)
  • 3 Consul nodes
  • 3 Sentinel nodes
    Multiple dedicated Sidekiq nodes (Split into real-time, best effort, ASAP, CI Pipeline and Pull Mirror sets)
  • 2 or more Git nodes (Git over SSH/Git over HTTP)
  • 2 or more API nodes (All requests to /api)
  • 2 or more Web nodes (All other web requests)
  • 2 or more NFS/Gitaly servers
    image

阿里云文件存储NAS选型

image
GitLab场景通常为海量小文件场景,需要并发的进行文件的读写操作。该种场景适用于极速型NAS。该种NAS后端基于RDMA网络进行时延优化,对于元数据操作密集型的业务有很高的OPS和较低的访问时延。

引用文章

https://docs.gitlab.com/ce/administration/high_availability/README.html

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
相关文章
|
2月前
|
Java jenkins 应用服务中间件
Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)
Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)
|
2月前
|
jenkins 应用服务中间件 持续交付
Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
|
2月前
|
Cloud Native jenkins 持续交付
【云原生】使用PyCharm上传代码到Gitlab仓库并在Jenkins构建
【云原生】使用PyCharm上传代码到Gitlab仓库并在Jenkins构建
|
2月前
|
Kubernetes jenkins Devops
jenkins+kubernetes+harbor+gitlab构建企业级devops平台
jenkins+kubernetes+harbor+gitlab构建企业级devops平台
|
2月前
|
Kubernetes jenkins Devops
kubernetes+jenkins+harbor+gitlab构建企业级devops平台
kubernetes+jenkins+harbor+gitlab构建企业级devops平台
|
4月前
|
Kubernetes Java 网络安全
GitLab CI构建SpringBoot-2.3应用
SpringBoot应用提交到GitLab后,会自动构建成docker镜像,甚至自动部署在K8S环境
GitLab CI构建SpringBoot-2.3应用
|
6月前
|
域名解析 Cloud Native jenkins
【Drone-初识篇】Drone借助GitLab构建CICD环境、以及编写 .drone.yaml 流水线
【Drone-初识篇】Drone借助GitLab构建CICD环境、以及编写 .drone.yaml 流水线
358 0
|
6月前
|
监控 测试技术 持续交付
构建自动化部署流水线:GitLab CI/CD的实践指南
在现代软件开发中,快速且可靠地交付软件是至关重要的。为了实现这一目标,构建自动化部署流水线成为一种常见的实践方法。本文将介绍如何使用GitLab CI/CD来构建自动化部署流水线,以提高开发团队的效率和软件交付质量。
883 0
|
8月前
|
XML 存储 JSON
Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
196 0
|
jenkins 持续交付 开发工具
Git - 向 GitLab 提交代码之后自动触发 Jenkins 构建
Git - 向 GitLab 提交代码之后自动触发 Jenkins 构建
160 0
Git - 向 GitLab 提交代码之后自动触发 Jenkins 构建
相关产品
文件存储NAS
推荐文章
更多