给MogileFS添加多网段支持并分别设置拷贝数
MogilefS是支持多个数据中心的,简单说就是支持多个网段。比如:
- 给定两台存储节点,IP地址分别为:10.5.0.1和10.6.0.1
- 你也许会把10.5/16和10.6/16配置在两个不同的网络“区域”
- 也许意味着他们在不同的数据中心或者不同的机柜
- 如果配置没有问题,你可以指定一个文件在不同的区域中的拷贝数
MogileFS目前还没有能力在多个区域里运行数据库或者Tracker。Tracker可以在任何一个区域(网段)内运行,在ZoneLocal这个插件的帮助下,Tracker会用本地的文件响应客户端的请求,并用来复制到远端。然而,所有的Tracker必须要连接到同一个数据库获取数据。这个很好理解。
安装依赖
在Tracker服务器上,用cpan安装"MogileFS::Network"。它为Tracker提供了ZoneLocal插件,同时也提供了MultipleNetworks和HostsPerNetwork这两个复制策略。
配置
选择复制策略
MultipleNetworks
这个复制策略不需要额外的配置,定义好网络区域之后,只要把class的复制策略设置成MultipleNetworks()就可以了。复制程序会把文件的拷贝放到尽可能多的网络中去。理想状态下,会同时把mindevcount设为3或者更大。
HostsPerNetwork
这个是比MultipleNetworks更强大的一个版本。可以让你指定每个网络区域中的拷贝数目。例如,你有near和far两个区域,你想要near里面有两份拷贝,far里面有一个拷贝,就可以这样配置HostsPerNetwork(near=2,far=1)。
配置Zone
可以这样配置网络区域:
$ mogadm settings set network_zones near,far
$ mogadm settings set zone_near 10.5.0.0/16
$ mogadm settings set zone_far 10.6.0.0/16
设置ZoneLocal插件
当zone配置好了,Tracker服务器的MogileFS::Network也安装了之后,就可以在Tracker上打开ZoneLocal插件了。它能让Tracker知道自己在那个Zone里面,也能让Tracker知道远程客户端在那个Zone里面。当需要返回文件路径和复制文件的新拷贝时,Tracker会优先使用自己所在Zone中的文件。要打开ZoneLocal插件,需要在mogilefsd.conf文件中加入两行:
local_network = 10.5.0.0/16
plugins = ZoneLocal
local_network就是Trakcer所属区域的网段。如果Tracker服务器的IP是10.5.0.50,那么local_network就应该是10.5.0.0/16。第一次增加这些配置的时候,最好在前端启动Tracker或者用telnet的!watch命令监控一下Tracker是否正常。
设置class复制策略
最后剩下的就是配置class的策略了,MogileFS可以通过class来控制每个文件在不同的区域中的复制策略。
mogadm class list
domain class mindevcount replpolicy
-------------------- -------------------- ------------- ------------
toast byhost 2 MultipleHosts()
toast default 2 MultipleHosts()
toast four 4 MultipleHosts()
toast fourbynamenet 1 HostsPerNetwork(near=2,far=1)
mogadm class add toast twoontwonets --replpolicy "HostsPerNetwork(near=2,far=2)"
mogadm class modify toast twoontwonets --replpolicy "HostsPerNetwork(near=3,far=3)"
TIPS
完成了这些配置并修改了class的复制策略之后,请记住MogileFS不会自动开始复制文件。如果你修改的class中已经存放了文件,就需要启动FSCK来重新使新的配置生效。

浙公网安备 33010602011771号