欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

如何利用单台服务器实现10万多个Git仓库托管

程序员文章站 2022-05-07 16:28:12
...
摘要:如果你想在任何地方免费托管私有/公共仓库,你可以选择GitLab.com。目前,已有20000人在积极使用它来托管仓库,并且一台服务器就已托管10万多个仓库。

【编者按】在单台服务器上就可以托管10万多个仓库,GitLab.com是如何做到的呢?本文翻译自《The hardware that powers 100,000 git repositories》,看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 卷,这将让我们的移植变得容易。

 

来自:GitLab