如何利用单台服务器实现10万多个Git仓库托管
【编者按】在单台服务器上就可以托管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核来减轻高负载带来的压力。
事实证明,我们使用自己的服务器是迄今为止最具性价比的选择了。
目前,我们有两*立服务器用来运行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