Centos7搭建Mogilefs以及和nginx进行整合以及批量上传文件脚本

本文详细介绍了MogileFS分布式存储系统的搭建过程,包括Perl的CPANM安装、MySQL配置、依赖安装、MogileFS服务配置及初始化数据库,同时提供了Nginx作为MogileFS代理的配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建过程参考了 http://www.bubuko.com/infodetail-2225032.html
具体每步搭建过程如下

安装(搭建至少需要两台机器,mysql可安装任意一台机器上)
		perl的cpanm安装 (无bug)(将mogilefsd和mogstored安装在一起)
			mysql(需要一台机器安装了mysql执行以下步骤)
				create user "ww"@"192.168.131.%" identified by "Swy123456@";
				grant all on *.* to"ww"@"192.168.131.%";
				create database mogilefs;
				create user "moguser"@"192.168.131.%" identified by "mogpass";
				grant all on mogilefs.* to"moguser"@"192.168.131.%";
				flush privileges;
	以下安装步骤若没有特殊说明则两台机器都要执行
			yum  -y install perl-DBD-mysql perl-App-cpanminus			安装依赖
			cpanm App::cpanminus
			cpanm IO::AIO
			cpanm IO::WrapTie
			cpanm Danga::Socket
			cpanm MogileFS::Server
			cpanm MogileFS::Client
			cpanm MogileFS::Utils
			重复以上操作,避免下载不全
			mogdbsetup --dbhost=192.168.131.156 --dbname="mogilefs" --dbrootuser="ww" --dbrootpass="Swy123456@" --dbuser="moguser" --dbpass="mogpass"	(初始化数据库会刷新数据库不是第一次的话慎用,只需一个节点做)
			wget https://cpan.metacpan.org/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz
			tar -xf Sys-Syscall-0.23.tar.gz 						不降级的话,会在运行时的log里面出现crash信息,并且无法完成devcount的冗余
			rm -rf /usr/local/share/perl5/Sys/Syscall.pm 
			cp -rf Sys-Syscall-0.23/lib/Sys/Syscall.pm /usr/local/share/perl5/Sys/		
			grep -E "VERSION\s" /usr/local/share/perl5/Sys/Syscall.pm
			mkdir /etc/mogilefs
			groupadd -r mogilefs
			useradd -r -g mogilefs -d /home/mogilefs -s /bin/bash -m mogilefs
			vim /etc/mogilefs/mogilefsd.conf				
				daemonize = 1				
				pidfile = /home/mogilefs/mogilefsd.pid 
				db_dsn = DBI:mysql:mogilefs:host=192.168.131.156	数据库名字和ip
				db_user = moguser					授权的用户和密码
				db_pass = mogpass
				listen = 0.0.0.0:7001
				query_jobs = 5					查询线程数
				delete_jobs = 1
				replicate_jobs = 5
				reaper_jobs = 1
			vim /etc/mogilefs/mogstored.conf
				maxconns = 10000
				httplisten = 0.0.0.0:7500
				mgmtlisten = 0.0.0.0:7501
				docroot = /data/mogilefs/
			mkdir -pv /data/mogilefs/dev1				下一个mogstored节点为dev2
			chown -R mogilefs.mogilefs /data/mogilefs/
			mogdbsetup --dbhost=192.168.131.156 --dbname="mogilefs" --dbrootuser="ww" --dbrootpass="Swy123456@" --dbuser="moguser" --dbpass="mogpass"
			vim /etc/rc.d/init.d/mogilefsd		(注意pid和定义为中文的单引号,下面的stop也是中文单引号,和mogstored里面不同,改了启动不了程序)    
#!/bin/bash
#
# mogilefsd    Startup script for the MogileFS tracker
#chkconfig: 2345 80 90
#description:auto_run
# processname: mogilefsd
# config: /etc/mogilefs/mogilefsd.conf 
# pidfile: /home/mogilefs/mogilefsd.pid
# Source function library
. /etc/rc.d/init.d/functions
lockfile=${LOCKFILE-/var/lock/subsys/mogilefsd}
RETVAL=0
pidfile=‘/home/mogilefs/mogilefsd.pid‘ 
start() {
        ulimit -n 65535
        echo -n $"Starting mogilefsd"
        su - mogilefs -c "/usr/local/bin/mogilefsd -c         /etc/mogilefs/mogilefsd.conf --daemon" &> /dev/null
        RETVAL=$?
        [ $RETVAL = 0 ] && success && touch ${lockfile} &&         pidof /usr/local/bin/mogilefsd > $pidfile         || failure
        echo
        return $RETVAL
}
stop() {
        echo -n $"Stopping mogilefsd" 
        netstat -nlp|grep "mogilefsd"|grep -v grep|awk ‘{print $7}‘        |awk -F"/" ‘{print $1}‘|xargs kill -9
        RETVAL=$?
        [ $RETVAL = 0 ] && success && rm -f ${lockfile} || failure
        echo
}
reload() {
        echo -n $"Reloading mogilefsd: " 
        killall mogilefsd -HUP
        RETVAL=$?
        [ $RETVAL = 0 ] && success || failure
        echo
}
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
                status mogilefsd
                RETVAL=$?
                ;;
        restart)
                stop
                sleep 1
                start
                ;;
        reload)
                reload
                ;;
        *)
                echo $"Usage: mogilefsd {start|stop|restart|reload|status}" 
                exit 1
esac
exit $RETVAL
			vim /etc/rc.d/init.d/mogstored	(注意pid和configfile的定义为双引号)
#!/bin/bash 
#
#chkconfig: 2345 80 90
#description:auto_run
# processname: mogstored
# config: /etc/mogilefs/mogstored.conf 
# pidfile: /home/mogilefs/mogstored.pid
# Source function library
. /etc/rc.d/init.d/functions
lockfile=${LOCKFILE-/var/lock/subsys/mogstored}
RETVAL=0
configfile="/etc/mogilefs/mogstored.conf"
pidfile="/home/mogilefs/mogstored.pid"
prog=$(which mogstored)
start() {
        ulimit -n 65535
        echo -n $"Starting mogstored"
        su - mogilefs -c "$prog -c $configfile --daemon"  &> /dev/null
        RETVAL=$?
        [ $RETVAL = 0 ] && success && touch ${lockfile} && echo $(pidof mogstored) > $pidfile || failure
        echo
        return $RETVAL
}
stop() {
        echo -n $"Stopping mogstored" 
        netstat -nlp|grep "mogstored"|grep -v grep|awk '{print $7}'        |awk -F"/" '{print $1}'|xargs kill -9
        RETVAL=$?
        [ $RETVAL = 0 ] && success && rm -f ${lockfile} ${pidfile} || failure
        echo
}
reload() {
        echo -n $"Reloading mogstored: " 
        killall mogstored -HUP
        RETVAL=$?
        [ $RETVAL = 0 ] && success || failure
        echo
}
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
                status mogilefsd
                RETVAL=$?
                ;;
        restart)
                stop
                sleep 1
                start
                ;;
        reload)
                reload
                ;;
        *)
                echo $"Usage: mogilefsd {start|stop|restart|reload|status}" 
                exit 1
esac
exit $RETVAL
			chmod a+x /etc/rc.d/init.d/mogilefsd
			chmod a+x /etc/rc.d/init.d/mogstored
			ln -s /usr/local/bin/mogstored /usr/bin/mogstored
			systemctl daemon-reload 
			systemctl start mogilefsd
			systemctl start mogstored
			chkconfig --add mogilefsd
			chkconfig --add mogstored								安装完成

测试命令可参考开头引用的文章
			
nginx充当mogilfs代理(nginx1.6.3以后版本make会出错,不包括1.6.3)
		wget http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.4.tar.gz
		tar -xf nginx_mogilefs_module-1.0.4.tar.gz
		yum -y install pcre-devel openssl-devel zlib-devel
		useradd -r nginx
		tar -xf nginx-1.6.3.tar.gz 
		cd nginx-1.6.3/
		./configure  --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module  --with-http_dav_module --with-http_stub_status_module  --with-file-aio --add-module=../nginx_mogilefs_module-1.0.4
		vim objs/Makefile
			CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g
			修改为 CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -g
		make
		make install
		cp -rf /usr/local/nginx/sbin/nginx /usr/sbin/	
		vim /usr/lib/systemd/system/nginx.service
			[Unit]
			Description=The nginx HTTP and reverse proxy server
			After=network.target remote-fs.target nss-lookup.target
			[Service]
			Type=forking
			PIDFile=/run/nginx.pid
			ExecStartPre=/usr/bin/rm -f /run/nginx.pid
			ExecStartPre=/usr/sbin/nginx -t
			ExecStart=/usr/sbin/nginx
			ExecReload=/bin/kill -s HUP $MAINPID
			KillSignal=SIGQUIT
			TimeoutStopSec=5
			KillMode=process
			PrivateTmp=true
			[Install]
			WantedBy=multi-user.target
		systemctl daemon-reload
		vim /etc/nginx/nginx.conf
			upstream trackers {
			                server 192.168.131.156:7001;
			                server 192.168.131.157:7001;
			 }
			location ~* /images {	(images后加不加斜线取决于上传时key前面是否有斜线,有则不加,没有则加)
               				 mogilefs_tracker trackers;			可以用负载均衡
				 mogilefs_domain images;			domain名字
				 mogilefs_methods GET;
				 mogilefs_noverify on;			是否不做校验
				 mogilefs_pass  {
				                proxy_pass $mogilefs_path;		这个变量可以在反代时让nginx构建出一个mogilefs的请求报文发给后端的tracker主机
				                proxy_hide_header Content-Type;	 隐藏Content-Type
				                proxy_buffering off;			不做缓存
				  }
			 }
		systemctl start nginx.service 				(通过http://192.168.131.152/images/ww.png访问图片,自动进行key对应fid的映射)

批量查找并上传文件脚本(上传后的文件名就是上传时的文件名)
		vim UploadFile.sh
			#!/bin/bash
			ip=192.168.131.157
			domain=images
			class=jpg
			find /root/a -name "*.txt" > /root/pwd.txt				要查找的文件类型
			sed -r 's/(.*\/)(.*)/\2/' /root/pwd.txt > /root/name.txt
			count=`cat /root/pwd.txt |wc -l`
			i=1
			while true
			do
			        if [ $i -gt $count ];then
			                break
			        fi
			        file=`sed -n ''$i'p' /root/pwd.txt`
			        key=`sed -n ''$i'p' /root/name.txt`
			        mogupload --trackers=$ip --domain=$domain --class=$class --key=/$key --file=$file
			        sleep 2
			        mogfileinfo --trackers=$ip --domain=$domain --key=/$key				显示结果可以去掉
			        let i++
			done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值