如何利用單臺伺服器實現10萬多個Git倉庫託管
在單臺伺服器上就可以託管 10 萬多個倉庫,GitLab.com 是如何做到的呢?來看 GitLab.com 是如何自建服務和擴充套件儲存來滿足這麼多倉庫的託管。
以下為譯文:
你想在任何地方免費託管公共/私有倉庫嗎?可以選擇 GitLab.com,我們已經在上面託管過一個單例 GitLab,已有將近 20000 人積極地使用 GitLab 來託管倉庫,並且一臺伺服器就已託管 10 萬多個倉庫。
單一伺服器
之前,GitLab.com 託管在亞馬遜上,使用的是 AWS 上最高的配置例項。但隨著使用者數的增長,以及我們只能進行垂直擴充套件和 CPU 繫結,所以,我們必須尋找 AWS 替代品。
100K 倉庫需要佔用好幾個 TB 空間,所以,儲存能力變得相當重要。因為我們使用的是 git,所以,我們只能選擇單一的檔案系統,而不是物件儲存(比如 S3)。我們希望能夠輕鬆地擴充套件儲存,此外,成千上萬個使用者在 push 和 pull 他們的程式碼,這樣就會給 CPU 帶來一定的負擔。因此,我們需要更多的 CPU 核來減輕高負載帶來的壓力。
事實證明,我們使用自己的伺服器是迄今為止最具價效比的選擇了。
目前,我們有兩臺獨立伺服器用來執行 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 卷,這將讓我們的移植變得容易。
相關文章
- 6 個託管 git 倉庫的地方Git
- Git學習——遷移單一倉庫至其他程式碼託管平臺Git
- 個性化定義多個 Git 託管平臺配置Git
- 如何使用git新建多個SSH金鑰進行專案託管Git
- Git 託管平臺新增專案Git
- git提交程式碼託管平臺流程Git
- Git 託管平臺免密連線Git
- 微信雲託管如何實現一套程式碼對應多個環境
- git連線多個遠端倉庫Git
- 使用git將自己的程式碼同時儲存在多個程式碼託管平臺Git
- 伺服器託管伺服器
- 使用 Git 多賬號一次推送多個倉庫Git
- 11、Git之自建專案託管平臺(GitLab)Gitlab
- 一個專案push到多個遠端Git倉庫Git
- git一個專案設定多個遠端倉庫Git
- 程式設計師必須知道的幾個Git程式碼託管平臺程式設計師Git
- 配置多個 Git 賬號來管理遠端倉庫Git
- Angular 如何為多個專案使用單一儲存倉庫Angular
- Git使用教程3:MyEclipse+Egit+GitHub實現程式碼託管 【上】EclipseGithub
- Git使用教程3:MyEclipse+Egit+GitHub實現程式碼託管 【下】EclipseGithub
- 如何在伺服器上搭建Git版本倉庫(乾貨)伺服器Git
- Git 倉庫遷移至其他伺服器並實現 hooks 自動化部署Git伺服器Hook
- Git 伺服器 利用 hook 實現自動部署Git伺服器Hook
- 分散式資料中心節點多?看託管雲如何實現精細運維分散式運維
- 愛彼迎如何實現聯合房東的共同託管?
- 10、Git之國內專案託管平臺(Gitee碼雲)Gitee
- 伺服器託管是什麼意思,為什麼要託管?伺服器
- Git 倉庫Git
- 幽默:如何在靜態檔案託管伺服器上使用資料庫?伺服器資料庫
- 伺服器託管和租用哪個更划算呢?伺服器
- Git程式碼託管常用命令Git
- iOS:利用訊息轉發機制實現多播委託iOS
- 利用 Docker 快速搭建 git 倉庫 Gitlab 與程式碼審閱 Gerrit 平臺DockerGitlab
- 一臺PC上git clone兩個不同郵箱的倉庫Git
- 如何修改 Git 遠端倉庫 URLGit
- 如何 DIY 自己的 Git 託管專案?別怕,我有 Pagure!Git
- 伺服器託管大寬頻伺服器
- Google Git-Repo 多倉庫專案管理GoGit專案管理