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、不共享任何數據
實驗環境:
node1: 172.16.2.12
node2: 172.16.2.13
node3:172.16.2.14
node4:172.16.2.15
所需軟件:
一、安裝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 \\在瀏覽器中訪問上面路徑可以瀏覽到上傳的圖
訪問測試:
四、編譯配置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啟動腳本:
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、打開瀏覽器訪問測試:
知識擴展:
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