我需要build立一个解决scheme来托pipe内部的git仓库。 它需要支持数十万(或更多)的存储库。
我计划使用多个“哑”服务器与共享存储,所以基本上当客户端试图访问存储库 – 它将被负载平衡器redirect到任何可用的服务器。 任何对存储库的更改 – 都将在所有节点上进行复制。
我的第一个想法是使用GlusterFS,但我读过它不能很好地处理小文件。 我也在考虑使用DRBD来复制所有的东西,但是与GlusterFS相比,这需要更多的设置,而且看起来更加复杂。
哪一个提供更好的performance? 基本上我试图解决的问题是,当任何服务器发生故障时 – 我希望其他人仍然能够提供数据。
这是一个经典的横向扩展用例,IMO GlusterFS应该符合这个法案。 你可以尝试一下 – 把几个虚拟机启动起来,设置一些用于存储库的砖块,并进行压力testing。
DRBD在这里不是一个选项 – 它不能缩放。 如果有的话,我会看看其他的对象存储项目(例如Swift),如果Gluster工作不够好,但是没有一个是以性能为导向的
我有一个类似的设置cyrus邮件服务器,其中gluster已经certificate不能在压力testing中处理负载。 我们最初selectgluster,因为它很简单,但不得不退回到drbd。 但是如dyasny突出显示,drbd activs / active cfg是不可取的(更不用说痛苦了)。 如果您需要所有服务器同时安装共享存储,则不能selectdrbd。 你可能想要看的另一件事是锁pipe理器。 lvm2现在支持raidtypeslv,并使用man代码来达到这个目的。 这与相应的文件系统混合(如果需要,可以使用一些集群感知的文件系统)。 但是我从来没有在生产中自己testing过,只是作为PoC。
Gluster的问题主要是节点之间的延迟。 我build议你试一下,看看它是否能处理你的工作量。 如果你的服务器足够强大,而且互连速度很快,那么你应该可以获得相当不错的性能。 另外,您也可以尝试内置的NFS服务器,根据我的经验,它可以更快地处理小文件。
但是,如果你需要尽可能快的解决schemeGlusterFS可能不适合你。 其他选项将是商业产品,如Git集群 (虽然没有testing过),或者你可以用gitmirror等免费工具构build你自己的解决scheme。
如果你正在考虑Gluster(根据我的经验,它可以用于许多小文件,但是YMMV),你也可以看看Ceph以及http://ceph.com/
我也build议Glustet广告最简单,最快的设置,configuration。 它也扩展得非常好。 问题在于速度,而我需要在易于configuration和易于扩展之间进行select,以及在一些技术难度(一些花哨的drbd / ocfs2 / Glances块存储)与速度的增加之间进行select。 但是..你获得多less速度? 你需要做一些压力testing,并select..