分布式:
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的柏鄉(xiāng)網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
分布式存儲或分布式文件系統(tǒng)的概念:
多臺計算機每一臺提供一定的存儲空間存儲數(shù)據(jù),通過元數(shù)據(jù)服務(wù)器將數(shù)據(jù)均勻的存儲在各個節(jié)點上
元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù),主要是描述數(shù)據(jù)屬性,用來支持如指示存儲位置、資源查找、文件記錄等功能
分布式文件系統(tǒng):可以直接掛載在系統(tǒng)上進(jìn)行訪問
分布式存儲:只能通過API進(jìn)行訪問
有元數(shù)據(jù)節(jié)點服務(wù)器:元數(shù)據(jù)節(jié)點存儲元數(shù)據(jù),數(shù)據(jù)節(jié)點存儲數(shù)據(jù)
無元數(shù)據(jù)節(jié)點服務(wù)器:每個數(shù)據(jù)節(jié)點保存完整的元數(shù)據(jù)和部分?jǐn)?shù)據(jù)
常見軟件:
GFS:google file system
HDFS:Hadoop file system
TFS:taobao(淘寶) file system
ceph:linux內(nèi)核中實現(xiàn)的分布式文件系統(tǒng)
MooseFS:輕量級分布式文件系統(tǒng)
MogileFS:輕量級分布式文件系統(tǒng),比moosefs的性能高
MogileFS
MogileFS有3個組件:
Tracker:是文件系統(tǒng)集群的核心節(jié)點,基于數(shù)據(jù)庫保存元數(shù)據(jù),主要用于監(jiān)控、指示storage節(jié)點完成數(shù)據(jù)的添加、刪除、查詢,及節(jié)點之間數(shù)據(jù)的復(fù)制等,Tracker節(jié)點通常有多個,以實現(xiàn)負(fù)載均衡和高可用
storage:實際存儲數(shù)據(jù)的位置,能完成文件創(chuàng)建、刪除、重命名等操作
database:存儲Tracker節(jié)點的元數(shù)據(jù)及全局信息
實現(xiàn)原理:在MogileFS中,每一個數(shù)據(jù)塊都會有多個副本,存放于多個storage上(一般是3份),在Tracker上會分別每一個數(shù) 據(jù)塊的存儲位置。若某個storage節(jié)點不在線了,客戶端向Tracker節(jié)點請求獲取數(shù)據(jù)時,Tracker節(jié)點會返回副本的存儲位置給客戶端。這樣就保證了整個集群高可用性。當(dāng)有數(shù)據(jù)存儲至某一storage節(jié)點后,各storage節(jié)點會根據(jù)Tracker的指示通過節(jié)點間通信將副本發(fā)送至其他節(jié)點上。若某一storage下線了,該節(jié)點上的副本會由其他節(jié)點重新提供,保證副本的個數(shù)不少于指定的值
安裝配置:
環(huán)境準(zhǔn)備: [epel] nama=epel package baseurl=http://mirrors.aliyun.com/epel/6/x86_64/ #阿里yum源 gpgcheck=1 enabled=1 gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6 yum -y install Perlbal #安裝perl包管理工具 yum -y install perl-DBI #安裝其他依賴包 yum -y install perl-DBD-MySQL #連接數(shù)據(jù)庫模塊 yum -y install perl-Danga-Socket yum -y install perl-IO-AIO yum -y install perl-Net-Netmask yum -y install cpan #perl模塊管理工具 yum -y install mysql mysql-server #安裝數(shù)據(jù)庫 cpan #第一次使用perl包管理工具需要輸入yes進(jìn)行環(huán)境配置 cpan[1]> install MogileFS::Client #使用cpan安裝MogileFS::Client cpan[1]> install MogileFS::Utils
安裝mogilefs: wget http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/MogileFS-Server-2.44.tar.gz tar zxvf MogileFS-Server-2.44.tar.gz -C /usr/src/ cd /usr/src/MogileFS-Server-2.44 perl Makefile.PL #檢查環(huán)境 make && make install #編譯 安裝
配置mysql數(shù)據(jù)庫: chkconfig --add mysqld chkconfig mysqld on service mysqld start #啟動mysql mysqladmin -uroot password 123.com #設(shè)置root密碼 mysql -uroot -p #連接數(shù)據(jù)庫 create database mogilefs; #創(chuàng)建數(shù)據(jù)庫 grant all on mogilefs.* to 'mogilefs'@'192.168.%.%' identified by '456.com'; #授權(quán)用戶 flush privileges; mogdbsetup --dbhost=192.168.0.10 --dbrootpass='123.com' --dbuser=mogilefs --dbpass='456.com' --dbhost= #數(shù)據(jù)庫地址,默認(rèn)為localhost --dbport= #端口,默認(rèn)3306 --dbname= #連接的庫名,默認(rèn)mogilefs --dbrootuser= #初始化庫的用戶,默認(rèn)root --dbrootpass= #root的密碼,默認(rèn)為空 --dbuser= #連接初始化庫的用戶,默認(rèn)mogilefs --dbpass= #初始用戶的密碼,默認(rèn)為空
配置mogilefs: useradd -r mogilefs #創(chuàng)建運行用戶,mogilefs不能以root用戶運行 mkdir /etc/mogilefs mkdir /var/run/mogilefsd #pid文件存放位置 vim /etc/mogilefs/mogilefsd.conf #創(chuàng)建配置文件 pidfile = /var/run/mogilefsd/mogilefsd.pid #pid文件位置 db_dsn = DBI:mysql:mogilefs:host=192.168.0.10;port=3306;mysql_connect_timeout=5 #連接數(shù)據(jù)庫的信息 daemonize = 1 #運行為守護進(jìn)程 db_user = mogilefs #數(shù)據(jù)庫上的用戶名 db_pass = 456.com #用戶名對應(yīng)的密碼 listen = 0.0.0.0:7001 #監(jiān)聽的地址和端口 conf_port = 7001 query_jobs = 10 #用于查詢的進(jìn)程數(shù) delete_jobs = 1 #用于刪除操作的進(jìn)程數(shù) replicate_jobs = 5 #用于復(fù)制的進(jìn)程數(shù) reaper_jobs = 1 #用于回收資源的進(jìn)程數(shù) chown -R mogilefs:mogilefs /etc/mogilefs #修改屬主屬組 chown -R mogilefs:mogilefs /var/run/mogilefsd su - mogilefs -c "mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon" #啟動服務(wù) ss -tnl | grep 7001 #查看服務(wù)是否啟動
storage配置:安裝和Tracker一樣的包,如果不作為Tracker則不需要配置安裝數(shù)據(jù)庫 useradd -r mogilefs #創(chuàng)建運行用戶 mkdir -pv /mogilefs/data/dev1 #創(chuàng)建數(shù)據(jù)存儲目錄,dev1必須有代表第一個storage的設(shè)備 mkdir /etc/mogilefs vim /etc/mogilefs/mogstored.conf maxconns = 1000 #最大并發(fā)連接數(shù) httplisten = 0.0.0.0:7500 #http監(jiān)聽的地址 mgmtlisten = 0.0.0.0:7501 #管理接口監(jiān)聽地址 docroot = /mogilefs/data #用于存儲的目錄 chown -R mogilefs:mogilefs /etc/mogilefs #修改屬主屬組 chown -R mogilefs:mogilefs /mogilefs/ su - mogilefs -c "mogstored -c /etc/mogilefs/mogstored.conf --daemon" #啟動服務(wù) ss -ntl | grep 7500 ss -ntl | grep 7501
mogilefs管理: mogadm check #檢查狀態(tài) mogadm device list #查看各節(jié)點設(shè)備情況 mogadm host list #查看各節(jié)點情況 mogadm host add 192.168.0.10 --ip=192.168.0.10 --status=alive #添加節(jié)點,192.168.0.10標(biāo)示名稱 mogadm host add 192.168.0.50 --ip=192.168.0.50 --status=alive #添加節(jié)點,192.168.0.50標(biāo)示名稱 mogadm device add 192.168.0.10 1 #添加第一個節(jié)點 mogadm device add 192.168.0.50 2 #添加第二個節(jié)點 mogadm domain list #查看域 mogadm domain add www #添加www域 mogadm --trackers=192.168.0.10:7001 class add www user --mindevcount=2 #在www域內(nèi)添加user類,mindevcount:最小復(fù)制文件的份數(shù) replpolicy :復(fù)制份數(shù) mogupload --trackers=192.168.0.10:7001 --domain=www --key='pwd' --file='/etc/passwd' #上傳文件 key:上傳保存位置,以dev為根 file:本地文件 mogfileinfo --trackers=192.168.0.10:7001 --domain=www --key='pwd' #查看文件 moglistkeys --trackers=192.168.0.10 --domain=www #列出所有key
配置實例:
實驗環(huán)境:centos6.5 192.168.0.10 Nginx 192.168.0.20 mysql 192.168.0.30 mogilefs 192.168.0.40 mogilefs 192.168.0.50 mogilefs 1、配置mogilefs: mogadm --trackers=192.168.0.30 host add 192.168.0.30 --ip=192.168.0.30 --status=alive mogadm --trackers=192.168.0.30 host add 192.168.0.40 --ip=192.168.0.40 --status=alive mogadm --trackers=192.168.0.30 host add 192.168.0.50 --ip=192.168.0.50 --status=alive mogadm domain add www mogupload --trackers=192.168.0.10:7001 --domain=www --key='pwd' --file='/etc/passwd' 2、編譯安裝nginx: groupadd -r nginx useradd -r -g nginx nginx yum -y install pcre-devel tar zxvf nginx-1.8.1.tar.gz -C /usr/src/ tar zxvf nginx_mogilefs_module-1.0.4.tar.gz -C /usr/src/ #支持mogilefs的第三方模塊 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/usr/src/nginx_mogilefs_module-1.0.4/ --add-module:指定第三方模塊位置 make && make install 3、配置nginx: http { include mime.types; default_type application/octet-stream; upstream mogfs{ #tracker地址 server 192.168.0.30:7001; server 192.168.0.40:7001; server 192.168.0.50:7001; } sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location /img/ { #啟用mogilefs集群 mogilefs_tracker mogfs; #tracker地址 mogilefs_domain www; #指定域 mogilefs_noverify on; #不做校驗 mogilefs_methods GET; #請求方法 mogilefs_pass { proxy_pass $mogilefs_path; #必須這樣寫,$mogilefs_path模塊內(nèi)置變量 proxy_hide_header Content-Type; #隱藏Content-Type proxy_buffering off; #關(guān)閉緩存 } } } } 4、驗證 1、訪問http://192.168.0.10/img/pwd 2、關(guān)閉192.168.0.30繼續(xù)訪問,查看訪問是否正常