基於mogilefs和fastdfs的企業級分佈式存儲

  分佈式存儲是一個企業針對大數據的一種較好的處理方法。正是這些海
量數據的應用需求推動了海量存儲系統不斷的發展和性能不斷的改善,推出新的的存儲體系結構。從傳統的直接存儲系統DAS,發展出了網絡存儲架構 SAN和NAS網絡附加存儲。

  DAS:直接附加存儲。通過主板上的磁盤線直接存儲到磁盤上,存儲方式是塊存儲,數據塊誇網絡存儲很難。

  • 優點:速度快

  • 缺點:服務器跟存儲是同一個設備,因此擴容難

  SAN:存儲區域網絡。通過光交換機實現塊級別誇網絡存儲,還可以通過iSCSI接口(小型計算機存儲藉口)去存。

  NAS:網絡附加存儲。就是類似NFS文件共享機制,以文件方式存儲。

今天我們針對分佈式存儲給大家介紹兩種企業級的應用

  • mogolefs分佈式存儲
  • fastdfs分佈式存儲

一、mogilefs+mysql高可用技術

架構圖如下:
基於mogilefs和fastdfs的企業級分佈式存儲
實驗環境:

  • 用戶: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
    基於mogilefs和fastdfs的企業級分佈式存儲
    4、配置storage

    vim /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

    基於mogilefs和fastdfs的企業級分佈式存儲

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

基於mogilefs和fastdfs的企業級分佈式存儲

8、添加域並指定副本

  • 創建域:

    mogadm domain add img
  • 在域中添加類,並指定副本:

    mogadm class add img m26 --mindevcount=3
  • 查看是否添加:

    mogadm domain list

基於mogilefs和fastdfs的企業級分佈式存儲
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

基於mogilefs和fastdfs的企業級分佈式存儲

二、實現fastdfs分佈式存儲

架構圖如下:
基於mogilefs和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中查看
    基於mogilefs和fastdfs的企業級分佈式存儲

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的企業級分佈式存儲

我相信看完這篇文章,基於mogilefs和fastdfs的分佈式存儲簡單搭配大家已經都會了。

記得點個贊哦!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章