Mogilefs使用Nginx實現代理訪問

MogileFS介紹:

 MogileFS是一個開源的分布式文件存儲系統,由LiveJournal旗下的DangaInteracitve公司研發??芍С治募詣觽浞堑墓δ埽峁└呖捎眯院透呖蓴U展性。

MogileFS組件:

 trackers:

  MoglieFS的調度器,是mogileFS的核心,訪問入口。

 功能:1、replication:節點之間文件復制

     2、deletion:空間數據刪除

     3、queryworker:響應客戶端請求

     4、reaper:在存儲失敗后將文件復制請求重新放到隊列中

     5、monitor:檢測主機和設備dev的健康和狀態

 database: 

  功能:1、保存mogilefs的元數據,一般使用mysql,建議使用冗余方案以保證其可用性

      2、mogilefs有專門組件mogdbsetup,可用于實現初始化數據庫

 storage:

  功能:1、mogstored(進程名),一個準備好的mogstored節點,可通過mogadm加入到現有的集群中;

      2、存儲節點需要定義"設備"(dev),每個dev都有其唯一的ID號;

 客戶端:client

  功能:客戶端用于mogilefs建立通信的接口

MogileFS的特點:

  1、工作于應用層

  2、無單點

  3、自動文件復制

  4、傳輸中立,無線特殊協議(http和nfs)

  5、名稱空間

  6、無須RAID,具有比RAID更好的可靠性

  7、不共享任何數據

實驗環境:

2.png

 node1: 172.16.2.12 

 node2: 172.16.2.13

 node3:172.16.2.14

 node4:172.16.2.15

所需軟件:

3.png

一、安裝mogilefs-server

1、安裝trakcers

[root@node1 mogilefs]# yum -y install MogileFS-* 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  Perlbal-1.78-1.el6.noarch.rpm

2、數據庫用戶授權

MariaDB [(none)]> GRANT ALL  ON *.* TO  'root'@'172.16.2.1%' IDENTIFIED BY '123456' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

3、初始化數據庫

[root@node1 ~]# mogdbsetup  --dbhost=172.16.2.12 --dbport=3306 --dbname=mogilefs --dbrootuser=root --dbrootpass=123456 --dbuser=mogile --dbpass=mogpass --type=MySQL --yes
相關選擇解釋:
 --dbhost: mysql服務器地址
 --dbport:mysql服務器的監聽端口
 --dbname: 創建用于mogilefs的數據的名稱
 --dbrootuser:root用戶
 --dbrootpass:root用戶的密碼
 --dbuser:新創建的mogilefs數據庫的管理用戶
 --dbpass:新創建的mogilefs的數據的管理用戶密碼
 --type:指明數據庫類型為mysql
 --yes:自動回答yes

4、修改mogilefs的配置文件

[root@node1 mogilefs]# vim  /etc/mogilefs/mogilefsd.conf 
# Enable daemon mode to work in background and use syslog
daemonize = 1  \\以獨立守護進行運行
# Where to store the pid of the daemon (must be the same in the init script)
pidfile = /var/run/mogilefsd/mogilefsd.pid  \\pid文件存放路徑
# Database connection information
db_dsn = DBI:mysql:mogilefs:host=172.16.2.12  \\數據庫地址
db_user = mogile   \\mogilefs所授權的用戶
db_pass = mogpass   \\mogilfs所授權的用戶密碼
# IP:PORT to listen on for mogilefs client requests
listen = 0.0.0.0:7001   \\修改為監聽在所有地址
# Optional, if you don't define the port above.
conf_port = 7001    \\定義監聽端口,默認為7001
# Number of query workers to start by default.
query_jobs = 10   \\默認啟動10個查詢線程
# Number of delete workers to start by default.
delete_jobs = 1   \\默認求啟動1個刪除線程
# Number of replicate workers to start by default.
replicate_jobs = 5  \\默認啟動5個復制線程
# Number of reaper workers to start by default.
# (you don't usually need to increase this)
reaper_jobs = 1  \\響應客戶端請求,在磁盤失敗后將文件復制請求重新放到隊列中
# Number of fsck workers to start by default.
# (these can cause a lot of load when fsck'ing)
#fsck_jobs = 1  \\檢查磁盤設備是否損壞,默認沒有啟用
# Minimum amount of space to reserve in megabytes
# default: 100  \\默認保留100M空間
# Consider setting this to be larger than the largest file you
# would normally be uploading.
#min_free_space = 200      \\最小空閑空間200M
# Number of seconds to wait for a storage node to respond.
# default: 2 \\等待存儲節點響應的時間,默認為2s
# Keep this low, so busy storage nodes are quickly ignored.
#node_timeout = 2 \\等待節點超時時長
# Number of seconds to wait to connect to a storage node.
# default: 2 \\連接存儲節點的超時時長
# Keep this low so overloaded nodes get skipped.
#conn_timeout = 2  
# Allow replication to use the secondary node get port,
# if you have apache or similar configured for GET's
#repl_use_get_port = 1

5、啟動mogilefs

[root@node1 ~]# /etc/init.d/mogilefsd start

6、查看監聽端口:默認為7001

[root@node1 ~]# netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      977/sshd            
tcp        0      0 0.0.0.0:7001                0.0.0.0:*                   LISTEN      4773/mogilefsd

二、安裝配置mogilefs-client

1、安裝mogilefs-client

[root@node2 mogilefs]# yum -y install MogileFS-* Perlbal-1.78-1.el6.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  perl-IO-AIO

2、各存儲節點準備好存儲塊設備,然后分區格式化

[root@node2 ~]# fdisk  -l | grep "/dev/sdb1"
/dev/sdb1               1        1306    10490413+  83  Linux
[root@node3 ~]#  fdisk  -l | grep "/dev/sdb1"
/dev/sdb1               1        1306    10490413+  83  Linux

3、創建掛載點

[root@node2 mogilefs]# mkdir /mogilefs;chown -R mogilefs.mogilefs /mogilefs

4、設置自動掛載設備

[root@node2 mogilefs]# cat /etc/fstab  | grep "^/dev/sdb1"
/dev/sdb1              /mogilefs                ext4    defaults        0 0
[root@node2 mogilefs]# mount -a

5、修改mogstored的配置文件

[root@node2 mogilefs]# cat  /etc/mogilefs/mogstored.conf 
maxconns = 10000   \\定義最大連接數
httplisten = 0.0.0.0:7500 \\定義httpd監聽端口
mgmtlisten = 0.0.0.0:7501  \\定義mgm的監聽端口
docroot = /mogilefs  \\修改為存儲設備的掛載點

6、啟動mogstorage服務

[root@node2 mogilefs]# netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name          
tcp        0      0 0.0.0.0:7500                0.0.0.0:*                   LISTEN      1512/mogstored      
tcp        0      0 0.0.0.0:7501                0.0.0.0:*                   LISTEN      1512/mogstored

7、配置node3節點

mode3與node2節點的配置一樣,這里就不在描述了

三、在trackers節點添加存儲節點

1、在存儲節點創建共享塊設備

[root@node2 ~]# mkdir /mogilefs/dev1;chown -R  mogilefs.mogilefs /mogilefs/
[root@node3 ~]#  mkdir /mogilefs/dev2;chown -R  mogilefs.mogilefs /mogilefs/

2、將存儲節點添加到trackers

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 host add node2.linux.com --ip=172.16.2.13 --status=alive
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 host add node3.linux.com --ip=172.16.2.14 --status=alive

3、查看添加的主機狀態

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  host list
node2.linux.com [1]: alive
  IP:       172.16.2.13:7500

node3.linux.com [2]: alive
  IP:       172.16.2.14:7500

4、添加塊設備到trackers

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  device  add node2.linux.com 1
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  device  add node3.linux.com 2 
注意:1或者2要與存儲節點創建的dev#(dev1,dev2)一致

5、查看添加的塊設備信息

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  device  list
node2.linux.com [1]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev1:   alive      0.021      9.200      9.222        100

node3.linux.com [2]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev2:   alive      2.162     32.931     35.093        100

6、創建domain

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  domain add mylinux  \\新添加mylinxu域
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001  domain list  \\查看域信息
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 mylinux              default                   2        MultipleHosts() NONE

7、添加class

[root@node1 ~]# mogadm --trackers=172.16.2.12:7001   class add  mylinux  linux  \\在mylinux中添加linux 類
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001   class list \\查看類信息
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 mylinux              default                   2        MultipleHosts() NONE   
 mylinux              linux                     2        MultipleHosts() NONE

8、上傳圖片到存儲節點

[root@node1 ~]# mogupload --trackers=172.16.2.12:7001  --domain=mylinux --key='/1.jpg' --file='./1.jpg'

9、查看圖片上傳之后的信息

[root@node1 ~]# mogfileinfo --trackers=172.16.2.12:7001  --domain=mylinux --key='/1.jpg' 
- file: /1.jpg
     class:              default
  devcount:                    2
    domain:              mylinux
       fid:                    2
       key:               /1.jpg
    length:                13224
 - http://172.16.2.13:7500/dev1/0/000/000/0000000002.fid  
 - http://172.16.2.13:7500/dev1/0/000/000/0000000002.fid
 \\在瀏覽器中訪問上面路徑可以瀏覽到上傳的圖

訪問測試:

21.png

四、編譯配置Nginx

1、編譯安裝Nginx

[root@node4 mogile]# tar xf nginx-1.8.0.tar.gz -C /usr/src
[root@node4 mogile]# tar xf nginx_mogilefs_module-1.0.4.tar.gz  -C /usr/src
[root@node4 src]# cd nginx-1.8.0/
[root@node4 nginx-1.8.0]# useradd  nginx
[root@node4 nginx-1.8.0]#./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@node4 nginx-1.8.0]# make;make install

2、nginx啟動腳本:

Mogilefs使用Nginx實現代理訪問nginx.zip

3、編輯nginx配置文件,使其支持mogilefs

[root@node4 ~]# vim /etc/nginx/nginx.conf
   location /image {
          mogilefs_tracker 172.16.2.12:7001;
          mogilefs_domain  mylinux;
          mogilefs_pass {
            proxy_pass $mogilefs_path;
            proxy_hide_header Content-Type;
            proxy_buffering off;
          }
         }

4、測試nginx配置語法,并啟動nginx

[root@node4 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node4 ~]# /etc/init.d/nginx start

5、打開瀏覽器訪問測試:

22.png

知識擴展:

MogileFS-Utils相關命令介紹:
mogupload:用于上傳文件的命令
mogfileinfo:用于查看上傳文件的信息
mogadm管理命令:
    check:檢查主機信息
    stats:查看主機信息
    host:添加、修改trackers中的主機
    device:添加、修改存儲節點
    domain:添加、修改域信息
    class:填寫、修改類等信息
    slave:從節點的信息
    fsck:檢查修復提供的存儲節點
    rebalance:調整節點之間存儲不平衡等信息
    setting:mogilefs的設置信息

nginx的mogilefs的第三方模塊使用地址:

http://www.grid.net.ru/nginx/mogilefs.en.html

原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/6812

(0)
馬行空馬行空
上一篇 2015-08-06
下一篇 2015-08-11

相關推薦

  • Linux權限管理與grep命令應用(第四周)

    第四周作業 1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限 [root@localhost ~]# cp -r /etc/skel/ /home/tuser1 [root@localhost ~]# ch…

    Linux干貨 2016-09-15
  • Mariadb數據庫備份恢復系列(二):xtrabackup物理備份工具之完全備份

    實驗二:利用xtrabackup+二進制日志實現完全備份和恢復數據庫 1、安裝xtrabackup軟件包 2、驗證數據的存儲引擎類型 3、查看數據初始狀態 4、利用innobackupex進行完全備份 5、進行apply-log操作 6、查看備份出來的文件的信息 7、模擬在完全備份后,對數進行修改,以測試通過二進制日志還原完全備份后尚未來得及備份的變化的數據…

    Linux干貨 2016-11-24
  • nginx配置(三)

    ngx_http_upstream_module模塊     #分流The ngx_http_upstream_module module is used to define groups of servers that can be referenced by the proxy_pass, fastcgi_pass, uwsgi_pa…

    Linux干貨 2017-05-08
  • 第一次發微博

    第一次申請微博,第一次發微博,覺得很難

    Linux干貨 2017-01-06
  • Centos7 PHP-FPM源碼安裝

    PHP-FPM源碼安裝 安裝必要組件 yum install -y openssl-devel traceroute libtool unzip gcc gcc-c++ autoconf net-snmp-devel vim wget sysstat lrzsz  man tree mysql-devel ntpdate rsync libxml2…

    系統運維 2016-09-06
  • vim學習

    vim學習 認識與介紹   vim是一款linux下查看編輯文本文件的一款文本編輯器。一般用來查看修改配置文件、日志文件等文本類文件。 打開文件   vim [OPTIONS] [FILE …]     +#: 打開文件后,直接讓文件處于第#行     +/…

    Linux干貨 2016-10-09
欧美性久久久久