單臺(tái)機(jī)器能超過10萬個(gè)項(xiàng)目托管?好奇就來了解這個(gè)Git倉庫的硬件平臺(tái)
如果你想要托管項(xiàng)目,可以考慮 GitLab.com ,在這個(gè)網(wǎng)站上我們運(yùn)行了一個(gè)單實(shí)例的 GitLab。目前有將近 20000 個(gè)用戶在使用這個(gè)服務(wù)。單臺(tái)機(jī)器上有超過 10 萬個(gè)項(xiàng)目托管之上。
單一服務(wù)器
之前 GitLab.com 是運(yùn)行在亞馬遜的 AWS 平臺(tái)上,使用的是 AWS 上最高的配置實(shí)例。但是由于用戶的不斷增長,AWS 單實(shí)例已經(jīng)無法滿足我們的需要,特別是 CPU 和存儲(chǔ)方面的限制。我們必須尋找一種替代解決方案。
10萬個(gè)倉庫需要占用好多個(gè) TB 的存儲(chǔ),因此存儲(chǔ)能力至關(guān)重要。而因?yàn)槲覀兪褂玫氖?Git,因此存儲(chǔ)必須是一個(gè)單一的文件系統(tǒng),而不能是類似亞馬遜提供的 S3 對(duì)象存儲(chǔ)服務(wù)。我們希望能夠輕松擴(kuò)展存儲(chǔ)。此外大量的人提交和下載代碼對(duì)系統(tǒng)的 CPU 要求也非常高,因此擁有更多的 CPU 核有助于在高負(fù)載的情況下提升響應(yīng)速度。
看來最具性價(jià)比的方案是使用自己的服務(wù)器了。好在 GitLab 可以很方便的運(yùn)行之上。
And 因此,我們目前采購了兩臺(tái)獨(dú)立服務(wù)器用來運(yùn)行 GitLab.com,其中一臺(tái)是活動(dòng)的主服務(wù)器,另外一臺(tái)備用。服務(wù)器配置如下:
-
服務(wù)器型號(hào): HP DL180 G6 (2009 生產(chǎn))
-
處理器: 2x X5690 (共 24 核)
-
32GB RAM
-
12x 2TB HDDs, (其中兩個(gè)用于 root 卷,使用 RAID 1,另外 10 個(gè)磁盤使用 RAID 10 ext4 文件系統(tǒng))
我們實(shí)際上只用了其中的 16 核。
故障以及故障轉(zhuǎn)移
從亞馬遜上遷移出來意味著我們不能再利用 AWS 平臺(tái)的一些特性,因此一旦服務(wù)器宕機(jī)我們需要一些故障轉(zhuǎn)移的措施。
我們需要使用 DRBD 來創(chuàng)建主從服務(wù)器架構(gòu),同一時(shí)間只有一個(gè)應(yīng)用服務(wù)器是活動(dòng)的,一旦出問題就會(huì)讓 DRBD 切換到另外一臺(tái)服務(wù)器。
我們的 DRBD 工具可通過 subscribers 獲取。
未來的擴(kuò)展性
GitLab.com 在當(dāng)前的硬件平臺(tái)上運(yùn)行良好,但其增長越來越快。如果對(duì)現(xiàn)有的硬件進(jìn)行擴(kuò)展,其成本是很高的,而且有些部分是很難的。
將來 GitLab.com 將再次托管到亞馬遜的 AWS 平臺(tái)上,這可以讓我們很容易的實(shí)現(xiàn)水平的擴(kuò)展。此外亞馬遜剛剛宣布了超過 10TB 的 ESB 卷,這將讓我們的移植變得容易。
英文原文:The hardware that powers 100,000 git repositories
譯文出自:http://www.oschina.net/translate/the-hardware-that-powers-100k-git-repos