冗余git服务器

时间:2017-10-27 11:16:47

标签: git

是否有可能并且拥有第二个git服务器是个好主意。我想要这样的东西:

  1. 用户在他的主机上进行git push / git pull /任何动作需要远程
  2. 服务器,如果主服务器正在工作,如果
  3. ,每件事都按标准方式进行
  4. 主服务器是关闭git switch做第二个服务器
  5. 什么是重要的第二台服务器与主服务器同步。

3 个答案:

答案 0 :(得分:2)

git中没有自动故障转移功能。当您pushfetchpull时,git会尝试使用一个网址来尝试。这通常取决于您的遥控器的配置,但仍然......

因此,对于您描述的实际故障转移,您需要git之外的东西。这可以是客户端脚本,也可以内置到您的托管解决方案中。您没有提到您的repo是如何托管的,但是例如,如果它位于Web服务器上,那么您可以使用负载均衡器在可用节点之间路由请求,并在发生故障时进行故障转移。您是否可以配置此节点,以便始终使用一个节点,除非它失败是服务器特定的配置问题。

但是如果你这样做,并且即使是暂时的(他们将在任何重要的开发环境中),repos也会失去同步,那么你就有可能遇到重大的可用性问题。我将提交A推送到主要远程,但就在我完成之前(在它与辅助设备同步之前),它会脱机。现在辅助接管,但没有那个改变,即使我本地的远程跟踪分支 - 现在隐式映射到它 - 说它确实。这只是一个可能出错的简单案例。

所以......有可能吗?大概。这是个好主意吗?不,我可以想到没有应用程序,源代码控制回购的HA实践值得头痛,这可能会导致。

答案 1 :(得分:2)

Git本质上是分散的。这是其设计的核心原则,如described by Linus Torvalds(git的创建者):

  

我认为很多其他人都因为所有让我讨厌SCM的问题而感到沮丧,虽然有很多项目试图解决一两个小角落案件,这些案件驱使人们疯狂,但实际上并没有像git这样的东西真的最终会解决大问题。 即使人们没有意识到“分布式”部分的重要性(并且很多人都在努力),一旦他们发现它允许那些简单可靠的备份,并且允许人们制作他们自己的私人测试存储库而不必担心对某些中央存储库具有写访问权的政治,他们永远不会回去。

     

(强调我的)

您还可以{2007年在Google上watch a talk Linus gave on Git,特别是关于git分布式特性的重要性。

基本上,您的本地仓库 是您服务器的备份。如果您的服务器出现故障,您可以根据本地仓库启动新服务器。

至于拥有多台服务器......当然,这是可能的,它可能会让你感觉更好。您可以将第二台服务器设置为具有"来源"指向主服务器,主服务器带有" origin"指向第二台服务器,并在每台服务器上定期运行git fetch。合并的后勤工作并不是非常复杂......每个服务器都像其他开发人员一样。如果他们发生分歧或发生冲突,你可能会对真相来源产生一些混淆,但只要你勤奋,就可以解决这些问题。但是你不会在每台开发者的机器上都拥有任何你已经拥有的东西,并且你可能最好只是定期备份服务器。使用这种方法没有问题 ......它只是有点不必要和冗余。

答案 2 :(得分:1)

您可以使用“ pushurl”添加多个网址。

git remote set-url --add --push origin git://original/repository.git
git remote set-url --add --push origin git://another/failover_repository.git

因此,当您推送到原始资源时,它将同时推送到两个存储库,这样始终可以同步不同的存储库。