使用阿里云极速型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和較低的訪問時延。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的使用阿里云极速型NAS构建高可用的GitLab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应用实时监控 ARMS 上线用户行为回溯
- 下一篇: 高德JS依赖分析工程及关键原理