Mongodb 两个mongos实例之间的心跳
我正在为我的网站(包括mongodb)的整个堆栈设置自动故障切换。目前,我利用heartbeat检测主mongos的故障,然后更改客户端的主机名以指向辅助mongos,这意味着辅助mongos接管并成为主mongos。客户端总是与主服务器对话。顺便说一下,我不使用虚拟ip,因为这两个mongos位于不同的站点Mongodb 两个mongos实例之间的心跳,mongodb,failover,heartbeat,Mongodb,Failover,Heartbeat,我正在为我的网站(包括mongodb)的整个堆栈设置自动故障切换。目前,我利用heartbeat检测主mongos的故障,然后更改客户端的主机名以指向辅助mongos,这意味着辅助mongos接管并成为主mongos。客户端总是与主服务器对话。顺便说一下,我不使用虚拟ip,因为这两个mongos位于不同的站点 但由于heartbeat只监视系统的可用性,而不是应用程序的可用性,我认为这可能不太可靠。mongos可能会随着系统的运行而消亡。我想知道是否有某种机制可以支持mongos进程之间的心跳。
但由于heartbeat只监视系统的可用性,而不是应用程序的可用性,我认为这可能不太可靠。mongos可能会随着系统的运行而消亡。我想知道是否有某种机制可以支持mongos进程之间的心跳。这里的大问题是为什么?如果只指定连接字符串中的所有实例,驱动程序将为您执行此操作。您不需要自己编写代码,即使不是这样,使用HALinux也相对容易。为HA IP设置DNS。当node1失败时,接管node2上的IP地址,启动至少绑定到该IP的mongos,完成。当然,您可以监视服务。但正如@NeilLunn正确指出的那样:这对MongoDB毫无意义。谢谢@Neil和Markus,你说得对,驱动程序工作正常,我也考虑过。只是在web服务器端,它直接调用php mongo驱动程序。如果我在连接字符串中放入两台主机,我相信这将引入额外的延迟,因为它需要确定哪一台可用。如果我天真,请纠正我。@dennis.s你天真。直言不讳,但切中要害。驱动程序连接到第一个可用的。因此,如果您可以编写代码,以某种方式神奇地猜测哪一个在第一次尝试时可用,而无需测试,那么完全欢迎您提交该代码,我们都会很高兴地使用它。快乐编码。