能支持 10 万个 Git 仓库的硬件平台
如果你想要托管项目,可以考虑 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 卷,这将让我们的移植变得容易。