IT技术博客大学习 共学习 共进步

为 MogileFS 配置使用多个网络段/多数据中心

扶凯 2011-12-14 13:29:53 浏览 2,223 次

名称

为 MogileFS 配置使用多个网络段(Multiple Networks)


MogileFS 和多网络/数据中心

要让 MogileFS 知道多个数据中心在多个可用的网络内,这意味着:

1
2
3
4
有二个存储节点 IP 是  10.5.0.1 和 10.6.0.1.
你可能还要配置 mogile 知道 10.5/16 和 10.6/16 是不同的网络 "zones".
然后可能是位于不同的数据中心,不同机柜,地板和机架,等。
通过适当的配置,根据不同的情况可能需要复制很多文件的副本到每个 zone.。

MogileFS 目前没有任何原生的功能来支持它运行在多个地的数据中心和使用多个 tracker. Tracker 可能运行在不同的网络,通过 ZoneLocal 插件,可以让你使用本地副本来服务的客户.并使用本地副本来复制。 当然,全部的 tracker 必须从同一个数据库来取数据。


安装所需要的条件

注意: 这个指南使用的版本必须在大于等于 2.35,这个使用的模块也有可能在 CPAN 上并没有. 在你的 tracker 的服务器上,使用 CPAN 来安装 'MogileFS::Network' 这个模块,它提供二个复制的策略(replication policies ) MultipleNetworks 和 HostsPerNetwork。以及为 trackers 来提供 ZoneLocal 的插件.


配置

决定复制的策略

MultipleNetworks

这个复制策略不要求明确的配置。定义网络的 zone 中简单的设置 class 的策略为 "MultipleNetworks()" 就好。复制的操作会尝试,确保副本存在于尽可能多的网络中。理想情况下,你使用 3 或更高的 mindevcount 份数。

HostsPerNetwork

这是一个加强版的 MultipleNetworks, 它可以让你指定在各自 zone 中各有多少份文件的副本。象这个例子。如果你有二个 zone 分别是 "near" 和 "far"。 你想有二份副本的文件在 "near", 有一份在 "far".你需要配置成这样"HostsPerNetwork(near=2,far=1)".

配置 zone
1
2
3
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 和安装了 MogileFS::Network 在你的所有的 tracker 上,你必须在你的 tacker 上启用 ZoneLocal 插件。 这会告诉 tracker 找出存在哪些 zone,以及试图发现 zone 存在的远程客户端,然后,它将尝试返回路径的数据是使用可用的 “本地” 网络的路径,或复制新副本中使用这个文件路径.

要启动这个,只要简单的加入二行到你的 mogilefsd.conf 文件中:

local_network = 10.5.0.0/16 plugins = ZoneLocal

local_network 应当是这个 tracker 上过来的客户端和节点的所在的网络。简单来讲,它只是 tracker 工作的网段。如果 ip 地址是 10.5.0.50,那么它所在的 local_network 就是 10.5.0.0/16.

对于你的第一次设置,你应该考虑在前台运行一个 tracker(不要启用守护进程),仔细观查以确保它是否工作正常。

配置 class 的复制策略

最后一部分是配置 class 策略。 MogileFS 允许你决定在多个网络上的对于每个文件(基于 mogilefs 中的 class)的份数。

1
2
3
4
5
6
7
8
9
10
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)"

设置的例子

有一个网段: 10.10.0.0/16 (10.10.*.* addresses)

全部所有的机器配置的 netmask 是 10.10.0.0/16

当分配地址给机器时,是从 10.10.5.0/24 开始:

web1: 10.10.5.1 (netmask 255.255.0.0 or /16) web2: 10.10.5.2 tracker1: 10.10.5.3 tracker2: 10.10.5.4 storage node 1: 10.10.5.5 storage node 2: 10.10.5.6

你还有一个备份的节点

storage node 3: 10.10.8.1 (netmask 255.255.0.0 or /16)

所以,你的主服务器都适合的范围是 10.10.5.0/24,你的备份服务器在 10.10.8.0/24

在这 MogileFS 的 zone 中,你需要配置

near=10.10.5.0/24 far=10.10.8.0/24

g现在,当 "web1" 通过 API 来查询 "tracker1", tracker1 会知道 web1 是在 'near' 的 zone 中网段为 10.10.5.0/24。因为 "web1" 的 IP 为 10.10.5.1。

"tracker1" 现在会检查 "near" 中的 storage nodes ,会发现 "node1" 和 "node2" 的地址是 10.10.5.5 和 10.10.5.6 也是在 10.10.5.0/24 的范围内.

因为 "node3" 的 ip 是 10.10.8.1, 他所在的 zone 是 10.10.8.0/24 段中的 "far"。所以不考虑使用这个。

如果你设置策略:

class toast: HostsPerNetwork(near=2,far=1)

"tracker1" 和 "tracker2" 会让你 put 二份 class 为 ”toast“ 的文件副本到 "near" 的 zone 中和一份到 ”far“ 的 zone 中。调度的方法是,一份到 "node1" 一份到 "node2"和一份到 "node3"。


结束语

当你设置完这个,配置完,和修改了一些 class 时,请记住,它并不自动重新复制任何文件。如果你对现有文件修改了复制策略,你需要在 mogilefs 上运行 FSCK 来指出应用新的策略,更多详细信息你可以看看 FSCK 指南。

建议继续学习

  1. MogileFS 的介绍(MogileFS 系列1) (阅读 4,984)
  2. 在 MogileFS 中使用 Nginx (阅读 3,884)
  3. MogileFS 的客户端和API(MogileFS 系列4) (阅读 3,444)
  4. MogileFS 的安装(MogileFS 系列2) (阅读 3,305)
  5. MogileFS Rebalance(文件的重新均衡) (阅读 3,164)
  6. MogileFS 的设置和管理(MogileFS 系列3) (阅读 2,903)
  7. MogileFS 研究 (阅读 2,623)
  8. MogileFS 文件系统检查 (阅读 2,463)
  9. MogileFS 排错小技巧 (阅读 2,224)
  10. MogileFS 对大文件的支持 (阅读 2,084)