Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅使用两个服务器实例的MongoDB复制和故障切换_Mongodb - Fatal编程技术网

仅使用两个服务器实例的MongoDB复制和故障切换

仅使用两个服务器实例的MongoDB复制和故障切换,mongodb,Mongodb,所以我正在为一个我打算自己构建的系统设计一个架构。该系统的一个特点应该是,它包含冗余,以便服务器B可以在服务器A出现故障时接管 问题是,我知道MongoDB支持带故障切换的复制—但是,当您只有2个MongoDB实例时就不支持了(因为单个MongoDB实例不能将自己指定为主实例) 因此,在我看来,我有两个选择: 有一个小型服务,它侦听服务器a上的MongoDB变更流,并在每次变更事件时与服务器B同步 使用复制并接受不支持故障切换(编写故障切换脚本以根据我自己的规则手动指定主故障切换) 我在Mong

所以我正在为一个我打算自己构建的系统设计一个架构。该系统的一个特点应该是,它包含冗余,以便服务器B可以在服务器A出现故障时接管

问题是,我知道MongoDB支持带故障切换的复制—但是,当您只有2个MongoDB实例时就不支持了(因为单个MongoDB实例不能将自己指定为主实例)

因此,在我看来,我有两个选择:

  • 有一个小型服务,它侦听服务器a上的MongoDB变更流,并在每次变更事件时与服务器B同步
  • 使用复制并接受不支持故障切换(编写故障切换脚本以根据我自己的规则手动指定主故障切换)
  • 我在MongoDB方面没有太多实际经验,因此,如果:

    • 我的两个解决方案是可行的
    • 我可能会遇到什么警告

    运行3台服务器..使用@WernfriedDomscheit是的,这是个好主意。但这仍然需要我设置3台服务器,对吗?如果我在其中一台服务器上运行两个虚拟机,那么大脑分裂的问题仍然存在。在这种情况下,运行3台服务器是相当大的开销。您可以在现有服务器之一上添加服务。当然,您只覆盖了50%的故障转移。但这也是一个非常糟糕的解决方案,因为如果服务器B出现故障,那么主数据库也将停止运行。。正确的?无论如何,在RPI上运行仲裁程序是个好主意吗?这是一个稍微便宜一点的解决方案。