實驗要求html
一、 部署mogilefs分佈式文件系統node
二、 nginx代理mysql
實驗環境linux
一、拓撲nginx
二、網絡地址規劃算法
node1:172.16.76.10 nginx (centos6.8)sql
node2:172.16.76.20 Trackers 、storage Node (centos7.2)數據庫
node3:172.16.76.30 storage Node (centos7.2)vim
node4:172.16.76.40 storage Node (Mariadb) (centos7.2)centos
實驗準備
同步時間、關閉iptables、selinux等。同時本身配置/etc/hots
基本配置
node1
一、nginx配置
a、解決依賴關係
# yum groupinstall "DevelopmentTools" "Server Platform Deveopment"
# yum install openssl-devel pcre-devel
b、安裝
首先添加用戶nginx,實現以之運行nginx服務進程:
# groupadd -r nginx
# useradd -r -g nginx nginx
c、開始編譯和安裝:
[root@node1 ~]# tar -xvfnginx-1.10.3.tar.gz [root@node1 ~]# tar -xvfnginx_mogilefs_module-1.0.4.tar.gz [root@node1 ~]# cd nginx-1.10.3/ [root@node1 nginx-1.10.3]# ./configure --prefix=/usr \ --sbin-path=/usr/sbin/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/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=nginx --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre --with-debug \ --add-module=/root/nginx_mogilefs_module-1.0.4/ [root@node1 nginx-1.10.3]# make &&make install [root@node1 ~]#vim /etc/rc.d/init.d/nginx #腳本內容見文章後附件。 [root@node1 ~]#chmod +x /etc/rc.d/init.d/nginx [root@node1 ~]#chkconfig –add nginx [root@node1 ~]#service nginx start
node1爲centos6
node2
[root@node2 ~]# ls mogilefs/
MogileFS-Server-2.46-2.el6.noarch.rpm MogileFS-Utils-2.19-1.el6.noarch.rpm perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm Perlbal-1.78-1.el6.noarch.rpm perl-MogileFS-Client-1.14-1.el6.noarch.rpm
MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm Perlbal-doc-1.78-1.el6.noarch.rpm perl-Perlbal-1.78-1.el6.noarch.rpm
[root@node2 ~]# for i in {2,3,4} ;do scp -r mogilefs node$i:/root/;done
#將mogilefs拷貝至其他各節點
[root@node2 ~]# for i in {2,3,4};do sshnode$i 'yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslogperl-IO-AIO -y';done #各節點安裝
[root@node2 ~]# for i in {2,3,4};do sshnode$i 'yum install ./mogilefs/*.rpm -y';done #各節點安裝
node4:
[root@node4 ~]# yum install mariadb-server –y
二、初始化數據
a、數據庫受權
[root@node4 ~]#vim /etc/my.cnf
skip_name_resolve=ON
innodb_file_per_table=ON
[root@node4 ~]# systemctl start mariadb
[root@node4 ~]# mysql
MariaDB [mogilefs]> grant all ON *.* tomogile@'172.16.%.%' identified by 'mogilepass'
MariaDB [mogilefs]> GRANT ALL PRIVILEGES ON mogilefs.*TO mogile@'172.16.%.%' IDENTIFIED BY ‘mogile’ WITH GRANT OPTION;
MariaDB [mogilefs]> flush privileges;
b、初始化數據
[root@node2 ~]# mogdbsetup --dbhost=172.16.76.40 --dbname=mogilefs--dbrootuser=mogilefs -- dbrootpass=mogilefs --dbuser=mogile --dbpass=mogile --yes
三、設定鏈接數據庫
[root@node2 ~]# vim /etc/mogilefs/mogilefsd.conf
db_dsn =DBI:mysql:mogilefs:host=172.16.76.40
db_user = mogile
db_pass =mogile
# IP:PORT tolisten on for mogilefs client requests
listen = 0.0.0.0:7001
[root@node2~]# service mogilefsd start
存儲節點配置
node2
[root@node2 ~]# vim/etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /apps/data/mogilefs
[root@node2 ~]#mkdir -pv/apps/data/mogilefs
[root@node2 ~]# chown -R mogilefs.mogilefs /apps/data/mogilefs/
啓動服務報錯
#此處是由於啓動腳本問題
[root@node2 ~]# vim /etc/init.d/mogstored
圖中紅線標記處爲添加內容,修改保存後再次啓動服務正常
[root@node2 ~]# systemctl daemon-reload
文章後 會將修改後腳本上傳爲附件。
[root@node2 ~]# for i in {3,4}; do scp/etc/mogilefs/mogstored.conf node$i:/etc/mogilefs/;done
#將此文件傳遞到node三、node4節點(配置相同)
[root@node2 ~]#for i in {3,4}; do scp/etc/init.d/mogstored node$i:/etc/init.d/ ;done
#修改後的啓動腳本
[root@node2 ~]# for i in {3.4}; do sshnode$i 'mkdir -pv /apps/data/mogilefs' ;done
#node三、node4節點建立存儲目錄
[root@node2~]# for i in {3,4}; do ssh node$i 'chown -R mogilefs.mogilefs /apps/data/mogilefs/' ;done#權限
[root@node2~]# for i in {3,4}; do ssh node$i 'systemctl daemon-reload' ;done
[root@node2~]# for i in {3,4}; do ssh node$i ' service mogstored start' ;done
#啓動各節點 mostored服務。
添加存儲節點主機
[root@node2 ~]# mogadm host add172.16.76.20 --ip=172.16.76.20 --port=7500 --status=alive
[root@node2 ~]# mogadm host add172.16.76.30 --ip=172.16.76.30 --port=7500 --status=alive
[root@node2 ~]# mogadm host add172.16.76.40 --ip=172.16.76.40 --port=7500 --status=alive
添加存儲設備
node2:
[root@node2 ~]# cd /apps/data/mogilefs/
[root@node2 mogilefs]# mkdir dev1
[root@node2 mogilefs]# chown -R mogilefs.mogilefs /apps/data/mogilefs/
node3
[root@node3 ~]# cd /apps/data/mogilefs/
[root@node3 mogilefs]# mkdir dev2
[root@node3 mogilefs]# chown -R mogilefs.mogilefs /apps/data/mogilefs/
node4
[root@node4 ~]# cd /apps/data/mogilefs/
[root@node4 mogilefs]# mkdir dev3
[root@node4 mogilefs]# chown -R mogilefs.mogilefs /apps/data/mogilefs/
node2:
[root@node2 ~]# mogadm device add172.16.76.20 1
[root@node2 ~]# mogadm device add172.16.76.30 2
[root@node2 ~]# mogadm device add172.16.76.40 3
域(名稱空間)、類添加
添加域
node2
[root@node2~]# mogadm domain add file #添加域 file
[root@node2 ~]#mogadm domain add imgs #添加域imgs
[root@node2 ~]#mogadm domain list #域列表
添加類
node2
[root@node2~]# mogadm class add imgs jpg --hashtype=MD5 --mindevcount=2
#添加類jpg ,MD5算法最小文件分數爲2
[root@node2 ~]#mogadm class add imgs png --hashtype=MD5 --mindevcount=2
[root@node2 ~]#mogadm class list #類列表
測試存儲
上傳文件
[root@node2~]# mogupload --trackers=172.16.76.20:7001 --domain=imgs--class=jpg --key='/default.jpg' --file='/root/test.jpg'
[root@node2~]# mogupload --trackers=172.16.76.20 --domain=file --key='t1.html'--file='/root/anaconda-ks.cfg'
查詢文件
[root@node2 ~]# mogfileinfo--trackers=172.16.76.20:7001 --domain=imgs --key='default.jpg'
#注意此處顯示devcount這是有問題,文章最後有說明
查看詳細信息
[root@node2~]# mogfiledebug --trackers=172.16.76.20:7001 --domain=imgs --key='default.jpg'
瀏覽器測試查看
http://172.16.76.20:7500/dev1/0/000/000/0000000041.fid
此時說明mogilefs已經能夠正常使用。
配置Nginx代理
[root@node1 ~]vim /etc/nginx/nginx.conf
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local]"$request" ' # '$status$body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server{ listen 80; server_name yourdomain.com default; location /imgs { mogilefs_tracker 172.16.76.20:7001; #代理trackers mogilefs_domain imgs; #imgs域 mogilefs_methods get; #請求方法 mogilefs_pass { proxy_pass $mogilefs_path; #mogilefs模塊內置變量 proxy_hide_headerContent-Type; proxy_buffering off; } expires 1h; } location /file/ { mogilefs_tracker 172.16.76.20:7001; mogilefs_domain file; #file域 mogilefs_methods get; mogilefs_pass { proxy_pass $mogilefs_path; proxy_hide_headerContent-Type; proxy_buffering off; } expires 1h; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
[root@node1 ~] nginx -t
nginx: the configuration file/etc/nginx/nginx.conf syntax is ok
nginx: configuration file/etc/nginx/nginx.conf test is successful
[root@node1 ~]nginx -s reload
測試
聲明:本實驗中存在兩個問題
一、 因爲nginx與mogilefs模塊問題在centos7中安裝存在問題,因此nginx代理節點安裝在centos6.8 系統中。
二、mogilefs存儲文件默認是2份,本實驗中沒法自動複製,文件始終是一份,
http://www.tuicool.com/articles/BbMJZfR此文中記錄有解決方法,不過筆者按其方法實驗並未成功,望各位見諒。若是那天問題解決我會更新此博客。固然若哪位可以解決此問題,但願給兄弟指點下,在這先謝謝了。
注:文中所用安裝包 可一下網址下載