Hypertable自从0.9.7.0版本之后,除了Hyperspace之外的另外两个角色(Master和RangeServer)都实现了自动的Failover,也就是说Hyperspace必须手动实现Failover。
因为Hyperspace是基于Paxos算法实现,该算法要求节点数目为奇数,所以可以准备3台机器用作Hyperspace。我测试时发现如果是2台的话,Hyperspace服务不能正常启动。
3台Hyperspace启动后,一个将作为Hyperspace.Master,另外两个作为Hyperspace.Slave,并且3台之间会同步数据和状态。万一有一台Hyperspace挂掉,可以分为以下几种情况处理:
1. 如果Hyperspace.Master挂掉,则Hyperspace.Slave也都会跟着挂掉,此时只能重启Hypertable了。如果万一Hyperspace.Master机器都不能启动,请将Capfile和hypertable.cfg中的Hyperspace改为两台Hyperspace.Slave中的任意一台,重启Hypertable即可;
2. 如果Hyperspace.Slave挂掉,除了Hyperspace日志中会报一些错误之外,集群的运行不会受到影响。此时重现启动挂掉机器的Hyperspace服务即可将其重新加入集群。
如果Hyperspace节点数目多于3个,以上两点仍然适用。不过请注意一点:4台Hyperspace节点是能正常启动的,也就是说多于3台的偶数台应该都是能正常启动的,不过不建议采用偶数台。
还要说明一点:可以追加新的Hyperspace节点,但是必须要重启集群。如果你的Hypertable只有一台Hyperspace,为了实现Failover,请赶快追加机器吧。
因为Hyperspace是基于Paxos算法实现,该算法要求节点数目为奇数,所以可以准备3台机器用作Hyperspace。我测试时发现如果是2台的话,Hyperspace服务不能正常启动。
3台Hyperspace启动后,一个将作为Hyperspace.Master,另外两个作为Hyperspace.Slave,并且3台之间会同步数据和状态。万一有一台Hyperspace挂掉,可以分为以下几种情况处理:
1. 如果Hyperspace.Master挂掉,则Hyperspace.Slave也都会跟着挂掉,此时只能重启Hypertable了。如果万一Hyperspace.Master机器都不能启动,请将Capfile和hypertable.cfg中的Hyperspace改为两台Hyperspace.Slave中的任意一台,重启Hypertable即可;
2. 如果Hyperspace.Slave挂掉,除了Hyperspace日志中会报一些错误之外,集群的运行不会受到影响。此时重现启动挂掉机器的Hyperspace服务即可将其重新加入集群。
如果Hyperspace节点数目多于3个,以上两点仍然适用。不过请注意一点:4台Hyperspace节点是能正常启动的,也就是说多于3台的偶数台应该都是能正常启动的,不过不建议采用偶数台。
还要说明一点:可以追加新的Hyperspace节点,但是必须要重启集群。如果你的Hypertable只有一台Hyperspace,为了实现Failover,请赶快追加机器吧。