1. 程式人生 > >使用阿里雲極速型NAS構建高可用的GitLab

使用阿里雲極速型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和較低的訪問時延。


原文連結
本文為雲棲社群原創內容,未經