2012-02-03 83 views
3

假设我有一台路由器,它被配置为在多个远程节点上创建角色。也许我有这样的配置:检测来自akka路由器的远程节点的故障

akka { 
     actor { 
      deployment { 
       /fooRouter { 
       router = round-robin 
       resizer { 
        lower-bound = 2 
        upper-bound = 10 
       } 
       target { 
        nodes = ["akka://[email protected]:2555", "akka://[email protected]:2555"] 
       } 
      } 
     } 
    } 

如果我们假装这些节点,10.0.1.1之一,因为某些原因,已失去连接到数据库服务器,这样传递给它的所有消息都会导致失败。有没有什么办法可以让路由器知道10.0.1.1节点是无效的并停止使用它?

+1

当数据库出现故障时,您是否试图阻止其他节点上的子节点? – 2012-02-04 10:33:23

回答

2

不,目前没有。您可以让故障节点上的演员自杀,但只要调整器启动新的节点,它们就会重新出现。即使有群集支持 - 这还未到 - 这不会是自动的,因为连接到某个外部资源不是群集可达性度量的一部分。这意味着你将不得不编写代码明确地关闭该节点,然后可以将演员迁移到其他节点(细节还没有完全充实)。

所以,你现在必须编写你自己的路由器作为真正的演员,考虑到可达性。