如何利用單臺服務器實現10萬多個Git倉庫托管

jopen 9年前發布 | 5K 次閱讀 Git

英文原文:The hardware that powers 100,000 git repositories

在單臺服務器上就可以托管 10 萬多個倉庫,GitLab.com 是如何做到的呢?來看 GitLab.com 是如何自建服務和擴展存儲來滿足這么多倉庫的托管。

以下為譯文:

你想在任何地方免費托管公共/私有倉庫嗎?可以選擇 GitLab.com,我們已經在上面托管過一個單例 GitLab,已有將近 20000 人積極地使用 GitLab 來托管倉庫,并且一臺服務器就已托管 10 萬多個倉庫。

單一服務器

之前,GitLab.com 托管在亞馬遜上,使用的是 AWS 上最高的配置實例。但隨著用戶數的增長,以及我們只能進行垂直擴展和 CPU 綁定,所以,我們必須尋找 AWS 替代品。

100K 倉庫需要占用好幾個 TB 空間,所以,存儲能力變得相當重要。因為我們使用的是 git,所以,我們只能選擇單一的文件系統,而不是對象存儲(比如 S3)。我們希望能夠輕松地擴展存儲,此外,成千上萬個用戶在 push 和 pull 他們的代碼,這樣就會給 CPU 帶來一定的負擔。因此,我們需要更多的 CPU 核來減輕高負載帶來的壓力。

事實證明,我們使用自己的服務器是迄今為止最具性價比的選擇了。

如何利用單臺服務器實現10萬多個Git倉庫托管

目前,我們有兩臺獨立服務器用來運行 GitLab.com,其中一臺是活動的主服務器,另外一臺備用。服務器配置如下:

  • 服務器型號:HP DL180 G6 (2009 年引進)
  • 處理器:2x X5690 (共 24 核)
  • 32GB RAM
  • 12x 2TB HDDs (其中兩個用于 root 卷,使用 RAID 1,另外 10 個磁盤使用 RAID 10 ext4 文件系統)

實際上,我們開始只用了 16 個核,但又增加了 8 核來取代 CPU,從而減少 CPU-bound 加載。

故障和故障轉移

棄用 AWS 意味著我們不可以再使用任何 AWS 功能,因此,為了預防宕機等現象發生,我們需要進行故障轉移。

我們使用 DRBD 來創建一臺主服務器和一臺從服務器,其中一個服務器作為應用服務器,并且應該是活動的,如果出現問題,我們會通知 DRBD 來開啟另一臺服務器作為備用。

我們的 DRBD 工具以及完成構建,并且提供給我們的用戶

未來擴展

GitLab.com 目前在已有的硬件上能夠很好的運行,但其正以前所未有的速度在增長。擴展當前的硬件將會非常昂貴,而且并不會輕而易舉完成。

未來,GitLab.com 將會再次托管在 AWS 上面,橫向擴展也會變得非常輕松。此外亞馬遜剛剛宣布了超過 10TB 的 ESB 卷,這將讓我們的移植變得容易。

來自: CSDN

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!