鄂破机看 发表于 2019-1-31 13:26:14

基于mogilefs和fastdfs的企业级分布式存储

    分布式存储是一个企业针对大数据的一种较好的处理方法。正是这些海
量数据的应用需求推动了海量存储系统不断的发展和性能不断的改善,推出新的的存储体系结构。从传统的直接存储系统DAS,发展出了网络存储架构 SAN和NAS网络附加存储。
    DAS:直接附加存储。通过主板上的磁盘线直接存储到磁盘上,存储方式是块存储,数据块夸网络存储很难。


[*]  优点:速度快

[*]缺点:服务器跟存储是同一个设备,因此扩容难
    SAN:存储区域网络。通过光交换机实现块级别夸网络存储,还可以通过iSCSI接口(小型计算机存储借口)去存。
    NAS:网络附加存储。就是类似NFS文件共享机制,以文件方式存储。
  今天我们针对分布式存储给大家介绍两种企业级的应用


[*]mogolefs分布式存储
[*]fastdfs分布式存储
  一、mogilefs+mysql高可用技术
  架构图如下:
http://i2.运维网.com/images/blog/201712/01/49ff953bbb570099710853866f992f3b.jpg
实验环境:


[*]用户: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
http://i2.运维网.com/images/blog/201712/01/1c5aa92198c21fe454fa52065b640aaa.jpg
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
[*]  然后查看是否添加进去:

mogadmcheck
http://i2.运维网.com/images/blog/201712/01/3abb2728f051d012588fa49837d7910e.jpg

  6、给storage中添加存储节点(三个storage节点相同)

    mkdir -p /data/mogdata/dev1创建的dev[#]每个#在系统中不能一样
cd /data/mogdata/
chown mogilefs.mogilefs . -R
  7、给节点添加到tracker中

mogadm device add node11
mogadm device add node22
mogadm device add node33

[*]  检查看加进去没有:

mogadm check
http://i2.运维网.com/images/blog/201712/01/89a63835974ee99df5391b2b914b8204.jpg
  8、添加域并指定副本


[*]  创建域:

mogadm domain add img
[*]  在域中添加类,并指定副本:

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

mogadm domain list
http://i2.运维网.com/images/blog/201712/01/22f32c21f6547ecb29204e894626ebbe.jpg
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
http://i2.运维网.com/images/blog/201712/01/d9238c62cec167b68ae45f370d5933d8.jpg
  二、实现fastdfs分布式存储
  架构图如下:
http://i2.运维网.com/images/blog/201712/01/affee8537a4674e346720edfa23ccc6e.jpg


[*]  实验环境:需要三台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中查看
http://i2.运维网.com/images/blog/201712/01/200e0b61ef012789185348aa59abc653.jpg
  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去测试一下
http://i2.运维网.com/images/blog/201712/01/87498e94035136714c3a99b43ed5da08.jpg
  我相信看完这篇文章,基于mogilefs和fastdfs的分布式存储简单搭配大家已经都会了。
  记得点个赞哦!!!



页: [1]
查看完整版本: 基于mogilefs和fastdfs的企业级分布式存储