Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 两个mongos实例之间的心跳_Mongodb_Failover_Heartbeat - Fatal编程技术网

Mongodb 两个mongos实例之间的心跳

Mongodb 两个mongos实例之间的心跳,mongodb,failover,heartbeat,Mongodb,Failover,Heartbeat,我正在为我的网站(包括mongodb)的整个堆栈设置自动故障切换。目前,我利用heartbeat检测主mongos的故障,然后更改客户端的主机名以指向辅助mongos,这意味着辅助mongos接管并成为主mongos。客户端总是与主服务器对话。顺便说一下,我不使用虚拟ip,因为这两个mongos位于不同的站点 但由于heartbeat只监视系统的可用性,而不是应用程序的可用性,我认为这可能不太可靠。mongos可能会随着系统的运行而消亡。我想知道是否有某种机制可以支持mongos进程之间的心跳。

我正在为我的网站(包括mongodb)的整个堆栈设置自动故障切换。目前,我利用heartbeat检测主mongos的故障,然后更改客户端的主机名以指向辅助mongos,这意味着辅助mongos接管并成为主mongos。客户端总是与主服务器对话。顺便说一下,我不使用虚拟ip,因为这两个mongos位于不同的站点


但由于heartbeat只监视系统的可用性,而不是应用程序的可用性,我认为这可能不太可靠。mongos可能会随着系统的运行而消亡。我想知道是否有某种机制可以支持mongos进程之间的心跳。

这里的大问题是为什么?如果只指定连接字符串中的所有实例,驱动程序将为您执行此操作。您不需要自己编写代码,即使不是这样,使用HALinux也相对容易。为HA IP设置DNS。当node1失败时,接管node2上的IP地址,启动至少绑定到该IP的mongos,完成。当然,您可以监视服务。但正如@NeilLunn正确指出的那样:这对MongoDB毫无意义。谢谢@Neil和Markus,你说得对,驱动程序工作正常,我也考虑过。只是在web服务器端,它直接调用php mongo驱动程序。如果我在连接字符串中放入两台主机,我相信这将引入额外的延迟,因为它需要确定哪一台可用。如果我天真,请纠正我。@dennis.s你天真。直言不讳,但切中要害。驱动程序连接到第一个可用的。因此,如果您可以编写代码,以某种方式神奇地猜测哪一个在第一次尝试时可用,而无需测试,那么完全欢迎您提交该代码,我们都会很高兴地使用它。快乐编码。