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

配置 MogileFS 的 Slave

扶凯 2012-03-12 23:32:28 浏览 1,601 次
大多的 MogileFS 实例都使用的 MySQL 作为元数据存储(当然你也可以选择其它的如: SQLite ).通常的应用来讲,使用 MySQL 是个很好的主意.基本优化和应用和大型网站是一样的.所以不用担心它的性能.因为网站请求不比这个少,都没问题.另外我们可以使用的方案也很多,比如简单的来讲,我们可以对读在 slave 上进行扩展,可以加 Memcached 等(怎么增加 Memcached 的文章可以见我其它的文章).

管理 MySQL 的复制这个是个比较复杂的课题.大部分是超出了本文档的范围.我们将谈论如何在 MogileFS 上应用.

MogileFS 的一些需求

MogileFS 是一个分布式数据存储的系统,它可以有很多的存储节点和许多 trackers. 然而,它必须有一个单一的元数据存储,这是 trackers 的对所有文件的坐标点. 我要重复一次.因为这个地方太值得多提一下:所有的 trackers 必须指向相同的数据库实例.他们使用advisory locking 来确保他们不复制过程中发生碰撞,并通过事物协调队列处理.没有这个,你可能会永久丢失数据.

二个 tracker 也只能和一个相同的  database 交互, 他们使用锁来保证同一时间操作相同数据不会出意外, 包括许多其他的事情.所以我们有多个 tracker,记得写 IP 时都写主的 IP ,使用了 slave 的配置后,会自动从 slave 来读取.并且不用担心 slave 重起和死掉,tracker 会自动切换,并会给读的压力平均分给这些机器.

MogileFS 配置 Slave

现 在讲 MogileFS 配置读取 slave 的数据来分离查询的压力. 注意,真到这个文章写出来时, 仅仅支持 file 和 file_on 这二个表的查询到 slave. 当然如果你能在外部(Nginx 和你的程序中)来 Cache 输出的 path 的话(比如 Memcached 或者其它) 会比你添加只读的 slave 和 tracker 会有更好的性能的提升.

通过 mogadm 来配置 slave:

1
2
3
4
5
6
7
8
$ mogadm slave
Help for 'slave' command:
 (enter any command prefix, leaving off options, for further help)
  
  mogadm slave add <slave_key> [opts]                Add a slave node for store usage
  mogadm slave delete <slave_key>                    Delete a slave node for store usage
  mogadm slave list                                  List current store slave nodes.
  mogadm slave modify <slave_key> [opts]             Modify a slave node for store usage

有一个 opts 可以用来指定一些相关的参数:

01
02
03
04
05
06
07
08
09
10
11
$ mogadm slave add
  
ERROR: Missing argument 'slave_key'
  
Help for 'slave-add' command:
  
  mogadm slave add <slave_key> [opts]                Add a slave node for store usage
  
      --dsn=s              DBI DSN specifying what database to connect to.
      --password=s         DBI password for connecting.
      --username=s         DBI username for connecting

真实的添加语句会象下面一样

1
mogadm slave add storage2 --dsn=DBI:mysql:MogileFS:host=slave_ip --username=mogile --password=mogilepassword

 -dsn 我想以前的配置文件中写过很多次了吧,这个需要 slave 机器的主机 IP 的数据库的名字,做主从 99% 的从数据库名和主数据库名一样.然后那台机器可以访问这个数据库的用户和密码就行了.

注意,你要小心的设置这个 DSN  ,当然目前根据我的测试,如果从数据库连接不上,会自动的切换到其它的 slave 实在不行,会切回主数据库.
整个架构如下:

多个 tracker 配置了一个主数据库,配置完后,查询的量会自动平均分到其它的这些主机上来.如果在中间在加上 Memcached 会更加好.上面的架构做你的源站一定是没有问题了,要知道我们前边还有 CDN 啦.回源怎么样也得控制在 5% 以内.另外,你还可以做 MySQL 的多主之类的技术.

建议继续学习

  1. MogileFS 的介绍(MogileFS 系列1) (阅读 4,982)
  2. 在 MogileFS 中使用 Nginx (阅读 3,883)
  3. MogileFS 的客户端和API(MogileFS 系列4) (阅读 3,443)
  4. MogileFS 的安装(MogileFS 系列2) (阅读 3,303)
  5. MogileFS Rebalance(文件的重新均衡) (阅读 3,162)
  6. MogileFS 的设置和管理(MogileFS 系列3) (阅读 2,902)
  7. MogileFS 研究 (阅读 2,621)
  8. MogileFS 文件系统检查 (阅读 2,460)
  9. MogileFS 排错小技巧 (阅读 2,222)
  10. 为 MogileFS 配置使用多个网络段/多数据中心 (阅读 2,221)