基于moosefs的系统架构,开源界已经有了很多成熟的案例。我们的mfs系统已经运行了一段时间,在这里给出架构图以及相关测试数据。对于moosefs不要奢求其读写速度有多快,更应该看中其设计原理带给我们安全上的便利。有很多同学喜欢提及mfs的master不具备热备功能,我想说的是,任何一个应用软件其设计自身都有一定的狭义性,就如同squid与varnish,apache与nginx一样,我们要做的是如何扩展以及如何组合它们,用以达到我们系统运维的目的。 一.概述硬件环境:2台hp 380g6(48G内存,460G sas15K硬盘6块),11台dell r710(8G内存,sata 7.2K 1T磁盘共40t),5台dellr610(6g内存,sas15k硬盘共15块)软件环境:centos 5.4 64bit,varnish2.0.6,nginx0.8.34,moosefs 1.6.0总体架构图:简要说明:lvs将请求转发到varnish群集上面,由varnish轮询位于moosefs client上面的nginx群集,如果出现404,500等出错页面则下面的nginx自动启用,其实就是备份机的功能。client通过fuse与master通信以获取位于chunk server上面的数据。二.安装1.安装varnish下载2.0.6版本groupadd www -g 48 && useradd -u 48 -g www www mkdir /varnishcache chmod +w /varnishcache/ chown -R www:www /varnishcache/ mkdir /var/varnishlog chmod +w /var/varnishlog/ chown -R www:www /var/varnishlog/ tar zxvf varnish-2.0.6.tar.gz cd varnish-2.0.6 ./configure --prefix=/usr/local/varnish make;make install修改配置文件,这里给出我的样版(多谢kevin兄指点):2.在client上面安装nginxuseradd www mkdir /var/nginxlog chmod +w /var/nginxlog chown -R www:www /var/nginxlogwget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.01.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.34.tar.gztar zxvf pcre-8.01.tar.gz cd pcre-8.01/ ./configure make && make install cd ../tar zxvf nginx-0.8.34.tar.gz cd nginx-0.8.34/ ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module make;make install cd ../cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak echo > /usr/local/nginx/conf/nginx.conf 修改配置文件,可以暂时不把虚拟主机的root指向到mfs的挂载点几点说明:涂黑部分是我们自己写的module,在没有决定开源之前,请大家见谅。关于nginx配置文件的解释,这里就不多说了3.安装moosefsmoosefs安装过程大同小异,注意fuse不要安装目前的最新版,因为我遇到无法加载fuse模块的错误,不建议yum安装fuse模块。这里引用两篇篇安装mfs的教程,地址为:http://bbs1.chinaunix.net/viewthread.php?tid=1644309http://sery.blog.51cto.com/10037/263515/ 田逸大家可以去详细了解情况安装:3.1 安装mfs master wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz tar zxvf mfs-1.6.11.tar.gz cd mfs-1.6.11 useradd mfs -s /sbin/nologin ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs make make install cd /usr/local/mfs/etc/ cp mfsmaster.cfg.dist mfsmaster.cfg cp mfsexports.cfg.dist mfsexports.cfg vim mfsmaster.cfg vim mfsexports.cfg cd .. cd var/ mfs/ cp metadata.mfs.empty metadata.mfs cat metadata.mfs /usr/local/mfs/sbin/mfsmaster start ps axu | grep mfsmaster lsof -i tail -f /var/log/messages
3.2 启动master服务 /usr/local/mfs/sbin/mfsmaster start working directory: /usr/local/mfs/var/mfs lockfile created and locked initializing mfsmaster modules ... loading sessions ... ok sessions file has been loaded exports file has been loaded loading metadata ... create new empty filesystemmetadata file has been loaded no charts data file - initializing empty charts master <-> metaloggers module: listen on *:9419 master <-> chunkservers module: listen on *:9420 main master server module: listen on *:9421 mfsmaster daemon initialized properly