设为首页 收藏本站
查看: 2348|回复: 0

[经验分享] mogilefs分布式部署及说明

  [复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-3 09:07:02 | 显示全部楼层 |阅读模式
一、mogilefs介绍
二、mogilefs原理
三、mogilefs架构说明
四、mogile安装部署

一、mogilefs介绍
MogileFS是我们的开源分布式文件系统。其性能和特点包括:
(1)应用程序级别 - 不需要特殊的内核模块。
   没有单点故障 -  MogileFS设置的所有三个组件(存储节点,跟踪器和跟踪器的数据库)可以在多台机器上运行,因此没有单点故障。 (您可以在与存储节点相同的计算机上运行跟踪器,因此您不需要4台计算机...)建议至少使用2台计算机。
(2)自动文件复制
   基于文件“类”的文件在足够不同的存储节点之间自动复制,以满足其类所请求的最小复制计数。例如,对于照片托管网站,您可以使原始JPEG的最小副本计数为3,但缩略图和缩放版本只有副本计数为1或2.如果你失去了缩略图的唯一副本,  应用程序可以重建它。以这种方式,MogileFS(无RAID)可以在不必要地存储多个数据副本的磁盘上节省资金。         
(3)比RAID更好
   在非SAN RAID设置中,磁盘是冗余的,但主机不是。如果丢失整个机器,则文件无法访问。 MogileFS在不同主机上的设备之间复制文件,因此文件始终可用。
(4) Flat Namespace      
   文件由平面的全局命名空间中的命名键标识。您可以创建任意数量的命名空间,因此具有可能冲突的键的多个应用程序可以在同一个MogileFS安装上运行。
(5) Shared-Nothing
    MogileFS不依赖于具有共享磁盘的昂贵的SAN。每台机器都维护自己的本地磁盘。
(6)不需要RAID  
   MogileFS存储节点上的本地磁盘可以位于RAID中,也可以不位于RAID中。它不是更便宜,因为RAID不会买你任何安全,MogileFS尚未提供。
(7)与本地文件系统无关联
   MogileFS存储节点上的本地磁盘可以使用您选择的文件系统(ext3,XFS等)进行格式化。 MogileFS有自己的内部目录哈希,因此它不会遇到文件系统限制,如“每个目录的最大文件数”或“每个目录最大目录数”。使用你舒适的。

二、mogilefs原理
Tracker(mogilefsd进程):
  基于事件的父进程/消息总线,管理来自应用程序的所有客户端通信(请求执行操作),包括将这些请求负载平衡到“查询工作器”,并处理mogilefsd子进程之间的所有通信。您应该在不同的主机上运行2个跟踪程序,为HA或更多负载均衡(如果您需要超过2)。 mogilefsd下的子进程包括:
    Replication - 复制文件
    Deletion- 命名空间中的删除是立即的;从文件系统的删除是异步的
    Query - 应答来自客户端的请求
    Reaper  - 在磁盘发生故障后重新排列文件以进行复制
    Monitor  - 监视主机和设备的运行状况和状态
    ... ...
数据库
  存储MogileFS元数据(命名空间,哪些文件位于哪里)的数据库。这应该在HA配置中设置,所以你没有单点故障。
存储节点
  存储文件的位置。存储节点只是执行DELETE,PUT等的HTTP服务器。任何WebDAV服务器都很好,但建议使用mogstored。 mogilefsd可以配置为使用不同端口上的两个服务器... mogstored用于所有WebDAV操作(和边带监控),以及您的快速/轻量级HTTP服务器,用于GET操作。通常人们每个安装点有一个SATA磁盘,每个安装在/var/mogdata/devNN。

三、mogilefs架构说明
QQ截图20170103090511.png

四、安装部署
mogilefs+tracker部署在47,48,49上,三个安装一致,这里只写47的安装方法
1.安装mogilefs
下载地址:https://github.com/mogilefs/
由于mogilefs没有提供rpm包,这里使用原生的安装方法,如果需要使用rpm,去下载他人生成好的RPM

1.1.安装需要的依赖包:
1
yum install perl-DBD-mysql perl-CPAN perl-YAML gcc-c++



添加用户
1
adduser mogilefs



1.2.安装MogileFS-Server
1
2
3
4
5
unzip MogileFS-Server-master.zip
cd MogileFS-Server-master
per Makefile.PL
make
make install



1.3.安装MogileFS-Network
1
2
3
4
cd MogileFS-Network-master/
perl Makefile.PL
make
make install



1.4.安装MogileFS-Utils
1
2
3
4
cd MogileFS-Utils-master/
per Makefile.PL
make
make install



1.5.安装perl-MogileFS-Client
1
2
3
4
cd perl-MogileFS-Client-master/
per Makefile.PL
make
make install



1.6.Perl安装插件
1
2
3
4
5
6
7
8
9
10
perl -MCPAN -e 'install Danga::Socket'
perl -MCPAN -e 'install Gearman::Client'
perl -MCPAN -e 'install Gearman::Server'
perl -MCPAN -e 'install Gearman::Client::Async'
perl -MCPAN -e 'install Net::Netmask'
perl -MCPAN -e 'install IO::WrapTie'
perl -MCPAN -e 'install IO::AIO'
perl -MCPAN -e 'install List::MoreUtils'
perl -MCPAN -e 'install Path::Class'
perl -MCPAN -e 'install Perlbal'



2.配置数据库
数据库172.16.110.50
2.1.数据库安装略过
2.2.创建数据库及添加账号
添加root管理账号
1
2
MariaDB [mysql]> grant all on *.* to 'root'@'172.16.110.%' identified by 'ckl893';
Query OK, 0 rows affected (0.01 sec)



创建数据库:
1
2
MariaDB [mysql]> create database mogilefs;
Query OK, 1 row affected (0.00 sec)



添加mogilefs远程连接用户:
1
2
MariaDB [mysql]> grant all on mogilefs.* to 'moguser'@'172.16.110.%' identified by 'mogpass';
Query OK, 0 rows affected (0.00 sec)



2.3.生成数据表操作
修改生成脚本:
1
2
3
4
5
6
7
8
9
10
11
12
# vim mogdbsetup
....
my %args = (
            dbhost => "172.16.110.50",
            dbport => 3306,
            dbname => "mogilefs",
            dbrootuser => "root",
            dbrootpass => "ckl893",
            dbuser => "moguser",
            dbpass => "mogpass",
            );
....



在47上生成数据库表:
1
2
3
4
5
6
7
./mogdbsetup --dbhost=172.16.110.50 --dbname=mogilefs --dbuser=moguser --dbpassword=mogpass

This will attempt to setup or upgrade your MogileFS database.
It won't destroy existing data.
Run with --help for more information.  Run with --yes to shut up these prompts.

Continue? [N/y]: y



查看数据表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
MariaDB [mogilefs]> show tables;
+----------------------+
| Tables_in_mogilefs   |
+----------------------+
| checksum             |
| class                |
| device               |
| domain               |
| file                 |
| file_on              |
| file_on_corrupt      |
| file_to_delete       |
| file_to_delete2      |
| file_to_delete_later |
| file_to_queue        |
| file_to_replicate    |
| fsck_log             |
| host                 |
| server_settings      |
| tempfile             |
| unreachable_fids     |
+----------------------+
17 rows in set (0.00 sec)



3.配置文件及脚本
3.1.创建配置文件目录及权限
1
2
3
4
mkdir /etc/mogilefs/
chown -R mogilefs.mogilefs /etc/mogilefs/
cp /tmp/soft/MogileFS-Server-master/conf/mogilefsd.conf /etc/mogilefs/
cp /tmp/soft/MogileFS-Server-master/conf/mogstored.conf /etc/mogilefs/



3.2.mogilefsd配置文件说明
1
2
3
4
5
6
7
8
9
10
11
12
#vim /etc/mogilefs/mogilefsd.conf
daemonize = 1  守护进程运行
pidfile = /var/run/mogilefsd/mogilefsd.pid  pid文件
db_dsn = DBI:mysql:mogilefs:host=172.16.110.50  指定数据库连接地址
db_user = moguser       数据库连接用户
db_pass = mogpass       数据库连接密码
listen = 0.0.0.0:7001   tracker监听端口
conf_port = 7001       配置端口
query_jobs = 10        查询线程
delete_jobs = 1        删除线程
replicate_jobs = 5     复制线程
reaper_jobs = 1        复制线程



3.3.mogstored配置文件说明
1
2
3
4
5
6
#vim /etc/mogilefs/mogstored.conf
maxconns = 10000   #最大连接数
httplisten = 0.0.0.0:7500  #访问端口
mgmtlisten = 0.0.0.0:7501  #管理端口
docroot = /var/mogdata     #数据目录
pidfile = /var/run/mogstored/mogstored.pid #pid文件,如果脚本指定,这里必须有



3.4.mogilefsd启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
vim /etc/init.d/mogilefsd
#!/bin/sh
#
# mogilefsd    Startup script for the MogileFS tracker
#
# chkconfig: - 85 15
# description: MogileFS tracker
# processname: mogilefsd
# config: /etc/mogilefs/mogilefs.conf
# pidfile: /var/run/mogilefsd/mogilefsd.pid

# Source function library.
. /etc/init.d/functions

# Check that networking is up.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

mogilefsd="/usr/local/bin/mogilefsd"

MOGILEFS_CONF_FILE="/etc/mogilefs/mogilefsd.conf"
SUDO_USER=mogilefs

lockfile=/var/lock/subsys/mogilefsd

start() {
         echo -n $"Starting mogilefsd: "
         #sudo -u $SUDO_USER $mogilefsd -c $MOGILEFS_CONF_FILE --daemon --no_schema_check
         daemon --user $SUDO_USER $mogilefsd -c $MOGILEFS_CONF_FILE --daemon
         retval=$?
         echo
         [ $retval = 0 ] && touch ${lockfile}
         return $retval
}
stop() {
         echo -n $"Stopping $prog: "
         killproc mogilefsd
         retval=$?
         echo
         [ $retval = 0 ] && rm -f ${lockfile}
         return $retval
}
reload() {
     echo -n $"Reloading mogilefsd: "
     killproc mogilefsd -HUP
     retval=$?
     echo
}

# See how we were called.
case "$1" in
   start)
         start
         ;;
   stop)
         stop
         ;;
   status)
         status mogilefsd
         retval=$?
         ;;
   restart)
         stop
         start
         ;;
   reload)
         reload
         ;;
   *)
         echo $"Usage: mogilefsd {start|stop|restart|reload|status}"
         exit 1
esac

exit $retval



3.5.mogstored启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
vim /etc/init.d/mogstored
#!/bin/sh
#
# mogstored    Startup script for the Mogstored Storage
#
# chkconfig: - 85 15
# description: MogileFS storage
# processname: mogstored
# config: /etc/mogilefs/mogstored.conf
# pidfile: /var/run/mogstored/mogstored.pid

# Source function library.
. /etc/init.d/functions

# Check that networking is up.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

mogstored="/usr/local/bin/mogstored"

MOGILEFS_CONF_FILE="/etc/mogilefs/mogstored.conf"
SUDO_USER=mogilefs

lockfile=/var/lock/subsys/mogstored

start() {
         echo -n $"Starting mogstored: "
#         sudo -u $SUDO_USER $mogilefsd -c $MOGILEFS_CONF_FILE --daemon --no_schema_check
         $mogstored --config=$MOGILEFS_CONF_FILE --daemon
#         daemon --user $SUDO_USER $mogstored -c $MOGILEFS_CONF_FILE --daemon
         retval=$?
         echo
         [ $retval = 0 ] && touch ${lockfile}
         return $retval
}
stop() {
         echo -n $"Stopping $prog: "
         killproc mogstored
         retval=$?
         echo
         [ $retval = 0 ] && rm -f ${lockfile}
         return $retval
}
reload() {
     echo -n $"Reloading mogstored: "
     killproc mogstored -HUP
     retval=$?
     echo
}

# See how we were called.
case "$1" in
   start)
         start
         ;;
   stop)
         stop
         ;;
   status)
         status mogstored
         retval=$?
         ;;
   restart)
         stop
         start
         ;;
   reload)
         reload
         ;;
   *)
         echo $"Usage: mogstored {start|stop|restart|reload|status}"
         exit 1
esac

exit $retval



3.6.启动进程:
启动查看mogilefsd进程
1
2
3
4
5
6
7
8
9
10
# systemctl start mogilefsd.service
# ss -ntl
State      Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
LISTEN     0      128                                     *:111                                                 *:*                  
LISTEN     0      128                                     *:22                                                  *:*                  
LISTEN     0      128                                     *:7001                                                *:*                  
LISTEN     0      100                             127.0.0.1:25                                                  *:*                  
LISTEN     0      128                                    :::111                                                :::*                  
LISTEN     0      128                                    :::22                                                 :::*                  
LISTEN     0      100                                   ::1:25                                                 :::*



启动查看mogstored进程:
1
2
3
4
5
6
7
8
9
10
11
12
# systemctl status mogstored.service
# ss -ntl
State      Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
LISTEN     0      128                                     *:7500                                                *:*                  
LISTEN     0      128                                     *:7501                                                *:*                  
LISTEN     0      128                                     *:111                                                 *:*                  
LISTEN     0      128                                     *:22                                                  *:*                  
LISTEN     0      128                                     *:7001                                                *:*                  
LISTEN     0      100                             127.0.0.1:25                                                  *:*                  
LISTEN     0      128                                    :::111                                                :::*                  
LISTEN     0      128                                    :::22                                                 :::*                  
LISTEN     0      100                                   ::1:25                                                 :::*



4.添加节点
为每个host增加节点,方法一直,随便选择一个tracker即可
4.1.增加节点:
1
2
3
# mogadm --trackers=172.16.110.47:7001 host add node1 --ip=172.16.110.47 --status=alive
# mogadm --trackers=172.16.110.48:7001 host add node2 --ip=172.16.110.48 --status=alive
# mogadm --trackers=172.16.110.49:7001 host add node3 --ip=172.16.110.49 --status=alive



删除节点:
1
mogadm --trackers=172.16.110.49:7001 host delete node1



查看增加的节点:
1
2
3
4
5
6
7
# mogadm --trackers=172.16.110.49:7001 host list        
node1 [1]: alive
  IP:       172.16.110.47:7500
node2 [2]: alive
  IP:       172.16.110.48:7500
node3 [3]: alive
  IP:       172.16.110.49:7500



4.2.添加设备存储节点:
(注意,最后一列的ID号同创建的目录的序号,如dev4 就是 4)
1
2
3
# mogadm --trackers=172.16.110.49:7001 device add node1 4
# mogadm --trackers=172.16.110.49:7001 device add node2 5
# mogadm --trackers=172.16.110.49:7001 device add node3 6



创建物理存储节点路径:
node1:
1
2
mkdir -pv /var/mogdata/dev4
chown -R mogilefs.mogilefs /var/mogdata/dev4



node2:
1
2
mkdir -pv /var/mogdata/dev5
chown -R mogilefs.mogilefs /var/mogdata/dev5



node3:
1
2
mkdir -pv /var/mogdata/dev6
chown -R mogilefs.mogilefs /var/mogdata/dev6



查看添加的节点:   
1
2
3
4
5
6
7
8
9
10
# mogadm --trackers=172.16.110.49:7001 device list
node1 [1]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev4:   alive      1.786      6.200      7.986        100
node2 [2]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev5:   alive      1.792      6.194      7.986        100
node3 [3]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev6:   alive      1.928      6.059      7.986        100



删除设备存储节点:
1
mogadm --trackers=172.16.110.49:7001 device mark node1 1 dead



4.3.检查节点状态:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# mogadm --trackers=172.16.110.49:7001 check
Checking trackers...
  172.16.110.49:7001 ... OK
Checking hosts...
  [ 1] node1 ... OK
  [ 2] node2 ... OK
  [ 3] node3 ... OK
Checking devices...
  host device         size(G)    used(G)    free(G)   use%   ob state   I/O%
  ---- ------------ ---------- ---------- ---------- ------ ---------- -----
  [ 1] dev4             7.986      1.786      6.200  22.37%  writeable   0.0
  [ 2] dev5             7.986      1.793      6.193  22.45%  writeable   0.0
  [ 3] dev6             7.986      1.929      6.058  24.15%  writeable   0.0
  ---- ------------ ---------- ---------- ---------- ------
             total:    23.959      5.508     18.451  22.99%



5.添加域
5.1.创建域:
1
2
3
# mogadm --trackers=172.16.110.49:7001 domain add img
# mogadm --trackers=172.16.110.49:7001 domain add html
# mogadm --trackers=172.16.110.49:7001 domain add file



查看域信息:
1
2
3
4
5
6
# mogadm --trackers=172.16.110.49:7001 domain list   
domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
file                 default                   2        MultipleHosts() NONE   
html                 default                   2        MultipleHosts() NONE   
img                  default                   2        MultipleHosts() NONE



6.添加类
默认会创建默认类,这里我们创建测试:
6.1.默认类:
1
2
3
4
5
6
# mogadm --trackers=172.16.110.49:7001 class list
domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
file                 default                   2        MultipleHosts() NONE   
html                 default                   2        MultipleHosts() NONE   
img                  default                   2        MultipleHosts() NONE



6.2.创建自定义类:
1
# mogadm --trackers=172.16.110.49:7001 class add html ckltext --mindevcount=3



查看类列表:
1
2
3
4
5
6
7
# mogadm --trackers=172.16.110.49:7001 class list
domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
file                 default                   2        MultipleHosts() NONE   
html                 ckltext                   3        MultipleHosts() NONE   
html                 default                   2        MultipleHosts() NONE   
img                  default                   2        MultipleHosts() NONE



7.文件上传
7.1.上传测试:
1
2
3
# mogupload --trackers=172.16.110.49:7001 --domain=file --key='ckl_cron.txt' --file=/data/ckl_cron.txt
# mogupload --trackers=172.16.110.49:7001 --domain=img --key='001' --file=/data/001.jpg
# mogupload --trackers=172.16.110.49:7001 --domain=html --class=ckltext --key='index.html' --file=/data/index.html 上传到指定域指定类



7.2.查看文件上传信息
1
2
3
4
5
6
7
8
9
# mogfileinfo --trackers=172.16.110.49:7001 --domain=file --key='ckl_cron.txt'
- file: ckl_cron.txt
     class:              default
  devcount:                    1
    domain:                 file
       fid:                   17
       key:         ckl_cron.txt
    length:                   78
- http://172.16.110.48:7500/dev5/0/000/000/0000000017.fid



1
2
3
4
5
6
7
8
9
# mogfileinfo --trackers=172.16.110.49:7001 --domain=img --key='001'   
- file: 001
     class:              default
  devcount:                    1
    domain:                  img
       fid:                   18
       key:                  001
    length:                68539
- http://172.16.110.47:7500/dev4/0/000/000/0000000018.fid



1
2
3
4
5
6
7
8
9
# mogfileinfo --trackers=172.16.110.49:7001 --domain=html --key='index.html'
- file: index.html
     class:              ckltext
  devcount:                    1
    domain:                 html
       fid:                   19
       key:           index.html
    length:                  131
- http://172.16.110.48:7500/dev5/0/000/000/0000000019.fid



7.3.查看设备存储信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# mogstats --config=/etc/mogilefs/mogilefsd.conf
Fetching statistics... (all)

Statistics for devices...
  device     host                   files     status
  ---------- ---------------- ------------ ----------
  dev4       node1               1      alive
  dev5       node2               3      alive
  ---------- ---------------- ------------ ----------

Statistics for file ids...
  Max file id: 20

Statistics for files...
  domain               class           files    size (m)  fullsize (m)
  -------------------- ----------- ---------- ----------- -------------
  file                 default             1           0             0
  html                 ckltext             1           0             0
  img                  default             2           0             0
  -------------------- ----------- ---------- ----------- -------------

Statistics for replication...
  domain               class        devcount      files
  -------------------- ----------- ---------- ----------
  file                 default             1          1
  html                 ckltext             1          1
  img                  default             1          2
  -------------------- ----------- ---------- ----------

Statistics for replication queue...
  status                      count
  -------------------- ------------
  deferred                        4
  -------------------- ------------

Statistics for delete queue...
  status                      count
  -------------------- ------------
  -------------------- ------------

Statistics for general queues...
  queue           status                      count
  --------------- -------------------- ------------
  --------------- -------------------- ------------

done



8.访问测试
http://172.16.110.48:7500/dev5/0/000/000/0000000017.fid
QQ截图20170103090524.png
http://172.16.110.48:7500/dev5/0/000/000/0000000019.fid
QQ截图20170103090529.png
http://172.16.110.48:7500/dev5/0/000/000/0000000020.fid
QQ截图20170103090533.png
9.nginx反向代理配置
下载nginx_mogilefs_module-1.0.4.tar.gz模块
地址:http://www.grid.net.ru/nginx/mogilefs.en.html
9.1.安装zlib
1
2
3
4
5
tar -xf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make insatll



9.2.安装pcre
1
2
3
4
5
tar -xf pcre-8.37.tar.gz
cd pcre-8.37
./configure
make
make install



9.3.安装openssl
1
2
3
4
5
tar -xf openssl-1.0.2.tar.gz
cd openssl-1.0.2
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make insatll



9.4.安装nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
tar -xf nginx-1.6.3.tar.gz
cd nginx-1.6.3/
./configure  --prefix=/app/local/nginx \
--pid-path=/app/local/nginx \
--user=nginx \
--group=nginx \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-pcre=/tmp/soft/pcre-8.37 \
--with-openssl=/tmp/soft/openssl-1.0.2 \
--add-module=/tmp/soft/nginx_mogilefs_module-1.0.4
make
make isntall



9.5.nginx配置
参考http://www.grid.net.ru/nginx/mogilefs.en.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
user  nginx;
worker_processes  8;
error_log  /app/local/log/nginx/error.log warn;
pid        /app/local/nginx/logs/nginx.pid;

events {
        use epoll;
        worker_connections  5120;
        multi_accept on;   
}


http {

    server_names_hash_bucket_size 64;
    proxy_headers_hash_max_size 51200;
    proxy_headers_hash_bucket_size 6400;
    include       /app/local/nginx/conf/mime.types;
    default_type  application/octet-stream;

    log_format main "$http_cdn_src_ip | $time_local | $request | $status | $body_bytes_sent | "
                "$request_body | $content_length | $http_referer | $http_user_agent | "
                "$http_x_forwarded_for | $remote_addr | $upstream_response_time | $request_time | $http_tracecode";

    access_log  /app/local/log/nginx/access.log  main;
    client_header_buffer_size 16k;
    large_client_header_buffers 4 64k;

    server_tokens off;
    sendfile    on;
    tcp_nopush  on;
    tcp_nodelay on;

    keepalive_timeout  65;
    client_header_timeout 20;
    client_body_timeout 20;
    reset_timedout_connection on;
    send_timeout 30;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 4;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    open_file_cache max=409600 inactive=30s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    upstream mog_tracker {
        server 172.16.110.47:7001;
        server 172.16.110.48:7001;
        server 172.16.110.49:7001;
    }

    server {

    listen       80;
    location ~* /html/ {
        mogilefs_tracker mog_tracker;
        mogilefs_domain html;
        mogilefs_pass  {
             proxy_pass $mogilefs_path;
             proxy_hide_header Content-Type;
             proxy_buffering off;
        }
    }

    location ~* /img/  {
       mogilefs_tracker mog_tracker;
       mogilefs_domain img;
       mogilefs_pass  {
            proxy_pass $mogilefs_path;
            proxy_hide_header Content-Type;
            proxy_buffering off;
       }
    }

    location ~* /file/ {  
            mogilefs_tracker mog_tracker;
            mogilefs_domain file;
            mogilefs_methods GET PUT DELETE;
            mogilefs_pass {
                proxy_pass $mogilefs_path;
                proxy_hide_header Content-Type;
                proxy_buffering off;
           }
     }
   }

}



启动nginx:
1
systemctl start nginx.service



10.测试文件
QQ截图20170103090547.png


错误说明:
启动报错1:
1
2
3
4
5
6
7
8
9
10
11
12
Jan 01 12:05:42 www3.ckl.com runuser[48364]: pam_unix(runuser:session): session opened for user root by (uid=0)
Jan 01 12:05:42 www3.ckl.com mogilefsd[48363]: Starting mogilefsd: Can't locate Sys/Syslog.pm in @INC (@INC contains: lib /us...ne 25.
Jan 01 12:05:42 www3.ckl.com mogilefsd[48363]: BEGIN failed--compilation aborted at /usr/local/share/perl5/MogileFS/Server.pm line 25.
Jan 01 12:05:42 www3.ckl.com mogilefsd[48363]: Compilation failed in require at /usr/local/bin/mogilefsd line 16.
Jan 01 12:05:42 www3.ckl.com mogilefsd[48363]: BEGIN failed--compilation aborted at /usr/local/bin/mogilefsd line 16.
Jan 01 12:05:42 www3.ckl.com mogilefsd[48363]: [FAILED]
Jan 01 12:05:42 www3.ckl.com systemd[1]: mogilefsd.service: control process exited, code=exited status=1
Jan 01 12:05:42 www3.ckl.com systemd[1]: Failed to start SYSV: MogileFS tracker.
Jan 01 12:05:42 www3.ckl.com systemd[1]: Unit mogilefsd.service entered failed state.
Jan 01 12:05:42 www3.ckl.com systemd[1]: mogilefsd.service failed.
Warning: mogilefsd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Hint: Some lines were ellipsized, use -l to show in full.



解决1:
1
yum install perl-core



启动报错2:
1
2
3
Jan 01 13:35:29 www3.ckl.com systemd[1]: Starting SYSV: MogileFS storage...
Jan 01 13:35:30 www3.ckl.com mogstored[50356]: Starting mogstored:
Jan 01 13:35:30 www3.ckl.com systemd[1]: PID file /var/run/mogstored/mogstored.pid not readable (yet?) after start.



解决2:
1
配置文件增加 pidfile = /var/run/mogstored/mogstored.pid



编译nginx报错:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/tmp/soft/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c: In function ‘ngx_http_mogilefs_handler’:
/tmp/soft/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c:320:12: error: ‘ngx_peer_connection_t’ has no member named ‘lock’
     u->peer.lock = &r->connection->lock;
            ^
/tmp/soft/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c:320:34: error: ‘ngx_connection_t’ has no member named ‘lock’
     u->peer.lock = &r->connection->lock;
                                  ^
/tmp/soft/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c: In function ‘ngx_http_mogilefs_create_request’:
/tmp/soft/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c:739:37: error: variable ‘request’ set but not used [-Werror=unused-but-set-variable]
     ngx_str_t                       request, domain;
                                     ^
/tmp/soft/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c: In function ‘ngx_http_mogilefs_create_spare_location’:
/tmp/soft/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c:1532:39: error: variable ‘pclcf’ set but not used [-Werror=unused-but-set-variable]
     ngx_http_core_loc_conf_t  *clcf, *pclcf, *rclcf;
                                       ^
cc1: all warnings being treated as errors
make[1]: *** [objs/addon/nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.o] Error 1
make[1]: Leaving directory `/tmp/soft/nginx-1.8.1'
make: *** [build] Error 2



解决:
1
CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g



去掉 -Werror
1
CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -g



(系统7.3,nginx:1.6.3,以后的版本会编译出错,跳过也不行)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-323044-1-1.html 上篇帖子: mogilefs + nginx 图片分布式存储 下篇帖子: Nginx+MogileFS安装与配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表