cxin 发表于 2019-2-1 08:17:59

Nginx+MogileFS分布式文件系统部署实验

  
  

  实验要求
  1、部署mogilefs分布式文件系统
  2、nginx代理
  
  实验环境
  1、拓扑
https://s1.运维网.com/wyfs02/M00/8E/27/wKiom1i21nXgtmoXAABjpy1AhIs012.jpg
  
  2、网络地址规划
      node1:172.16.76.10 nginx (centos6.8)
      node2:172.16.76.20 Trackers 、storage Node   (centos7.2)
      node3:172.16.76.30 storage Node                   (centos7.2)
      node4:172.16.76.40 storage Node(Mariadb) (centos7.2)
  
  实验准备
           同步时间、关闭iptables、selinux等。同时自己配置/etc/hots
  
  基本配置
  node1
  1、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、开始编译和安装:
# tar -xvfnginx-1.10.3.tar.gz
# tar -xvfnginx_mogilefs_module-1.0.4.tar.gz
# cd 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/
# make &&make install
#vim /etc/rc.d/init.d/nginx
         #脚本内容见文章后附件。
#chmod +x /etc/rc.d/init.d/nginx
#chkconfig –add nginx
#service nginx start  

  node1为centos6
  
  

  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.rpmPerlbal-1.78-1.el6.noarch.rpm      perl-MogileFS-Client-1.14-1.el6.noarch.rpm
  MogileFS-Server-mogstored-2.46-2.el6.noarch.rpmPerlbal-doc-1.78-1.el6.noarch.rpm   perl-Perlbal-1.78-1.el6.noarch.rpm
  # for i in {2,3,4} ;do scp -rmogilefs node$i:/root/;done
                             #将mogilefs拷贝至其余各节点
  # for i in {2,3,4};do sshnode$i 'yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslogperl-IO-AIO -y';done   #各节点安装
  # for i in {2,3,4};do sshnode$i 'yum install ./mogilefs/*.rpm -y';done #各节点安装
  
  
  node4:
      # yum install mariadb-server –y
  
  2、初始化数据
  a、数据库授权
      #vim /etc/my.cnf
      skip_name_resolve=ON
      innodb_file_per_table=ON
      # systemctl start mariadb
      # mysql
      MariaDB > grant all ON *.* tomogile@'172.16.%.%' identified by 'mogilepass'
      MariaDB > GRANT ALL PRIVILEGES ON mogilefs.*TO mogile@'172.16.%.%' IDENTIFIED BY ‘mogile’ WITH GRANT OPTION;
      MariaDB > flush privileges;
  
   b、初始化数据
      # mogdbsetup --dbhost=172.16.76.40 --dbname=mogilefs--dbrootuser=mogilefs --   dbrootpass=mogilefs --dbuser=mogile --dbpass=mogile--yes
  
  3、设定连接数据库
     # 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
           # service mogilefsd start
  
   存储节点配置
  
  node2
      # vim/etc/mogilefs/mogstored.conf
      maxconns = 10000
      httplisten = 0.0.0.0:7500
      mgmtlisten = 0.0.0.0:7501
      docroot = /apps/data/mogilefs
      #mkdir -pv/apps/data/mogilefs
      # chown -Rmogilefs.mogilefs /apps/data/mogilefs/
  启动服务报错
https://s3.运维网.com/wyfs02/M01/8E/25/wKioL1i2yL7jsn_8AABIn7JSPRg401.jpg
https://s4.运维网.com/wyfs02/M02/8E/27/wKiom1i2yJvDKjjvAAKIMmoY8H4119.jpg
  

  #此处是因为启动脚本问题
  # vim /etc/init.d/mogstored
  图中红线标记处为添加内容,修改保存后再次启动服务正常
  # systemctl daemon-reload
  
  

https://s2.运维网.com/wyfs02/M02/8E/25/wKioL1i2zaHxd1vVAAFVcxKyJ8U944.jpg
  文章后 会将修改后脚本上传为附件。
  
      # for i in {3,4}; do scp/etc/mogilefs/mogstored.conf node$i:/etc/mogilefs/;done
      #将此文件传递到node3、node4节点(配置相同)
  
      #for i in {3,4}; do scp/etc/init.d/mogstored node$i:/etc/init.d/ ;done
           #修改后的启动脚本
      # for i in {3.4}; do sshnode$i 'mkdir -pv /apps/data/mogilefs' ;done
           #node3、node4节点创建存储目录
     # for i in {3,4}; do ssh node$i 'chown -R mogilefs.mogilefs /apps/data/mogilefs/' ;done#权限
  
      # for i in {3,4}; do ssh node$i 'systemctl daemon-reload' ;done
      # for i in {3,4}; do ssh node$i ' service mogstored start' ;done
      #启动各节点 mostored服务。
  
   添加存储节点主机
https://s5.运维网.com/wyfs02/M00/8E/27/wKiom1i2zeChxJkIAAAmoqO5Jv4569.jpg
  

      # mogadm host add172.16.76.20 --ip=172.16.76.20 --port=7500 --status=alive
      # mogadm host add172.16.76.30 --ip=172.16.76.30 --port=7500 --status=alive
      # mogadm host add172.16.76.40 --ip=172.16.76.40 --port=7500 --status=alive
https://s5.运维网.com/wyfs02/M01/8E/25/wKioL1i2zeGTd4ptAACavhM-JGE190.jpg
  

  
  添加存储设备
  node2:
        # cd /apps/data/mogilefs/
        # mkdir dev1
        # chown -Rmogilefs.mogilefs /apps/data/mogilefs/
  
  node3
        # cd /apps/data/mogilefs/
        # mkdir dev2
        # chown -Rmogilefs.mogilefs /apps/data/mogilefs/
  
  node4
        # cd /apps/data/mogilefs/
        # mkdir dev3
        # chown -Rmogilefs.mogilefs /apps/data/mogilefs/
  

  node2:
        # mogadm device add172.16.76.20 1
        # mogadm device add172.16.76.30 2
        # mogadm device add172.16.76.40 3
  

https://s2.运维网.com/wyfs02/M02/8E/27/wKiom1i2zkfTZllvAACXelDJv-I938.jpg
  
  域(名称空间)、类添加
  添加域
           node2
           # mogadm domain add file #添加域 file
        #mogadm domain add imgs#添加域imgs
        #mogadm domain list#域列表
  

  
https://s1.运维网.com/wyfs02/M00/8E/27/wKiom1i2zsuSTe2CAABWvcUhtNk419.jpg


  

  添加类
        node2
           # mogadm class add imgs jpg --hashtype=MD5 --mindevcount=2
                     #添加类jpg ,MD5算法最小文件分数为2
        #mogadm class add imgs png --hashtype=MD5 --mindevcount=2
        #mogadm class list#类列表
https://s1.运维网.com/wyfs02/M00/8E/25/wKioL1i2zsvyDWhzAAB_uZ0fgGE067.jpg
  
  
  测试存储
  上传文件
  # mogupload --trackers=172.16.76.20:7001 --domain=imgs--class=jpg --key='/default.jpg' --file='/root/test.jpg'
  # mogupload--trackers=172.16.76.20--domain=file --key='t1.html'--file='/root/anaconda-ks.cfg'
  
  查询文件
  # mogfileinfo--trackers=172.16.76.20:7001 --domain=imgs --key='default.jpg'
https://s5.运维网.com/wyfs02/M00/8E/25/wKioL1i2z7eyHe3KAABgBYMR9tQ439.jpg
#注意此处显示devcount这是有问题,文章最后有说明

  
  查看详细信息
  
  # mogfiledebug --trackers=172.16.76.20:7001 --domain=imgs--key='default.jpg'
https://s3.运维网.com/wyfs02/M01/8E/27/wKiom1i2z7fTuXdQAACWWn19trE723.jpg
  
  

  浏览器测试查看
  http://172.16.76.20:7500/dev1/0/000/000/0000000041.fid
https://s4.运维网.com/wyfs02/M01/8E/27/wKiom1i2z_PA_x9YAAAzS-RfBvw280.jpg
  此时说明mogilefs已经可以正常使用。
  
  配置Nginx代理
  
  vim /etc/nginx/nginx.conf
#user nobody;
worker_processes1;
#error_log logs/error.log;
#error_log logs/error.lognotice;
#error_log logs/error.loginfo;
#pid       logs/nginx.pid;
events {
   worker_connections1024;
}
http {
   include       mime.types;
   default_type application/octet-stream;
   #log_formatmain'$remote_addr - $remote_user [$time_local]"$request" '
   #                  '$status$body_bytes_sent "$http_referer" '
   #               '"$http_user_agent" "$http_x_forwarded_for"';
   #access_loglogs/access.logmain;
   sendfile      on;
   #tcp_nopush   on;
   #keepalive_timeout0;
   keepalive_timeout65;
   #gzipon;
         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_page500 502 503 504/50x.html;
             location = /50x.html {
                root   html;
             }
         }
}  

  
   nginx -t
  nginx: the configuration file/etc/nginx/nginx.conf syntax is ok
  nginx: configuration file/etc/nginx/nginx.conf test is successful
  nginx -s reload
  
  测试
https://s4.运维网.com/wyfs02/M01/8E/25/wKioL1i20AfQZOW0AAAubvJAKOQ652.jpg
https://s5.运维网.com/wyfs02/M01/8E/25/wKioL1i20AjxLs8gAAFIOkOEHdc385.jpg
  
  

  声明:本实验中存在两个问题
  1、由于nginx与mogilefs模块问题在centos7中安装存在问题,所以nginx代理节点安装在centos6.8 系统中。
  
  2、mogilefs存储文件默认是2份,本实验中无法自动复制,文件始终是一份,
  http://www.tuicool.com/articles/BbMJZfR此文中记录有解决方法,不过笔者按其方法实验并未成功,望各位见谅。如果那天问题解决我会更新此博客。当然若哪位能够解决此问题,希望给兄弟指点下,在这先谢谢了。
  
   注:文中所用安装包 可一下网址下载
  http://down.运维网.com/3363989/up

  


附件:http://down.运维网.com/data/2366470

页: [1]
查看完整版本: Nginx+MogileFS分布式文件系统部署实验