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

使用阿里云文件存储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和较低的访问时延。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

The following SDK components were not installed: extra-google-m2repository and platform-tools

安装android studio到最后一步的时候遇见了这个问题 。 android studio安装详见Android Studio 安装 经过查阅多篇博客 把他们的解决方案放在一起一顿操作猛如虎,然后就成了。。。 2篇原文链接我放在这里: Android Studio新建工程时SDK缺少extra-an…

数据库中间件漫谈——看看云时代,它会走向何方

来源 | 阿丸笔记封图| CSDN 下载于视觉中国前言随着业务的发展,MySQL数据库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作的开销也会越来越大;另外,无论怎样升级硬件资源,单台服务…

即插即用,基于阿里云Ganos快速构建云上开源GIS方案

对于轻量级GIS应用,选择具备时空能力的云上数据库再搭配开源GIS软件,能够快速构建稳定、廉价、实用的GIS解决方案。Ganos是阿里云自研时空基础设施(PaaS层)的核心引擎,该引擎整合了云上异构计算并行加速、OSS大规模存储…

linux执行sh报错:$’\r’: 未找到命令的解决

背景执行.sh脚本时出现$’\r’: 未找到命令,原因是因为命令直接从windows 复制过来导致的解决yum install dos2unixdos2unix **.sh 进行转换再次执行即可

Knative 初体验:Serving Hello World

通过前面两章的学习你已经掌握了很多 Knative 的理论知识,基于这些知识你应该对 Knative 是谁、它来自哪里以及它要做什么有了一定的认识。可是即便如此你可能还是会有一种犹抱琵琶半遮面,看不清真容的感觉,这就好比红娘拿姑娘的 100 张生活照…

Java-if选择结构

if单选择结构 if双选择结构 if多选择结构 嵌套if结构 https://www.bilibili.com/video/BV12J41137hu?p36&spm_id_frompageDriver

数据仓库介绍与实时数仓案例

1.数据仓库简介 数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策…

Centos7 安装docker-compose

文章目录1. 下载Docker Compose2. 给docker-compose执行权限3. 查看docker-compose版本信息1. 下载Docker Compose 官网链接:https://docs.docker.com/compose/install/ Run this command to download the current stable release of Docker Compose: curl -L "…

优酷背后的大数据秘密

在本文中优酷数据中台的数据技术专家门德亮分享了优酷从Hadoop迁移到阿里云MaxCompute后对业务及平台的价值。 本文内容根据演讲视频以及PPT整理而成。 大家好,我是门德亮,现在在优酷数据中台做数据相关的事情。很荣幸,我正好见证了优酷从没…

从提取层、处理层、基础结构入手,带你了解Spark和Kafka!

作者 | Jaskaran S. Puri译者 | 火火酱 责编 | 徐威龙封图| CSDN 下载于视觉中国电子商务市场中典型的一天是这样的:每分钟发生1万个事件流,并且要选择合适的工具对其进行处理。本文将帮助你重新创建一个场景,其中有大量的数据流入&#xff0…

既有 HTTP ,为啥用 RPC 进行服务调用?

RPC 只是一种设计而已 RPC 只是一种概念、一种设计,就是为了解决 不同服务之间的调用问题, 它一般会包含有 传输协议 和 序列化协议 这两个。 但是,HTTP 是一种协议,RPC框架可以使用 HTTP协议作为传输协议或者直接使用TCP作为传输协议&#x…

Centos7 安装docker和docker-compose

文章目录1. 环境介绍2. 删除旧版本和相关依赖3. 安装依赖4. 配置稳定的repositories5. 安装docker6. docker信息7. Centos7 安装docker-compose1. 环境介绍 Centos7,参考官方文档:https://docs.docker.com/insta… 2. 删除旧版本和相关依赖 yum remov…

Java-switch选择结构

基本类型 public class SwitchDemo01 {public static void main(String[] args) {// case 穿透char grade B;switch (grade) {case A:System.out.println("优秀");break;case B:System.out.println("良好");break;case C:System.out.println("及格&…

高性能服务器架构思路【不仅是思路】

在服务器端程序开发领域,性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问…

bash: vim: command not found

在 Docker 容器中编辑文件,报错如下: bash: vim: command not found 解决方案: apt-get update apt-get install vim

v-if v-show区别(面试题)

v-if、v-show顾名思义就是用来判断视图层展示效果的,在Vue中文社区说明文档的介绍有: 相同点: v-if与v-show都可以动态控制dom元素显示隐藏 不同点: 1.v-if :可以根据表达式的值在DOM中生成或移除一个元素。 v-show:可…

专访世界顶级游戏背后的男人

‍作者 | 华为云和TA的朋友们封图| CSDN 下载于视觉中国如今,对于网易不鸣工作室CEO王希来说,团队的代表作《战意》已经获得阶段性成功。但不为人知的是,从下定决心要做世界顶级游戏,到这款作品萌生想法,再到正式公测&…

NoSQL 数据库不应该放弃 Consistency

谈到 NoSQL,一定会提及一致性(Consistency),按照 CAP 定理,有些 NoSQL 数据库放弃了一致性,但是 NoSQL 放弃是必然的选择吗? 从 1970’s,关系型数据库(RDB,R…

Java-While循环

public class WhileDemo01 {public static void main(String[] args) {// 输出 1 ~ 100int i 0;while (i<100) {i;System.out.println(i);}// 计算 1234...100&#xff1f;int j 0;int sum 0;while (j<100){sum sum j;j;}System.out.println(sum); // 5050} }https…

如何将深度学习训练速度提升一百倍?PAISoar 来了

阿里妹导读&#xff1a;得力于数据规模增长、神经网络结构的演进和计算能力的增强&#xff0c;深度学习的图像处理、语音识别等领域取得了飞速发展。随着训练数据规模和模型复杂度的不断增大&#xff0c;如何充分利用分布式集群的计算资源加快训练速度&#xff0c;提升业务支持…