分佈式存儲是一個企業針對大數據的一種較好的處理方法。正是這些海
量數據的應用需求推動了海量存儲系統不斷的發展和性能不斷的改善,推出新的的存儲體系結構。從傳統的直接存儲系統DAS,發展出了網絡存儲架構 SAN和NAS網絡附加存儲。
DAS:直接附加存儲。通過主板上的磁盤線直接存儲到磁盤上,存儲方式是塊存儲,數據塊誇網絡存儲很難。
-
優點:速度快
- 缺點:服務器跟存儲是同一個設備,因此擴容難
SAN:存儲區域網絡。通過光交換機實現塊級別誇網絡存儲,還可以通過iSCSI接口(小型計算機存儲藉口)去存。
NAS:網絡附加存儲。就是類似NFS文件共享機制,以文件方式存儲。
今天我們針對分佈式存儲給大家介紹兩種企業級的應用
- mogolefs分佈式存儲
- fastdfs分佈式存儲
一、mogilefs+mysql高可用技術
架構圖如下:
實驗環境:
- 用戶:172.17.178.178
- 從mysql+storage:172.17.166.166
- 兩個storage節點:172.17.155.155 172.17.144.144
實驗需要安裝的包:(每個mogilefs節點都需要安裝)
yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO ##安裝一些perl包工具
本地安裝的rpm包:
MogileFS-Server-2.46-2.el6.noarch.rpm #核心服務
perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm #socket
MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm # tracker節點
perl-MogileFS-Client-1.14-1.el6.noarch.rpm #客戶端
MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm #Storage存儲節點
MogileFS-Utils-2.19-1.el6.noarch.rpm #主要是MogileFS的一些管理工具
yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perlYAML perl-Time-HiRes #perl編譯安裝環境所需要的包
1、安裝包
yum local install *
2、配置數據庫主從
-
主數據庫配置
vim /etc/my.cnf server-id=1 log-bin=mysql-bin skip-name-resolve
-
啓動mysql:
systemctl start mariadb
-
給SLAVE授權:
grant replication slave,replication client on . to slave@'172.17.%.%' identified by 'magedu';
-
查看主狀態:
show master status;
-
從數據庫配置
vim /etc/my.cnf
server-id=2
relay_log=mysql-relay-bin
read-only=1
log_bin=mysql-bin
log_slave_updates=1 -
指定主master:
mysqlchange master to master_host='172.17.177.177', master_user='slave', master_password='magedu', master_log_file='mysql-bin.000006', master_log_pos=414;
-
啓動slave:
start slave;
-
查看I/O和SQL線程是否開啓:
show slave status\G;
- 檢測檢測看數據庫能否數據同步
3、配置主mysql上的tracker
-
數據庫先授權:
grant all privileges on mogilefs.* to ‘mogile’@’127.0.0.1’ identified by ‘mogile’ with grant option;
-
然後初始化數據庫:
mogdbsetup --dbpass=mogile
-
每次輸mogadm不用再輸入--tracker:
vim /etc/mogilefs/molilefs.conf
trackers=172.17.177.177:7001 -
然後配置tracker:
vim /etc/mogilefs/mogilefsd.conf db_dsn = DBI:mysql:mogilefs:host=127.0.0.1 db_user = mogile db_pass = mogile listen = 172.17.177.177:7001
-
啓動tracker:
/etc/init.d/mogilefsd start
-
查看tracker是否正常:
mogadm check
4、配置storagevim /etc/mogilefs/mogstored.conf docroot = /data/mogdata mkdir /data/mogdata -p cd /data/mogdata chown mogilefs.mogilefs . -R 啓動mogstored:systemctl start mogstored
5、配置節點
-
添加主機,將主機信息註冊到數據庫中:
mogadm host add node1 --ip=172.17.166.166 --port=7500 --status=alive mogadm host add node2 --ip=172.17.155.155 --port=7500 --status=alive mogadm host add node3 --ip=172.17.144.144 --port=7500 --status=alive
-
然後查看是否添加進去:
mogadm check
6、給storage中添加存儲節點(三個storage節點相同)
mkdir -p /data/mogdata/dev1 創建的dev[#]每個#在系統中不能一樣
cd /data/mogdata/
chown mogilefs.mogilefs . -R
7、給節點添加到tracker中
mogadm device add node1 1
mogadm device add node2 2
mogadm device add node3 3
-
檢查看加進去沒有:
mogadm check
8、添加域並指定副本
-
創建域:
mogadm domain add img
-
在域中添加類,並指定副本:
mogadm class add img m26 --mindevcount=3
-
查看是否添加:
mogadm domain list
9、此時需要上傳照片去測試是否成功
mogupload - -domain=img --class=m26 - -key=test --file=123.jpg
-
查看照片是否上傳成功,副本是否三份:
mogfileinfo --domain=img --key=test
10、此時你會發現不能實現自動複製
-
mogilefs在版本2.46版本以上不能實現自動複製,需要降級到2.3:
wget http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz tar xvf Sys-Syscall-0.23.tar.gz cd /Sys-Syscall-0.23 perl Makefile.PL make make install 重啓tracker和storage systemctl restart tracker systemctl restart storage
二、實現fastdfs分佈式存儲
架構圖如下:
-
實驗環境:需要三臺centos系統
1、tracker server:172.17.177.177
2、storage server:172.17.166.166 172.17.155.155
1、安裝fastdfs
yum localinstall安裝
fastdfs-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-debuginfo-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-server-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-tool-5.0.11-1.el7.centos.x86_64.rpm
libfastcommon-1.0.36-1.el7.centos.x86_64.rpm
libfastcommon-devel-1.0.36-1.el7.centos.x86_64.rpm
libfdfsclient-5.0.11-1.el7.centos.x86_64.rpm
libfdfsclient-devel-5.0.11-1.el7.centos.x86_64.rpm
2、在172.17.177.177上更改tracker
cd /etc/fdfs/
cp tracker.conf.samle tracker.conf
vim tracker.conf(主要是更改一下路徑)
disabled=false(默認爲false,表示是否無效)
port=22122(默認爲22122)
base_path=/data/fastdfs/tracker
-
創建目錄:
mkdir /data/fastdfs/tracker
-
啓動tracker:
/etc/init.d/fdfs_trackerd start
- 查看22122端口是否開啓
3、在172.17.166.166和172.17.155.155上配置storage
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vim storage.conf(主要是更改組和工作路徑以及存儲路徑)
group=group1
disabled=false(默認爲false,表示是否無效)
port=23000(默認爲23000)
base_path=/data/fastdfs/storage 工作的路徑
tracker_server=172.17.177.177:22122
store_path0=/data/fastdfs/storage 真正存儲的路徑
-
創建目錄:
mkdir /data/fastdfs/storage
-
啓動服務:
/etc/init.d/fdfs_storaged start
-
查看23000端口是否開啓
- 另一個storage配置一樣。
4、在tracker中配置一個client文件。
-
先配置一個客戶端文件:
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf* vim /etc/fdfs/client.conf(指定一下tracker和路徑) base_path=/data/fastdfs/tracker tracker_server=172.17.177.177:22122
5、測試能否存儲文件
-
查看storage節點是否加上:
fdfs_monitor /etc/fdfs/client.conf
-
上傳一個文件:
fdfs_upload_file /etc/fdfs/client.conf /root/123.jpg
-
查看文件:
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/rBGbm1odMrqAUF9uAAZHIffi2RU809.jpg
- 還可以去兩個storage中查看
6、基於nginx實現fastdfs
-
安裝nginx以及對應的模塊和包
nginx-1.10.2-1.el7.centos.x86_64.rpm nginx-all-modules-1.10.2-1.el7.centos.noarch.rpm nginx-filesystem-1.10.2-1.el7.centos.noarch.rpm nginx-mod-http-geoip-1.10.2-1.el7.centos.x86_64.rpm nginx-mod-http-image-filter-1.10.2-1.el7.centos.x86_64.rpm nginx-mod-http-perl-1.10.2-1.el7.centos.x86_64.rpm nginx-mod-http-xslt-filter-1.10.2-1.el7.centos.x86_64.rpm nginx-mod-mail-1.10.2-1.el7.centos.x86_64.rpm nginx-mod-stream-1.10.2-1.el7.centos.x86_64.rpm
-
修改nginx的配置文件
vim /etc/nginx/nginx.conf location /group1/M00 { root /data/fastdfs/storage/data; ngx_fastdfs_module; }
-
修改對應fastdfs模塊
vim /etc/fdfs/mod_fastdfs.conf url_have_group_name = true tracker_server=172.17.252.234:22122 store_path0=/data/fastdfs/storage
7、用http去測試一下
我相信看完這篇文章,基於mogilefs和fastdfs的分佈式存儲簡單搭配大家已經都會了。
記得點個贊哦!!!