筆記國度

在這裡放著一些我自己的筆記

能支持 10 萬個 Git 倉庫的硬件平台

| Comments

翻譯文章出處

如果你想要託管項目,可以考慮 GitLab.com ,在這個網站上我們運行了一個單實例的 GitLab。目前有將近 20000 個用戶在使用這個服務。單台機器上有超過 10 萬個項目託管之上。

單一服務器

之前 GitLab.com 是運行在亞馬遜的 AWS 平台上,使用的是 AWS 上最高的配置實例。但是由於用戶的不斷增長,AWS 單實例已經無法滿足我們的需要,特別是 CPU 和存儲方面的限制。我們必須尋找一種替代解決方案。

10萬個倉庫需要佔用好多個 TB 的存儲,因此存儲能力至關重要。而因為我們使用的是 Git,因此存儲必須是一個單一的文件系統,而不能是類似亞馬遜提供的 S3 對象存儲服務。我們希望能夠輕鬆擴展存儲。此外大量的人提交和下載代碼對系統的 CPU 要求也非常高,因此擁有更多的 CPU 核有助於在高負載的情況下提升響應速度。
看來最具性價比的方案是使用自己的服務器了。好在 GitLab 可以很方便的運行之上。

And 因此,我們目前採購了兩台獨立服務器用來運行 GitLab.com,其中一台是活動的主服務器,另外一台備用。服務器配置如下:

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

我們實際上只用了其中的 16 核。

故障以及故障轉移

從亞馬遜上遷移出來意味著我們不能再利用 AWS 平台的一些特性,因此一旦服務器宕機我們需要一些故障轉移的措施。

我們需要使用 DRBD 來創建主從服務器架構,同一時間只有一個應用服務器是活動的,一旦出問題就會讓 DRBD 切換到另外一台服務器。

我們的 DRBD 工具可通過 subscribers 獲取。

未來的擴展性

GitLab.com 在當前的硬件平台上運行良好,但其增長越來越快。如果對現有的硬件進行擴展,其成本是很高的,而且有些部分是很難的。

將來 GitLab.com 將再次託管到亞馬遜的 AWS 平台上,這可以讓我們很容易的實現水平的擴展。此外亞馬遜剛剛宣佈了超過 10TB 的 ESB 卷,這將讓我們的移植變得容易。

Comments

comments powered by Disqus