Hypertable的Failover(故障迁移)

来源:互联网 发布:python 获取文件大小 编辑:程序博客网 时间:2024/05/21 09:00

Master的Failover

多master配置:
1.在需要启动master进程的机器上都安装gcc gcc-c++ make cmake 、zlib zlib-devel openssl openssl-devel 、yaml 、ruby 、gems 、rrdtool
2.配置capfile,增加master机器
   role :master, "cent1", "cent2", "cent3"
 
测试:启动集群以后,在配置master的机器上运行:ps -ef | grep "hyper" | grep "Mast"
都可以看到master进程如下:
root      2721  2719  0 11:40 ?        00:00:01 /opt/hypertable/current/bin/Hypertable.Master 
 
启动客户端,杀掉一个master进程后,可以从客户端看到master切换:
1351741463 INFO hypertable : (/root/src/hypertable/src/cc/Hypertable/Lib/MasterClient.cc:972) Connecting to new Master (old=192.168.56.101:38050, new=192.168.56.103:38050)
1351741603 INFO hypertable : (/root/src/hypertable/src/cc/Hypertable/Lib/MasterClient.cc:972) Connecting to new Master (old=192.168.56.103:38050, new=192.168.56.102:38050)
 
当切换后可以通过切换后的ip,连接Hypertable Monitoring 页面, Monitoring 页面只能在主Master机器进行查看,如果在其它机器上查看,将看不到用户表和集群变化情况。当一台机器获得主Master身份后,其余机器的Master日志中可能会看到:

Couldn't obtain lock on '/hypertable/master' due to conflict, entering retry loop ...


RangeServer的Failover

手动Failover

如果RangeServer服务挂掉,只要重启该服务即可。

如果RangeServer机器挂掉,重启机器后再重启服务(dfsbroker、rangeserver、thriftbroker)即可。

如果机器不能启动,则需要一台集群中空闲的机器,将其proxy name改为挂掉机器的proxy name,然后启动服务(dfsbroker、rangeserver、thriftbroker)即可。此种情况下,空闲机器无需将IP改为挂掉机器的IP。

自动Failover

Hypertable自从0.9.7.0推出了RangeServer的自动failover,直到目前版本0.9.7.7,该功能虽然可用,但不是非常可靠,起码我经过多轮测试这么认为。。。要实现自动failover很是简单,只需配置项Hypertable.Failover.Quorum.Percentage设置为合理的值即可,默认为90,即只要90%的RangeServer机器活着,就可进行自动Failover。

Commit Log文件的大小会影响自动failover的速度,甚至成败。虽说Hypertable.RangeServer.CommitLog.PruneThreshold.Max配置项可以限制Commit Log的上限,但是实践发现,当写入负载持续高时,该限制会失效。所以建议集群不要进行持续的高写入负载。

目前版本0.9.7.7的自动Failover速度已经不错了,在6个RangeServer的集群里,2T数据时,10-15分钟即可完成一台RangeServer的自动Failover。但是目前发现当第三次测试时,会频繁出现“request timeout”的问题,并且都提示连接不到最后一台RangeServer,即第二次测试之后带回集群的那台机器。

官方说Failover时对读写没有影响,但是测试发现还是有的。手动时写入根本无法进行,直到Failover成功后才可以继续写入。自动时虽然可以写入,但是写入速度严重下降。读取倒是可以,但是如果读到的数据属于挂掉那台RangeServer上的range的话,则会提示“request  timeout”。


Hyperspace的Failover

官方建议Hyperspace选用一台高性能的服务器即可,即一般不需要考虑Failover。如果非要的话,请准备三台机器都作为Hypersapce,如果一台挂掉,则停止集群后再重启即可。官方目前不支持Hyperspace的自动Failover。

原创粉丝点击