分布式:
分布式存儲或分布式文件系統的概念:
多臺計算機每一臺提供一定的存儲空間存儲數據,通過元數據服務器將數據均勻的存儲在各個節點上
元數據:描述數據的數據,主要是描述數據屬性,用來支持如指示存儲位置、資源查找、文件記錄等功能
分布式文件系統:可以直接掛載在系統上進行訪問
分布式存儲:只能通過API進行訪問
有元數據節點服務器:元數據節點存儲元數據,數據節點存儲數據
無元數據節點服務器:每個數據節點保存完整的元數據和部分數據
常見軟件:
GFS:google file system
HDFS:Hadoop file system
TFS:taobao(淘寶) file system
ceph:linux內核中實現的分布式文件系統
MooseFS:輕量級分布式文件系統
MogileFS:輕量級分布式文件系統,比moosefs的性能高
MogileFS
MogileFS有3個組件:
Tracker:是文件系統集群的核心節點,基于數據庫保存元數據,主要用于監控、指示storage節點完成數據的添加、刪除、查詢,及節點之間數據的復制等,Tracker節點通常有多個,以實現負載均衡和高可用
storage:實際存儲數據的位置,能完成文件創建、刪除、重命名等操作
database:存儲Tracker節點的元數據及全局信息
實現原理: 在MogileFS中,每一個數據塊都會有多個副本,存放于多個storage上(一般是3份),在Tracker上會分別每一個數 據塊的存儲位置。若某個storage節點不在線了,客戶端向Tracker節點請求獲取數據時,Tracker節點會返回副本的存儲位置給客戶端。這樣就保證了整個集群高可用性。當有數據存儲至某一storage節點后,各storage節點會根據Tracker的指示通過節點間通信將副本發送至其他節點上。若某一storage下線了,該節點上的副本會由其他節點重新提供,保證副本的個數不少于指定的值
安裝配置:
環境準備: [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 #連接數據庫模塊 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 #安裝數據庫 cpan #第一次使用perl包管理工具需要輸入yes進行環境配置 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 #檢查環境 make && make install #編譯 安裝
配置mysql數據庫: chkconfig --add mysqld chkconfig mysqld on service mysqld start #啟動mysql mysqladmin -uroot password 123.com #設置root密碼 mysql -uroot -p #連接數據庫 create database mogilefs; #創建數據庫 grant all on mogilefs.* to 'mogilefs'@'192.168.%.%' identified by '456.com'; #授權用戶 flush privileges; mogdbsetup --dbhost=192.168.0.10 --dbrootpass='123.com' --dbuser=mogilefs --dbpass='456.com' --dbhost= #數據庫地址,默認為localhost --dbport= #端口,默認3306 --dbname= #連接的庫名,默認mogilefs --dbrootuser= #初始化庫的用戶,默認root --dbrootpass= #root的密碼,默認為空 --dbuser= #連接初始化庫的用戶,默認mogilefs --dbpass= #初始用戶的密碼,默認為空
配置mogilefs: useradd -r mogilefs #創建運行用戶,mogilefs不能以root用戶運行 mkdir /etc/mogilefs mkdir /var/run/mogilefsd #pid文件存放位置 vim /etc/mogilefs/mogilefsd.conf #創建配置文件 pidfile = /var/run/mogilefsd/mogilefsd.pid #pid文件位置 db_dsn = DBI:mysql:mogilefs:host=192.168.0.10;port=3306;mysql_connect_timeout=5 #連接數據庫的信息 daemonize = 1 #運行為守護進程 db_user = mogilefs #數據庫上的用戶名 db_pass = 456.com #用戶名對應的密碼 listen = 0.0.0.0:7001 #監聽的地址和端口 conf_port = 7001 query_jobs = 10 #用于查詢的進程數 delete_jobs = 1 #用于刪除操作的進程數 replicate_jobs = 5 #用于復制的進程數 reaper_jobs = 1 #用于回收資源的進程數 chown -R mogilefs:mogilefs /etc/mogilefs #修改屬主屬組 chown -R mogilefs:mogilefs /var/run/mogilefsd su - mogilefs -c "mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon" #啟動服務 ss -tnl | grep 7001 #查看服務是否啟動
storage配置:安裝和Tracker一樣的包,如果不作為Tracker則不需要配置安裝數據庫 useradd -r mogilefs #創建運行用戶 mkdir -pv /mogilefs/data/dev1 #創建數據存儲目錄,dev1必須有代表第一個storage的設備 mkdir /etc/mogilefs vim /etc/mogilefs/mogstored.conf maxconns = 1000 #最大并發連接數 httplisten = 0.0.0.0:7500 #http監聽的地址 mgmtlisten = 0.0.0.0:7501 #管理接口監聽地址 docroot = /mogilefs/data #用于存儲的目錄 chown -R mogilefs:mogilefs /etc/mogilefs #修改屬主屬組 chown -R mogilefs:mogilefs /mogilefs/ su - mogilefs -c "mogstored -c /etc/mogilefs/mogstored.conf --daemon" #啟動服務 ss -ntl | grep 7500 ss -ntl | grep 7501
mogilefs管理: mogadm check #檢查狀態 mogadm device list #查看各節點設備情況 mogadm host list #查看各節點情況 mogadm host add 192.168.0.10 --ip=192.168.0.10 --status=alive #添加節點,192.168.0.10標示名稱 mogadm host add 192.168.0.50 --ip=192.168.0.50 --status=alive #添加節點,192.168.0.50標示名稱 mogadm device add 192.168.0.10 1 #添加第一個節點 mogadm device add 192.168.0.50 2 #添加第二個節點 mogadm domain list #查看域 mogadm domain add www #添加www域 mogadm --trackers=192.168.0.10:7001 class add www user --mindevcount=2 #在www域內添加user類,mindevcount:最小復制文件的份數 replpolicy :復制份數 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
配置實例:
實驗環境: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模塊內置變量
proxy_hide_header Content-Type;
#隱藏Content-Type
proxy_buffering off; #關閉緩存
}
}
}
}
4、驗證
1、訪問http://192.168.0.10/img/pwd
2、關閉192.168.0.30繼續訪問,查看訪問是否正常 免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。