分布式存储是一个企业针对大数据的一种较好的处理方法。正是这些海 量数据的应用需求推动了海量存储系统不断的发展和性能不断的改善,推出新的的存储体系结构。从传统的直接存储系统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、配置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
    

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的分布式存储简单搭配大家已经都会了。

记得点个赞哦!!!