亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

Nginx反代Mogilefs分布式儲存示例詳解

2024-08-30 12:30:02
字體:
來源:轉載
供稿:網友

一、分布式存儲系統簡介

隨著信息技術不斷的發展,給我們帶來便利的同時,不斷增加的數據量級、信息之間的連接關聯越來越復雜、數據訪問的并發量日益增加對I/O的要求越來越高、數據類型越來越復雜等難題也成為信息技術繼續高速發展亟需解決的難題。分布式存儲系統的出現在很大程度上解決了以上大部分難題。

分布式存儲系統,是將數據分散存儲在多臺獨立的設備上。傳統的網絡存儲系統采用集中的存儲服務器存放所有數據,存儲服務器成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲應用的需要。分布式存儲系統采用可擴展的系統結構,利用多臺存儲服務器分擔存儲負荷,利用位置服務器定位存儲信息,它不但提高了系統的可靠性、可用性和存取效率,還易于擴展。

分布式存儲系統在接口類型上可分為通用分布式儲存和專用分布式儲存。通用分布式儲存是指沒有文件系統接口,需要通過API接口進行訪問;專用分布式儲存也稱為分布式文件系統,它們一般都會有文件系統接口,可以直接掛載。通用分布式儲存有mogilefs、fastdfs等,專用分布式儲存系統有moosefs等。

二、Mogilefs

MogileFS是一個開源的分布式文件存儲系統,MogileFS適用于存儲海量小文件的工作場景,由LiveJournal旗下的Danga Interactive公司開發,該團隊開發了包括 Memcached、MogileFS、Perlbal 等多個知名的開源項目。

1.Mogilefs架構圖:

Nginx,Mogilefs,分布式儲存

2.組成Mogliefs的組件:

1.Trackers(mogilefsd):Mogliefs的核心組件,主要功能是(Replication)節點文件復制、(Deletion)文件刪除、(Query)元數據查詢、(Monitor)健康監測、(Reaper)儲存失敗重置等等。它通常稱為元數據服務器,但它不會去儲存元數據,而是將元數據儲存在如MySQL這一類的數據庫中。為保證架構的可靠性,Trackers一般有多個。Trackers可看作是一個旁掛式代理,只負責處理元數據信息。

2.數據庫:數據庫用來存放Mogliefs的元數據,而由Trackers來管理數據。因此通常建議做HA。

3.mogstored(儲存節點):實際文件存放的地方。通常會將實際文件保存至少兩份副本。

3.示例演示拓撲圖

在三個節點同時安裝Trackers和mogstored,選擇其中一個節點安裝MySQL。在生產環境最好是能單獨將MySQL部署并且做主從復制。Trackers和mogstored也可以分開部署在不同節點上,這些都需要根據實際的生產環境來決定。這里主要是演示mogilefs,不做MySQL主從復制演示。若想要Mogilefs能掛載,可以用FUSE來實現。

需要注意的是:mogilefs存儲的文件URL很特殊(后面會解釋mogilefs文件名生產的過程),如存儲一張圖片時文件URL可能會是類似6060/0000/0000/0000/00000021.jpg這樣的格式,對用戶來講就不太友好,用戶可能需要直觀的類似image.hello.com/21.jpg這樣的URL。所以通常會使用Nginx來反代Mogilefs。

Nginx,Mogilefs,分布式儲存

4.系統環境與安裝

Mogilefs是一個相對較年代較久但成熟的分布式儲存,考慮到可能在Centos7上會出現兼容問題,這里Centos6來演示。

操作系統:CentOS release 6.6

Mogilefs:2.46

nginx:1.10

mysql:5.1

IP分配:

n1:192.168.29.111,n2:192.168.29.112,n3:192.168.29.113,n4:192.168.29.114

結構如上圖所示。

1.在n1節點上安裝MySQL、mogilefsd、mogstored,并將n1配置為Trackers、Storage Node

MySQL直接用yum安裝。

~]# yum install -y mysql mysql-server

安裝Mogilefs的Trackers和Storage Node組件,安裝時一定要安裝Perl相關的依賴包,依賴包有:

perl-Danga-Socket-1.61-1.el6.rf.noarch.rpmperl-IO-stringy-2.110-1.2.el6.rfx.noarch.rpmperl-Net-Netmask-1.9015-8.el6.noarch.rpmPerlbal-1.78-1.el6.noarch.rpmperl-Perlbal-1.78-1.el6.noarch.rpmPerlbal-doc-1.78-1.el6.noarch.rpmperl-IO-AIO-3.71-2.el6.x86_64.rpm

上述依賴包一定要安裝后才能安裝Mogilefs。安裝組件:

yum install -y MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm MogileFS-Server-2.46-2.el6.noarch.rpm

配置MogileFS-Server-mogilefsd:

~]# vim /etc/mogilefs/mogilefsd.conf #Mogilfs Trackers的主配置文件
# Enable daemon mode to work in background and use syslogdaemonize = 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 informationdb_dsn = DBI:mysql:mogilefs:host=192.168.29.111 #數據庫的地址db_user = moguser #配置數據庫的用戶名及密碼db_pass = 123456# IP:PORT to listen on for mogilefs client requestslisten = 0.0.0.0:7001 #監聽的地址與端口# Optional, if you don't define the port above.conf_port = 7001 #默認端口# Number of query workers to start by default.query_jobs = 10 #查詢進程數量# Number of delete workers to start by default.delete_jobs = 1 # Number of replicate workers to start by default.replicate_jobs = 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# Consider setting this to be larger than the largest file you# would normally be uploading.#min_free_space = 200# Number of seconds to wait for a storage node to respond.# default: 2# 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

修改完配置后,進入數據庫創建一個可以遠程連接的root用戶,或者使用mogdbsetup初始化數據庫:

mysql> GRANT ALL ON mogilefs.* TO 'moguser'@'192.168.29.%' IDENTIFIED BY '123456'; #創建用戶moguser,擁有管理mogilefs庫的所有權限,并允許192.168.29.*的用戶遠程連接。mysql> FLUSH PRIVILEGES;mysql> quit
~]# mogdbsetup --dbhost=127.0.0.1 --dbuser=moguser --dbpass=123456

初始化完成后可以在MySQL中看到創建好的mogilefs庫以及里面的表:

Nginx,Mogilefs,分布式儲存

啟動mogilefs并確認7001端口處于監聽狀態:

~]# service mogilefsd startStarting mogilefsd      [ OK ]~]# ss -lnt

注:可以在n2、n3節點都安裝Trackers服務,從而消除單點故障風險也能平均I/O壓力。

3.在n1上配置Storage Node

Storage Node配置文件路徑為/etc/mogilefs/mogstored.conf:

~]# vim /etc/mogilefs/mogstored.confmaxconns = 10000 #最大并發連接數httplisten = 0.0.0.0:7500 #Mogilefs數據的傳輸是通過http協議實現的,這里是監聽的地址和端口mgmtlisten = 0.0.0.0:7501 #健康監測的監聽地址和端口docroot = /mogliefs/mogdata #數據的存儲路徑,目錄的屬組和屬主必須是mogilefs

創建數據存儲目錄并修改屬組和屬主為mogilefs:

~]# mkdir -pv /mogliefs/mogdata~]# chown -R mogilefs.mogilefs /mogliefs/

啟動mogstored,查看進程是否正常啟動端口是否監聽:

~]# service mogstored start~]# ss -lnt #監聽端口為7500、7501

4.按照n1的步驟在節點n2、n3上安裝Mogilefs,并將n1上的配置文件復制到n2、n3。

~]# scp /etc/mogilefs/*.conf root@192.168.29.112:/etc/mogilefs/~]# scp /etc/mogilefs/*.conf root@192.168.29.113:/etc/mogilefs/

啟動mogstored服務并確認監聽:

~]# service mogstored start~]# ss -lnt #監聽端口為7500、7501

5.用在n1上用mogadm命令將所有節點整合成集群。

添加存儲節點,并檢查:

1 ~]# mogadm host add 192.168.29.111 --ip=192.168.29.111 --port=7500 --status=alive2 ~]# mogadm host add 192.168.29.112 --ip=192.168.29.112 --port=7500 --status=alive3 ~]# mogadm host add 192.168.29.113 --ip=192.168.29.113 --port=7500 --status=alive
~]# mogadm check

Nginx,Mogilefs,分布式儲存

若想讓mogilefs集群中的存儲被識別成不同設備,需要在創建的/mogliefs/mogdata目錄下再創建名為dev*的目錄,使每個節點被當做存儲設備使用。mogilefs是將冗余存儲在不同設備中的,每一個節點都應該被識別為不同的設備。

在n1、n2、n3上的/mogliefs/mogdata/目錄下分別創建dev1,dev2,dev3目錄,并在Trackers上添加設備:

1 ~]# mogadm device add 192.168.29.111 12 ~]# mogadm device add 192.168.29.112 23 ~]# mogadm device add 192.168.29.113 3

Nginx,Mogilefs,分布式儲存

6.創建Domain和Class

在Mogilefs中,在多個節點上為了方便文件副本管理,通常在設備中不會以文件為單位進行管理,而是以class(類)做管理,復制刪除等操作都是以class為最小單位進行的。每個class中可以放很多文件,class的容積也不是固定的。

在Mogilefs的存儲空間中,所有數據文件都在同一平面,所以不能有同名的情況發生,這樣會影響Mogilefs的靈活性,所以引入了Domain(名稱空間)的概念。Domain包含Class,在不同的Domain中可以有相同的文件名。

Nginx,Mogilefs,分布式儲存

~]# mogadm domain add imgs #創建名為imgs的Domain~]# mogadm domain add text #創建名為text的Domain~]# mogadm domain list #查看Domain list

Nginx,Mogilefs,分布式儲存

可以自定義Class的屬性,格式為:mogadm class add <domain> <class> [opts]

~]# mogadm class add imgs png --mindevcount=3 --hashtype=MD5 #在Domain imgs中定義名為png的class,在不同設備中復制3份,并用MD5做校驗~]# mogadm class add imgs jpg --mindevcount=3 --hashtype=MD5 #在Domain imgs中定義名為jpg的class,在不同設備中復制3份,并用MD5做校驗~]# mogadm domain list

Nginx,Mogilefs,分布式儲存

7.使用Mogilefs做上傳下載測試

Mogilefs可以用自建的API接口進行交互,其中有很多用于管理存儲數據的命令。例如上傳數據命令為mogupload,查看數據命令為mogfileinfo等。

例:測試將文件/test/123.png上傳至Mogilefs集群(文件事先在本地準備好):

~]# mogupload --trackers=192.168.29.111 --domain=imgs --class=png --key='/111.png' --file='/test/123.png' #通過IP為192.168.29.111的Trackers將123.png文件上傳,并保存至Domain為imgs,Class為png的空間中,并重命名為111.png~]# mogfileinfo --trackers=192.168.29.111 --domain=imgs --class=png --key='/111.png' #查看Domain為imgs,Class為png中key為111.png的文件的存儲情況。

Nginx,Mogilefs,分布式儲存

Nginx,Mogilefs,分布式儲存

至此,Mogilefs分布式儲存集群就搭建完成了,但若想要使客戶端能與之通信,就需要在接口上進行編程,這樣就很麻煩了,好在我們能用Nginx做反代進行通信。下面來演示Nginx反代Mogilefs的步驟。

5.Nginx反代Mogilefs

1.打開n2,n3的mogilefsd服務,將3個節點全部設置為Trackers(保證配置文件與n1相同):

~]# service mogilefsd start

2.在n4節點編譯安裝Nginx

安裝依賴包:

~]# yum install gcc gcc-c++ perl pcre-devel openssl openssl-devel

下載Nginx編譯安裝包nginx-1.10.3.tar.gz與Nginx_Mogilefs模塊nginx_mogilefs_module-1.0.4.tar.gz并展開:

~]# lsnginx-1.10.3   nginx_mogilefs_module-1.0.4nginx-1.10.3.tar.gz nginx_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=../nginx_mogilefs_module-1.0.4/ #一定記得添加Mogilefs模塊所在的路徑,不可少。
~]# make & make install

  添加nginx用戶并啟動nginx:

~]# useradd -s /sbin/nologin -M nginx~]# /usr/sbin/nginx

3.配置Nginx

單Trackers示例:

location /imgs/ {   mogilefs_tracker 192.168.29.111:7001; #單Trackers示例   mogilefs_domain imgs; #指定Domain   mogilefs_class png jpg; #指定Class   mogilefs_pass { #傳輸相關配置    proxy_pass $mogilefs_path;    proxy_hide_header Content-Type;    proxy_buffering off;   }  }

多Trackers示例:

在nginx配置中的http配置段添加調度模塊:

1 upstream mogsvr {2   server 192.168.29.111:7001;3   server 192.168.29.112:7001;4   server 192.168.29.113:7001;5   }

在nginx配置中的server配置段添:

location /imgs/ {    mogilefs_tracker mogsvr;   mogilefs_domain imgs;   mogilefs_class png jpg;   mogilefs_pass {    proxy_pass $mogilefs_path;    proxy_hide_header Content-Type;    proxy_buffering off;   }  }

重新啟動nginx,并通過nginx訪問之前上傳的圖片:

Nginx,Mogilefs,分布式儲存

總結:

在上傳文件時遇到一個錯誤提示MogileFS::Backend: couldn't connect to mogilefsdbackend at /usr/local/share/perl/5.8.4/Client.pm line 282,這是由于mogilefsd服務于MySQL無法連接造成的,檢查它們之間的連接情況就能發現錯誤所在。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
自拍偷拍亚洲精品| 在线a欧美视频| 中文在线资源观看视频网站免费不卡| 亚洲一区二区三区在线视频| 国产精品自拍偷拍视频| 亚洲国产天堂久久综合| 欧美一性一乱一交一视频| 国产原创欧美精品| 欧美成人精品h版在线观看| 国产精品久久久一区| 精品女厕一区二区三区| 日韩av观看网址| 国产亚洲视频在线观看| 国产在线精品成人一区二区三区| xxxx性欧美| 国产精品十八以下禁看| 亚洲成人激情在线| 久久久999成人| 91在线精品视频| 亚洲精品成人久久| 精品国产网站地址| 日韩av电影手机在线观看| 岛国av一区二区在线在线观看| 色偷偷888欧美精品久久久| 国产欧美在线视频| 91福利视频网| 日韩av在线一区| 日韩精品高清在线观看| 久久久精品一区二区三区| 91久久国产精品91久久性色| 亚洲午夜精品久久久久久久久久久久| 国产精品久久久久久久久久免费| 日韩欧美在线免费观看| 欧美成人免费播放| 亚洲第一在线视频| 国产福利精品av综合导导航| 日韩美女视频中文字幕| 亚洲999一在线观看www| 欧美精品在线看| 国内精品久久久久久影视8| 正在播放国产一区| 欧美一级在线播放| 亚洲午夜久久久影院| 国产成人鲁鲁免费视频a| 欧美性在线视频| 久久精品国产亚洲| 久久免费国产视频| 亚洲欧美日本精品| 国产一区二区动漫| 日韩久久午夜影院| 91亚洲精品久久久| 国产成人综合av| 91九色单男在线观看| 亚洲石原莉奈一区二区在线观看| 欧美激情精品久久久久久久变态| 亚洲精品在线观看www| 久久久这里只有精品视频| 性欧美办公室18xxxxhd| 亚洲成人免费在线视频| 亚洲欧美视频在线| 日韩精品在线看| www.日韩系列| 深夜福利亚洲导航| 青青草国产精品一区二区| 法国裸体一区二区| 在线精品91av| 亚洲男人7777| 国产91精品在线播放| 中文字幕v亚洲ⅴv天堂| 中文在线不卡视频| 狠狠做深爱婷婷久久综合一区| 精品动漫一区二区三区| 成人激情视频在线观看| 亚洲国产成人91精品| 亚洲第一级黄色片| 日韩在线观看精品| 欧美高清在线播放| 亚洲欧美激情四射在线日| 久久久最新网址| 国产精品入口夜色视频大尺度| 久久综合伊人77777蜜臀| 亚洲国产精彩中文乱码av在线播放| 亚洲电影免费观看高清| 欧美黑人巨大xxx极品| 亚洲老司机av| 国产精品久久不能| 欧美性生交xxxxx久久久| 国产一区二区三区在线观看网站| 国产精品日韩欧美综合| 欧美性极品少妇精品网站| 国产精品福利在线| 91精品国产色综合久久不卡98口| 国产精品久久在线观看| 国产精品视频公开费视频| 国产精品99久久久久久久久久久久| 国产精品久久久久久婷婷天堂| 亚洲综合在线做性| 国产脚交av在线一区二区| 国产精品96久久久久久又黄又硬| 亚洲wwwav| 亚洲香蕉成人av网站在线观看| 日韩精品视频在线观看免费| 亚洲精品www| 久久精品国产亚洲一区二区| 一区二区亚洲欧洲国产日韩| 国产亚洲人成a一在线v站| 亚洲欧美成人网| 亚洲国产第一页| 国产精品毛片a∨一区二区三区|国| 亚洲网站在线观看| 久久成人人人人精品欧| 日本国产高清不卡| 久久精品91久久香蕉加勒比| 久久夜色精品国产欧美乱| 亚洲性视频网站| 欧美日韩亚洲视频| 精品国产鲁一鲁一区二区张丽| 91精品国产色综合久久不卡98口| 亚洲国产精品一区二区三区| 中文字幕亚洲欧美日韩在线不卡| 久久精品国产精品| 久久久久久18| 国产精品女主播| 最近2019免费中文字幕视频三| 91高清视频在线免费观看| 亚洲激情在线观看视频免费| 日韩精品在线第一页| 亚洲女人天堂色在线7777| 亚洲tv在线观看| 亚洲无线码在线一区观看| 久久乐国产精品| 国产精品爽黄69| 欧美午夜精品在线| 欧美一二三视频| 欧美性xxxx极品高清hd直播| 国产精品视频成人| 97婷婷涩涩精品一区| 久久久噜久噜久久综合| 欧美一区二区影院| 欧美日韩亚洲国产一区| 亚洲精品98久久久久久中文字幕| 欧美亚洲免费电影| 国产精品久久久久高潮| 欧美精品在线极品| 一区二区三区在线播放欧美| 久久久在线观看| 亚洲性夜色噜噜噜7777| 尤物tv国产一区| 欧美电影免费观看大全| 日韩不卡在线观看| 亚洲女同精品视频| 亚洲精品国产成人| 成人信息集中地欧美| 久久久久久久久国产精品| 国产性色av一区二区| 性色av一区二区三区| 国产日韩在线看片| 国产精品一二三在线| 亚洲国产中文字幕在线观看| 国产成人精品久久亚洲高清不卡| 在线观看日韩av| 成人午夜高潮视频| 91大神福利视频在线| 精品视频久久久久久|