美文网首页
前端nginx反代后端mogilefs存储实战实例

前端nginx反代后端mogilefs存储实战实例

作者: 任总 | 来源:发表于2018-11-17 23:54 被阅读27次

    一、MogileFS存储

    1、MogileFS分布式文件存储系统

    MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前使用MogileFS 的公司非常多,如日本排名先前的几个互联公司及国内的yupoo(又拍)、digg、豆瓣、1号店、大众点评、搜狗和安居客等,分别为所在的组织或公司管理着海量的图片。

    2、MogileFS由3个部分组成:

    MogileFS结构
    • (1) server:主要包括mogilefsd和mogstored两个应用程序。

      • mogilefsd实现的是tracker,它通过数据库来保存元数据信息,包括站点domain、class、host等;
      • mogstored是存储节点(store node),它其实是个WebDAV服务,默认监听在7500端口,接受客户端的文件存储请求。在MogileFS安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。
    • (2) utils(工具集):主要是MogileFS的一些管理工具,例如mogadm等。

    • (3) 客户端API:MogileFS的客户端API很多,例如Perl、PHP、Java、Python等,用这个模块可以编写客户端程序,实现文件的备份管理功能等。

    3、设备定义

    存储主机(节点)

    这个是 MogileFS 存储文件存放在这些机器上,也是 mogstored 节点,也叫 Storage Server,一台存储主要都要启动一个 mogstored 服务.扩容就是增加这些机器.

    设备(device)
    一个存储节点,以就是上面的主机,可以有多个 device, 就是用来存放文件的目录(例如挂载的目录),
    每个设备都有一个设备id,需要在 mogstored 的配置文件中的 docroot 配置的项目 指定的目录下面创建相应的设备的目录,目录名为 $docroot/dev$id,设备是不能删除的.
    只能将其设备的状态的值置为dead,当一个设备 dead 之后,就真的 dead了,里面的数据也无法恢复了,且这个dead了的设备的 id 也不能再用.
    
    mogilefs存储结构
    存储Domain域
    • 一个MogileFS可以有多个Domain
    • 用来存放不同的文件(大小、类型)
    • 同一个Domain内,key必需唯一
    • 不同的Domain内,key可以相同
    存储Class类
    • 文件属性
    • 定义文件存储在不同设备上的分数
    存储key(Fid)文件地址
    • Domain和文件的key(Fid)一起定位文件位置

    二、MogileFS存储安装

    1、cpan安装

    # yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
    
    # cpan
    App::cpanminus
    MogileFS::Server
    MogileFS::Utils
    IO::AIO
    IO::WrapTie
    Danga::Socket
    

    2、cpanm安装

    wget http://xrl.us/cpanm -O /usr/bin/cpanm; sudo chmod +x /usr/bin/cpanm
    
    #cpanm DBD::mysql
    #cpanm MogileFS::Server
    #cpanm MogileFS::Utils
    #cpanm MogileFS::Client
    
    
    所有的perl程序可以编译运行:
    # perl Makefile.PL
    # make
    # make test
    # make install
    
    
    # cpan -i App::cpanminus
    cpan> install App:cpanminus
    
    
    # cpan MogileFS::Server
    
    conf:
    /etc/mogilefs/{mogifsd.conf, mogstored.conf}
    

    3、rpm安装,centos6支持较好

    相关rpm包下载地址:http://rpmfind.net/
    http://mirrors.sahedev.com/

    MogileFS-Server-2.46-2.el6.noarch.rpm
    perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
    MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm
    perl-MogileFS-Client-1.14-1.el6.noarch.rpm
    MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm
    perl-Perlbal-1.78-1.el6.noarch.rpm
    MogileFS-Utils-2.19-1.el6.noarch.rpm

    三、nginx反代后端mogilefs存储示例

    使用CentOS 7环境部署
    192.168.1.22----节点1+mysql
    192.168.1.60----节点2
    192.168.1.61----节点3
    192.168.1.62----nginx代理

    节点1

    #下载程序包
    wget http://mirrors.sahedev.com/MogileFS/MogileFS-Server-2.46-2.el6.noarch.rpm
    wget http://mirrors.sahedev.com/MogileFS/MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm
    wget http://mirrors.sahedev.com/MogileFS/MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm
    wget http://mirrors.sahedev.com/MogileFS/MogileFS-Utils-2.19-1.el6.noarch.rpm
    wget http://mirrors.sahedev.com/MogileFS/Perlbal-1.78-1.el6.noarch.rpm
    wget http://mirrors.sahedev.com/MogileFS/perl-MogileFS-Client-1.14-1.el6.noarch.rpm
    wget http://mirrors.sahedev.com/MogileFS/perl-Net-Netmask-1.9015-8.el6.noarch.rpm
    wget http://mirrors.sahedev.com/MogileFS/perl-Perlbal-1.78-1.el6.noarch.rpm
     wget http://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
    
    

    由于依赖于perl环境所以先安装epel源

    #安装epel源和perl依赖包
    [root@mongilefs-22 ~]# yum install epel-release
    [root@mongilefs-22 ~]#yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO -y
    
    [root@mongilefs-22 ~]# ls
    Perlbal-1.78-1.el6.noarch.rpm
    perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm   #依赖包 
     perl-MogileFS-Client-1.14-1.el6.noarch.rpm    #tracker组件,调度查询管理组件
    MogileFS-Server-2.46-2.el6.noarch.rpm            #核心服务公共组件,都需要安装     
    perl-Net-Netmask-1.9015-8.el6.noarch.rpm
    MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm 
    perl-Perlbal-1.78-1.el6.noarch.rpm
    MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm  #storage存储节点
    
    #安装perl的rpm包
    [root@mongilefs-22 ~]# yum install ./*.rpm -y
    
    #安装数据库
    [root@mongilefs-22 ~]# yum install mariadb-server -y
    
    #查看文件目录属主属组
    [root@mongilefs-22 ~]# ls -ld /var/run/mogilefsd/
    drwxr-xr-x 2 mogilefs mogilefs 40 Oct  8  2013 /var/run/mogilefsd/
    
    #编辑配置文件
    [root@mongilefs-22 ~]# cd /etc/mogilefs/
    [root@mongilefs-22 mogilefs]# cp mogilefsd.conf{,.bak}
    [root@mongilefs-22 mogilefs]# vim mogilefsd.conf
    
    daemonize = 1
    pidfile = /var/run/mogilefsd/mogilefsd.pid
    DBI:mysql:mogilefs:host=192.168.1.22  #驱动格式:数据库类型:数据库名称:数据库主机ip
    db_user = moguser  #数据库用户
    db_pass = mogpass #数据库密码
    listen = 0.0.0.0:7001 #监听端口
    conf_port = 7001
    query_jobs = 10
    delete_jobs = 1
    replicate_jobs = 5
    
    #数据库初始化
    [root@mongilefs-22 ~]# vim /etc/my.cnf.d/server.cnf
    [mysqld]
    skip_name_resolve = ON
    innodb_file_per_table = ON
    [root@mongilefs-22 ~]# systemctl start mariadb
    
    #自定义创建数据库用户
    MariaDB [(none)]> GRANT ALL ON mogilefs.* TO 'moguser'@'192.168.1.%' IDENTIFIED BY 'mogpass';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)
    
    #初始化
    [root@mongilefs-22 ~]# mogdbsetup --dbhost=127.0.0.1 --dbuser=moguser --dbpass=mogpass
    
    Continue? [N/y]: y #是否初始化数据库
    Create/Upgrade database name 'mogilefs'? [Y/n]: y #是否创建数据库
    Grant all privileges to user 'moguser', connecting from anywhere, to the mogilefs database 'mogilefs'? [Y/n]: y  #是否创建数据库用户
    ![image.png](https://img.haomeiwen.com/i11999111/a75b7bcffce1dd2d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    #启动mogilefsd报错
    [root@mongilefs-22 ~]# service mogilefsd start
    Starting mogilefsd (via systemctl):  Job for mogilefsd.service failed because a configured resource limit was exceeded. See "systemctl status mogilefsd.service" and "journalctl -xe" for details.                                                        [FAILED]
    #结束mogilefsd进程并删除pid文件   
    [root@mongilefs-22 ~]# killall mogilefsd
    [root@mongilefs-22 ~]# rm /var/run/mogilefsd/mogilefsd.pid 
    rm: remove regular file ‘/var/run/mogilefsd/mogilefsd.pid’? y
    [root@mongilefs-22 ~]# rm /var/lock/subsys/mogilefsd 
    rm: remove regular empty file ‘/var/lock/subsys/mogilefsd’? y
    # 启动
    [root@mongilefs-22 ~]# service mogilefsd start
    Starting mogilefsd (via systemctl):                        [  OK  ]
    
    #设置
    [root@mongilefs-22 ~]# cd /etc/mogilefs
    [root@mongilefs-22 mogilefs]# cp mogstored.conf {,.bak}
    [root@mongilefs-22 mogilefs]# vim mogstored.conf 
    
    maxconns = 10000  #最大连接数
    httplisten = 0.0.0.0:7500
    mgmtlisten = 0.0.0.0:7501
    docroot = /mogilefs/data #储存路径
    #创建存储目录,设置属主组为mogilefs
    [root@mongilefs-22 mogilefs]# mkdir /mogilefs/data/dev1 -pv
    [root@mongilefs-22 mogilefs]# chown -R mogilefs.mogilefs /mogilefs/
    c
    #启动mogstored,由于centos7原因,启动文件在init.d下启动会报错,所以拷贝出来启动
    [root@mongilefs-22 ~]# cp /etc/init.d/mogstored  ./
    [root@mongilefs-22 ~]# ./mogstored start
    Starting mogstored                                         [  OK  ]
    
    
    #配置文件拷贝到其他节点上
    [root@mongilefs-22 ~]# scp -r /etc/mogilefs/*.conf 192.168.1.60:/etc/mogilefs/
    [root@mongilefs-22 ~]# scp -r /etc/mogilefs/*.conf 192.168.1.61:/etc/mogilefs/
    
    #当其他节点启动后,添加主机
    [root@mongilefs-22 ~]# mogadm host add 192.168.1.22 --ip=192.168.1.22 --port=7500 --status=alive
    [root@mongilefs-22 ~]# mogadm host add 192.168.1.60 --ip=192.168.1.60 --port=7500 --status=alive
    [root@mongilefs-22 ~]# mogadm host add 192.168.1.61 --ip=192.168.1.61 --port=7500 --status=alive
    
    #检查主机情况
    [root@mongilefs-22 ~]# mogadm check
    Checking trackers...
      127.0.0.1:7001 ... OK
    
    Checking hosts...
      [ 1] 192.168.1.22 ... OK
      [ 2] 192.168.1.60 ... OK
      [ 3] 192.168.1.61 ... OK
    
    #添加储存设备
    [root@mongilefs-22 ~]# mogadm device add 192.168.1.22 1
    [root@mongilefs-22 ~]# mogadm device add 192.168.1.60 2
    [root@mongilefs-22 ~]# mogadm device add 192.168.1.61 3
    [root@mongilefs-22 ~]# mogadm device list
    192.168.1.22 [1]: alive
                        used(G)    free(G)   total(G)  weight(%)
       dev1:   alive      1.267      6.720      7.986        100
    
    192.168.1.60 [4]: alive
                        used(G)    free(G)   total(G)  weight(%)
       dev2:   alive      1.126      6.860      7.986        100
    
    192.168.1.61 [5]: alive
                        used(G)    free(G)   total(G)  weight(%)
       dev3:   alive      1.126      6.860      7.986        100
    
    
    

    节点2和节点3配置

    #同步时间
    #安装epel源
    [root@node-60 ~]# yum install epel-release
    [root@node-60 ~]#yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO -y
    
    #安装rpm包
    [root@node-60 ~]# ls
    anaconda-ks.cfg
    mha4mysql-node-0.56-0.el6.noarch.rpm
    MogileFS-Server-2.46-2.el6.noarch.rpm
    MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm
    MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm
    MogileFS-Utils-2.19-1.el6.noarch.rpm
    percona-toolkit-3.0.12-1.el7.x86_64.rpm
    Perlbal-1.78-1.el6.noarch.rpm
    perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
    perl-MogileFS-Client-1.14-1.el6.noarch.rpm
    perl-Net-Netmask-1.9015-8.el6.noarch.rpm
    perl-Perlbal-1.78-1.el6.noarch.rpm
    
    #创建目录
    [root@node-60 ~]# mkdir -pv /mogilefs/data/dev2
    [root@node-60 ~]# chown -R mogilefs.mogilefs /mogilefs/
    
    
    #其他节点拷贝过来的配置文件,所以可以直接启动mogstored,由于centos7原因,启动文件在init.d下启动会报错,所以拷贝出来启动
    [root@node-60 ~]# cp /etc/init.d/mogstored  ./
    [root@node-60 ~]# ./mogstored start
    Starting mogstored                                         [  OK  ]
    
    #启动trarkers
    [root@node-60 ~]# cp /etc/init.d/mogilefsd ./
    [root@node-60 ~]# ./mogilefsd start
    Starting mogilefsd                                         [  OK  ]
    
    

    mog工具

    mogadm       
    mogdelete   #删除文件
    mogfileinfo #看文件信息
    moglistkeys #列出所有文件的键
    mogstored
    mogautomount
    mogfetch  #获取文件
    mogilefsd    
    mogrename   
    mogtool
    mogdbsetup   
     mogfiledebug  
    moglistfids   #列出所有文件的id
    mogstats     
     mogupload #上传文件
    
    #文件一致性检测
    [root@mongilefs-22 ~]# mogadm fsck start | stop   
    
    #文件系统信息
    [root@mongilefs-22 ~]# mogadm fsck status
    
        Running: No
         Status: 38 / 38 (100.00%)
           Time: 5s (7 fids/s; 0s remain)
     Check Type: Normal (check policy + files)
    
     [num_POVI]: 3
    
    #检测结果
    [root@mongilefs-22 ~]# mogadm fsck printlog
    unixtime             event           fid      devid
    1542121262            POVI            38          -
    1542121262            POVI            37          -
    1542121262            POVI            30          -
    
    #负载均衡策略
    [root@mongilefs-22 ~]# mogadm rebalance test
    #使用默认规则policy
    [root@mongilefs-22 ~]# mogadm rebalance policy
    #显示负载均衡策略
    [root@mongilefs-22 ~]# mogadm rebalance settings
    
    

    mogilefs使用

     #创建imgs域和text域
    [root@mongilefs-22 ~]# mogadm domain add imgs 
    [root@mongilefs-22 ~]# mogadm domain add text
    
    #查询当前域,副本存储2个
    [root@mongilefs-22 ~]# mogadm domain list
     domain               class                mindevcount   replpolicy   hashtype
    -------------------- -------------------- ------------- ------------ -------
     imgs                 default                   2        MultipleHosts() NONE    
    
     text                 default                   2        MultipleHosts() NONE   
    
    #在imgs域中创建png类,哈希类型为MD5,副本存储3个
    [root@mongilefs-22 ~]# mogadm class add imgs png --hashtype=MD5 --mindevcount=3
    
    #在imgs域中创建jpg类,哈希类型为空,副本存储2个
    [root@mongilefs-22 ~]# mogadm class add imgs jpg --hashtype=NONE --mindevcount=2
    
    #查询当前类
    [root@mongilefs-22 ~]# mogadm class list
     domain               class                mindevcount   replpolicy   hashtype
    -------------------- -------------------- ------------- ------------ -------
     imgs                 default                   2        MultipleHosts() NONE   
     imgs                 jpg                       2        MultipleHosts() NONE   
     imgs                 png                       3        MultipleHosts() MD5    
    
     text                 default                   2        MultipleHosts() NONE
    

    mog上传文件

    #上传图片文件到imgs域,key为1.jpg
    [root@mongilefs-22 ~]# mogupload --trackers=192.168.1.22 --domain=imgs --key='1.jpg' --file='/usr/share/kde4/apps/ksplash/Themes/CentOS7/2560x1600/background.jpg'
    
    #查询上传图片位置  
    [root@mongilefs-22 ~]# mogfileinfo --trackers=192.168.1.22 --domain=imgs --key='1.jpg'
    - file: 1.jpg
         class:              default
      devcount:                    1
        domain:                 imgs
           fid:                   30
           key:               1.jpg
        length:               961243
     - http://192.168.1.61:7500/dev3/0/000/000/0000000030.fid  
     #文件id位置,存储到节点2服务器上
    
    #上传图片文件到imgs域,jpg类中,key为2.jpg
    [root@mongilefs-22 ~]# mogupload --trackers=192.168.1.22 --domain=imgs --class=jpg --key='2.jpg' --file='/usr/share/wallpapers/CentOS7/contents/images/2560x1600.jpg'
    [root@mongilefs-22 ~]# mogfileinfo --trackers=192.168.1.22 --domain=imgs --key='2.jpg'
    - file: 2.jpg
         class:                  jpg
      devcount:                    1
        domain:                 imgs
           fid:                   31
           key:               2.jpg
        length:               961243
     - http://192.168.1.60:7500/dev2/0/000/000/0000000031.fid
     #文件id位置,存储到节点1服务器上
    
    

    测试两个tracker可用

    #查询节点1
    [root@node-60 ~]# mogrileinfo --trackers=192.168.1.60 --domain=imgs --key='2.jpg' 
    -bash: mogrileinfo: command not found
    [root@node-60 ~]# mogfileinfo --trackers=192.168.1.60 --domain=imgs --key='2.jpg' 
    - file: 2.jpg
         class:                  jpg
      devcount:                    1
        domain:                 imgs
           fid:                   31
           key:               2.jpg
        length:               961243
     - http://192.168.1.60:7500/dev2/0/000/000/0000000031.fid
    
    ##查询节点2,得到结果和节点1一致,证明两个tracker节点正常可用
    [root@node-60 ~]# mogfileinfo --trackers=192.168.1.61 --domain=imgs --key='2.jpg' 
    - file: 2.jpg
         class:                  jpg
      devcount:                    1
        domain:                 imgs
           fid:                   31
           key:               2.jpg
        length:               961243
     - http://192.168.1.60:7500/dev2/0/000/000/0000000031.fid
    
    
    image.png

    安装nginx反代服务器

    #安装开发组件
    [root@node-62 ~]# yum groupinstall "Development Tools" "Server Platform Development" -y
    
    #安装支持正则表达式组件
    [root@node-62 ~]# yum install pcre-devel openssl-devel -y
    
    #添加nginx用户
    [root@node-62 ~]# useradd -r nginx
    [root@node-62 ~]# id nginx
    uid=998(nginx) gid=996(nginx) groups=996(nginx)
    
    #下载编译安装nginx
    [root@node-62 ~]# wget http://nginx.org/download/nginx-1.6.3.tar.gz
    
    [root@node-62 ~]# wget http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.4.tar.gz
    
    [root@node-62 ~]# cd nginx-1.6.3
    [root@node-62 nginx-1.6.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=../nginx_mogilefs_module-1.0.4
    
    #跳过编译错误
    [root@node-62 nginx-1.6.3]# make CFLAGS="-pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -g"
    
    #安装
    [root@node-62 nginx-1.6.3]# make install
    
    #启动nginx
    [root@node-62 ~]# vim /etc/rc.d/init.d/nginx #编辑启动脚本
    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/etc/nginx/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
    # make required directories
    user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
    options=`$nginx -V 2>&1 | grep 'configure arguments:'`
    for opt in $options; do
    if [ `echo $opt | grep '.*-temp-path'` ]; then
    value=`echo $opt | cut -d "=" -f 2`
    if [ ! -d "$value" ]; then
    # echo "creating" $value
    mkdir -p $value && chown -R $user $value
    fi
    fi
    done
    }
    
    start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
    }
    
    stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
    }
    
    restart() {
    configtest || return $?
    stop
    sleep 1
    start
    }
    
    reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
    }
    
    force_reload() {
    restart
    }
    
    configtest() {
    $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
    status $prog
    }
    
    rh_status_q() {
    rh_status >/dev/null 2>&1
    }
    
    case "$1" in
    start)
    rh_status_q && exit 0
    $1
    ;;
    stop)
    rh_status_q || exit 0
    $1
    ;;
    restart|configtest)
    $1
    ;;
    reload)
    rh_status_q || exit 7
    $1
    ;;
    force-reload)
    force_reload
    ;;
    status)
    rh_status
    ;;
    condrestart|try-restart)
    rh_status_q || exit 0
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
    exit 2
    esac
    
    
    [root@node-62 ~]# chmod +x /etc/rc.d/init.d/nginx 
    [root@node-62 ~]# service nginx start
    Reloading systemd:                                         [  OK  ]
    
    #添加至服务管理列表,并让其开机自动启动:
    [root@node-62 ~]#  chkconfig --add nginx
    [root@node-62 ~]#  chkconfig nginx on
    
    
    #编辑nginx反代规则
    [root@node-62 ~]# cd /etc/nginx
    [root@node-62 nginx]# cp nginx.conf{,.bak}
    [root@node-62 nginx]# vim nginx.conf
    ......
    worker_processes  auto;
    ......
    upstream mogsrvs {              #定义服务器组
            server 192.168.1.22:7001;
            server 192.168.1.60:7001;
            server 192.168.1.61:7001;
    
             }
        
       server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
        
            #access_log  logs/host.access.log  main; 
    
            location / {
                root   html;
                index  index.html index.htm;
            }
         location /imgs/ {
              mogilefs_tracker mogsrvs; #调用服务器组
             mogilefs_domain imgs; #默认域
              mogilefs_class png jpg; #默认类
    
             mogilefs_pass {
             proxy_pass $mogilefs_path;
             proxy_hide_header Content-Type;
             proxy_buffering off;
            }
          }
    [root@node-62 nginx]# nginx -t #语法检查
    [root@node-62 nginx]# nginx -s reload #重载nginx
    
    通过nginx反代访问

    参考文档:
    http://www.tuicool.com/articles/YniEnyf
    http://joelhy.github.io/2015/01/27/FastDFS-v5-06-deploy/

    https://blog.csdn.net/wangyj_bk/article/details/78858056

    相关文章

      网友评论

          本文标题:前端nginx反代后端mogilefs存储实战实例

          本文链接:https://www.haomeiwen.com/subject/fwejxqtx.html