故障转移

如果运行应用的节点挂了,应用会在指定的超时之后被重启,于由 distributed 配置参数指定的第一个启动且运行的节点。这个过程称之为故障转移(Failover)。

应用会以正常的方式在新节点上启动,也就是,通过应用主程序调用:

  1. Module:start(normal, StartArgs)

注意特例:如果应用定义了 startphases 键(参见 [被包含的应用_]($56a5979ee1870e07.md#included-applications) ),那么应用要另外使用以下调用:

  1. Module:start({failover, Node}, StartArgs)

其中 Node 是被终止的节点。

例子:如果 cp1 挂了,然后系统检查其他节点—— cp2cp3 ——哪个运行的应用数最少,但还要等待5秒钟让 cp1 重启。如果 cp1 没有重启,同时 cp2 运行的应用比 cp3 少,那么 myapp 则会在 cp2 上重启。_images/dist2.gif假设现在 cp2 也挂了并在5秒内没有重启。那么现在 myapp 会在 cp3 上重启。_images/dist3.gif