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

GitLab简介

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

GitLab高可用设计

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

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

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

混合扩展

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

  • 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)

全分布式扩展

该体系结构可扩展到数十万用户和项目,是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

阿里云文件存储NAS选型


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

原文链接
本文为云栖社区原创内容,未经允许不得转载。

使用阿里云极速型NAS构建高可用的GitLab相关推荐

  1. 阿里高可用mysql搭建方案_阿里云环境迁移记录 - MYSQL高可用搭建

    MYSQL高可用方案主要分为两大类,一类是前置管理,一类是后置管理. 前置管理的思想是利用各种前置管理工具,动态切换或者分发请求到不同的实例并切换master,如keepalived.MHA.pack ...

  2. 阿里云 mysql 高可用_如何在阿里云上构建高可用应用

    原标题:如何在阿里云上构建高可用应用 业务高可用是我们每个项目的需求,一个经常故障的项目,会让我们觉得不靠谱而选择放弃,从而导致项目的失败.今天,我们来聊一聊,如何让你自己的业务能够更加稳固的运行! ...

  3. 阿里云文件存储NAS简介和购买流程

    阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统.兼容POSIX文件接口,可支持上千台弹性计算ECS.容器服务ACK等计算节点共享访问,您无需修改应用程序,即可无缝迁移业 ...

  4. 阿里云文件存储NAS使用教程

    关于阿里云文件存储NAS的详细了解: 阿里云文件存储NAS使用教程 (阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例.HPC和Docker的文件存 ...

  5. 阿里云分析型数据库使用教程

    产品概述 随着企业IT和互联网系统的发展,越来越多的数据被产生了.数据的量的积累带来了质的飞跃,使得数据系统从业务系统的一部分演变得愈发独立,通过对数据的分析和挖掘产生自己独特的价值. 在业务系统中, ...

  6. 悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践

    悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践 说到"大数据",当下这个词很火,各行各业涉及到数据的,目前都在提大数据,提数据仓库,数据挖掘或者机器学习,但同时另外 ...

  7. 阿里云共享型云服务器与独享型云服务器有什么区别?如何选择?

    我们在购买阿里云服务器的过程中,在选择云服务器实例的时候会看到有共享型和独享型可供选择,共享型云服务器常见的实例规格有共享型 n4和共享型s6,独享型云服务器有计算型c5/C6.通用型g5/g6.内存 ...

  8. 阿里云文件存储NAS和对象存储OSS区别对比如何选择?

    阿里云对象存储OSS和文件存储NAS有什么区别?文件存储NAS和对象存储OSS如何选择?NAS是传统的NFS挂载共享文件夹,OSS可以使用RESTful API,阿里云百科从技术.使用方式.容量.存储 ...

  9. Open Infrastructure Summit 2019,炼就成功开源范示;阿里云居亚太市场第一;高通将获45亿美元和解金...

    戳蓝字"CSDN云计算"关注我们哦! 重磅先知   Open Infrastructure Summit 2019,炼就成功开源范示 云计算市场烽烟再起:阿里云位居亚太市场第一 高 ...

最新文章

  1. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...
  2. Sql Server 2008 无法启动T-Sql调试问题的解决方案
  3. Linux串口打印信息工具,基于Qt实现Linux或Windows串口打印工具
  4. python 矩阵乘法梯度下降_使用python和numpy进行梯度下降
  5. SSIS包的组建之连接管理器
  6. .NET面试宝典130道经典面试真题及答案
  7. uhs3内存卡有哪些_三分钟教你看懂存储卡标识
  8. 广东最美的历史古村落,再不去就没了
  9. 设计模式_访问者模式
  10. Excel PivotTable 使用心得手顺分享(二)
  11. 看完牛客网19年测试全部面筋,有了这篇测试面试100问的博客
  12. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)
  13. 一个压长定式衍生出的一个角部攻防
  14. LTE终端分类-LTE UE category
  15. 中国ORC低温余热发电系统市场深度调研报告(2023版)
  16. html 高度塌陷,前端高度塌陷问题
  17. GFocalV2解读
  18. 可变变量和不可变变量
  19. HTML5 <colgroup> 标签、HTML5 <caption> 标签
  20. 组合数学之递推关系(二)常系数线性齐次递推关系及其通项求解

热门文章

  1. gdal java api_Java使用GDAL库
  2. 小学计算机课程评价,小学信息技术课堂评价浅谈
  3. java多线程教程_java 基础教程之多线程详解及简单实例
  4. 怎么快速搜索服务器里的文件,使用 Everything,快速搜索电脑文件,制作局域网资料搜索器 | 科技搜...
  5. python redis模块connectionerror_ConnectionError:Error 2连接到Python/Django Redis中的unix套接字...
  6. python和arduino串口通信_利用串行通信实现python与arduino的同步
  7. html5画布太极图,canvas实现太极图
  8. mysql基准性能测试标准_mysql性能测试与优化——(一),基准测试套件
  9. javascript 嵌入python_通过Python将区块链数据嵌入Javascript,这是正确的方法吗?
  10. “被枪指头,中国教授用功夫击退美国劫匪”,他的身份不简单