一、简介

  MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发;它主要由三部分组成,第一部分是server端,server端主要包括mogilefsd和mogstored两个应用程序。mogilefsd实现的是tracker,它通过数据库来保存元数据信息,包括站点domain、class、host等;mogstored是存储节点(store node),它其实是个WebDAV服务,默认监听在7500端口,接受客户端的文件存储请求。在MogileFS安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。第二部是mogilefs的utils,这部分主要是一些工具,比如mogadm、mogupload、mogfileinfo 等等;第三部分是客户端API,mogilefs支持众多编程语言的客户端API接口,使用对应的客户端API接口,我们可以编写mogilefs的客户端,从而实现来管理mogilefs上的文件;

  二、Mogilefs架构图

  提示:tracker的主要作用是代理前端用户的请求到数据库查询相关文件的元信息,同时它还要监控注册到trancker的storagenode的健康状态,一旦后端storage挂掉,它会立刻把对应的storage节点上的device从集群的中删除,上线时在加入到集群;客户端通过向tracker发送请求文件的信息,tracker通过去数据库中找到对应的文件所在storage节点的ip地址、端口、设备id以及文件fid,然后通过http链接的形式从tracker返回给客户端,客户端拿到这trancker的返回的文件地址,然后在去对应的storage请求文件,从而在客户端就访问到对应的文件内容信息;客户端和trancker,storage之间通信都是http协议,从本质上讲storage就是一个web服务器;所以对于客户端我们可以使用web服务器的反向代理,也可以是调用mogilefsAPI写的客户端程序;

  三、Mogilefs安装部署

  环境说明

名称 角色 ip地址 端口
node01 tracker+mysql+storage 192.168.0.41 7001/7500/7501/3306
node02 tracker+storage 192.168.0.42 7001/7500/7501
node03 storage 192.168.0.43 7500/7501

  各server时间同步

  提示:如果有必要,可以配置各节点用hosts文件解析;

  安装环境依赖包

  1. [root@node01 ~]# yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslog perl-IO-AIO -y
  2. Loaded plugins: fastestmirror
  3. base | 3.6 kB 00:00:00
  4. epel | 4.7 kB 00:00:00
  5. extras | 2.9 kB 00:00:00
  6. updates | 2.9 kB 00:00:00
  7. Loading mirror speeds from cached hostfile
  8. * base: mirrors.aliyun.com
  9. * extras: mirrors.aliyun.com
  10. * updates: mirrors.aliyun.com
  11. Resolving Dependencies
  12. --> Running transaction check
  13. ---> Package perl-IO-AIO.x86_64 0:4.20-1.el7 will be installed
  14. --> Processing Dependency: perl(common::sense) for package: perl-IO-AIO-4.20-1.el7.x86_64
  15. ---> Package perl-IO-stringy.noarch 0:2.110-22.el7 will be installed
  16. ---> Package perl-Net-Netmask.noarch 0:1.9015-13.el7 will be installed
  17. ---> Package perl-Sys-Syslog.x86_64 0:0.33-3.el7 will be installed
  18. --> Running transaction check
  19. ---> Package perl-common-sense.noarch 0:3.6-4.el7 will be installed
  20. --> Finished Dependency Resolution
  21.  
  22. Dependencies Resolved
  23.  
  24. =======================================================================================================================================
  25. Package Arch Version Repository Size
  26. =======================================================================================================================================
  27. Installing:
  28. perl-IO-AIO x86_64 4.20-1.el7 epel 117 k
  29. perl-IO-stringy noarch 2.110-22.el7 base 71 k
  30. perl-Net-Netmask noarch 1.9015-13.el7 epel 25 k
  31. perl-Sys-Syslog x86_64 0.33-3.el7 base 42 k
  32. Installing for dependencies:
  33. perl-common-sense noarch 3.6-4.el7 epel 28 k
  34.  
  35. Transaction Summary
  36. =======================================================================================================================================
  37. Install 4 Packages (+1 Dependent package)
  38.  
  39. Total download size: 283 k
  40. Installed size: 636 k
  41. Downloading packages:
  42. (1/5): perl-Sys-Syslog-0.33-3.el7.x86_64.rpm | 42 kB 00:00:00
  43. (2/5): perl-Net-Netmask-1.9015-13.el7.noarch.rpm | 25 kB 00:00:00
  44. (3/5): perl-IO-AIO-4.20-1.el7.x86_64.rpm | 117 kB 00:00:00
  45. (4/5): perl-common-sense-3.6-4.el7.noarch.rpm | 28 kB 00:00:00
  46. (5/5): perl-IO-stringy-2.110-22.el7.noarch.rpm | 71 kB 00:00:00
  47. ---------------------------------------------------------------------------------------------------------------------------------------
  48. Total 642 kB/s | 283 kB 00:00:00
  49. Running transaction check
  50. Running transaction test
  51. Transaction test succeeded
  52. Running transaction
  53. Installing : perl-common-sense-3.6-4.el7.noarch 1/5
  54. Installing : perl-IO-AIO-4.20-1.el7.x86_64 2/5
  55. Installing : perl-Net-Netmask-1.9015-13.el7.noarch 3/5
  56. Installing : perl-Sys-Syslog-0.33-3.el7.x86_64 4/5
  57. Installing : perl-IO-stringy-2.110-22.el7.noarch 5/5
  58. Verifying : perl-IO-AIO-4.20-1.el7.x86_64 1/5
  59. Verifying : perl-common-sense-3.6-4.el7.noarch 2/5
  60. Verifying : perl-IO-stringy-2.110-22.el7.noarch 3/5
  61. Verifying : perl-Sys-Syslog-0.33-3.el7.x86_64 4/5
  62. Verifying : perl-Net-Netmask-1.9015-13.el7.noarch 5/5
  63.  
  64. Installed:
  65. perl-IO-AIO.x86_64 0:4.20-1.el7 perl-IO-stringy.noarch 0:2.110-22.el7 perl-Net-Netmask.noarch 0:1.9015-13.el7
  66. perl-Sys-Syslog.x86_64 0:0.33-3.el7
  67.  
  68. Dependency Installed:
  69. perl-common-sense.noarch 0:3.6-4.el7
  70.  
  71. Complete!
  72. [root@node01 ~]#

  提示:三个节点都需要安装环境依赖的包;

  上传rpm包到服务器并安装

  1. [root@node01 ~]# rz
  2. rz waiting to receive.
  3. zmodem trl+C ȡ
  4.  
  5. 100% 1 KB 1 KB/s 00:00:01 0 Errors.el7.centos.noarch.rpm...
  6. 100% 173 KB 173 KB/s 00:00:01 0 Errorsentos.noarch.rpm...
  7. 100% 26 KB 26 KB/s 00:00:01 0 Errorsentos.noarch.rpm...
  8. 100% 75 KB 75 KB/s 00:00:01 0 Errorsh.rpm...
  9. 100% 27 KB 27 KB/s 00:00:01 0 Errors.rpm...
  10. 100% 29 KB 29 KB/s 00:00:01 0 Errors.noarch.rpm...
  11. 100% 262 KB 262 KB/s 00:00:01 0 Errors
  12.  
  13. [root@node01 ~]# ls
  14. MogileFS-Server-2.46-2.el7.centos.noarch.rpm perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
  15. MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm
  16. MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm perl-Perlbal-1.78-1.el6.noarch.rpm
  17. MogileFS-Utils-2.19-1.el7.centos.noarch.rpm
  18. [root@node01 ~]# yum install ./*.rpm -y
  19. Loaded plugins: fastestmirror
  20. Examining ./MogileFS-Server-2.46-2.el7.centos.noarch.rpm: MogileFS-Server-2.46-2.el7.centos.noarch
  21. Marking ./MogileFS-Server-2.46-2.el7.centos.noarch.rpm to be installed
  22. Examining ./MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm: MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch
  23. Marking ./MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm to be installed
  24. Examining ./MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm: MogileFS-Server-mogstored-2.46-2.el7.centos.noarch
  25. Marking ./MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm to be installed
  26. Examining ./MogileFS-Utils-2.19-1.el7.centos.noarch.rpm: MogileFS-Utils-2.19-1.el7.centos.noarch
  27. Marking ./MogileFS-Utils-2.19-1.el7.centos.noarch.rpm to be installed
  28. Examining ./perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm: perl-Danga-Socket-1.61-1.el6.rf.noarch
  29. Marking ./perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm to be installed
  30. Examining ./perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm: perl-MogileFS-Client-1.14-1.el7.centos.noarch
  31. Marking ./perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm to be installed
  32. Examining ./perl-Perlbal-1.78-1.el6.noarch.rpm: perl-Perlbal-1.78-1.el6.noarch
  33. Marking ./perl-Perlbal-1.78-1.el6.noarch.rpm to be installed
  34. Resolving Dependencies
  35. --> Running transaction check
  36. ---> Package MogileFS-Server.noarch 0:2.46-2.el7.centos will be installed
  37. ---> Package MogileFS-Server-mogilefsd.noarch 0:2.46-2.el7.centos will be installed
  38. --> Processing Dependency: perl(DBI) >= 1.44 for package: MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch
  39. Loading mirror speeds from cached hostfile
  40. * base: mirrors.aliyun.com
  41. * extras: mirrors.aliyun.com
  42. * updates: mirrors.aliyun.com
  43. --> Processing Dependency: perl(DBD::mysql) >= 3 for package: MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch
  44. ---> Package MogileFS-Server-mogstored.noarch 0:2.46-2.el7.centos will be installed
  45. ……省略部分内容……
  46. Installed:
  47. MogileFS-Server.noarch 0:2.46-2.el7.centos MogileFS-Server-mogilefsd.noarch 0:2.46-2.el7.centos
  48. MogileFS-Server-mogstored.noarch 0:2.46-2.el7.centos MogileFS-Utils.noarch 0:2.19-1.el7.centos
  49. perl-Danga-Socket.noarch 0:1.61-1.el6.rf perl-MogileFS-Client.noarch 0:1.14-1.el7.centos
  50. perl-Perlbal.noarch 0:1.78-1.el6
  51.  
  52. Dependency Installed:
  53. mailcap.noarch 0:2.1.41-2.el7 perl-BSD-Resource.x86_64 0:1.29.07-1.el7
  54. perl-Business-ISBN.noarch 0:2.06-2.el7 perl-Business-ISBN-Data.noarch 0:20120719.001-2.el7
  55. perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  56. perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-DBI.x86_64 0:1.627-4.el7
  57. perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-Digest.noarch 0:1.17-245.el7
  58. perl-Digest-MD5.x86_64 0:2.52-3.el7 perl-Encode-Locale.noarch 0:1.03-5.el7
  59. perl-File-Listing.noarch 0:6.04-7.el7 perl-HTML-Parser.x86_64 0:3.71-4.el7
  60. perl-HTML-Tagset.noarch 0:3.20-15.el7 perl-HTTP-Cookies.noarch 0:6.01-5.el7
  61. perl-HTTP-Daemon.noarch 0:6.01-8.el7 perl-HTTP-Date.noarch 0:6.02-8.el7
  62. perl-HTTP-Message.noarch 0:6.06-6.el7 perl-HTTP-Negotiate.noarch 0:6.01-5.el7
  63. perl-IO-Compress.noarch 0:2.061-2.el7 perl-IO-HTML.noarch 0:1.00-2.el7
  64. perl-IO-Socket-IP.noarch 0:0.21-5.el7 perl-IO-Socket-SSL.noarch 0:1.94-7.el7
  65. perl-LWP-MediaTypes.noarch 0:6.02-2.el7 perl-Mozilla-CA.noarch 0:20130114-5.el7
  66. perl-Net-Daemon.noarch 0:0.48-5.el7 perl-Net-HTTP.noarch 0:6.06-2.el7
  67. perl-Net-LibIDN.x86_64 0:0.12-15.el7 perl-Net-SSLeay.x86_64 0:1.55-6.el7
  68. perl-PlRPC.noarch 0:0.2020-14.el7 perl-Sys-Syscall.noarch 0:0.25-10.el7
  69. perl-TimeDate.noarch 1:2.30-2.el7 perl-URI.noarch 0:1.60-9.el7
  70. perl-WWW-RobotRules.noarch 0:6.02-5.el7 perl-libwww-perl.noarch 0:6.05-2.el7
  71.  
  72. Complete!
  73. [root@node01 ~]#

  提示:安装环境依赖和以上rpm包,首先要配置好epel源;因为有些依赖包,它来自epel源;相关包我已经上传至我的网盘http://www.qiuhom.com/d/383f34f57cf847beb296/

  安装mariadb-server

  配置yum源

  1. [root@node01 ~]# cat /etc/yum.repos.d/mairadb.repo
  2. [mariadb]
  3. name=mariadb repo
  4. baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.1.46/yum/centos/7/x86_64/
  5. gpgcheck=0
  6. [root@node01 ~]#

  安装mariadb-server

  1. [root@node01 ~]# yum install MariaDB-server -y
  2. Loaded plugins: fastestmirror
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.aliyun.com
  5. * extras: mirrors.aliyun.com
  6. * updates: mirrors.aliyun.com
  7. Resolving Dependencies
  8. --> Running transaction check
  9. ---> Package MariaDB-server.x86_64 0:10.1.46-1.el7.centos will be installed
  10. --> Processing Dependency: MariaDB-client for package: MariaDB-server-10.1.46-1.el7.centos.x86_64
  11. --> Processing Dependency: rsync for package: MariaDB-server-10.1.46-1.el7.centos.x86_64
  12. --> Processing Dependency: MariaDB-common for package: MariaDB-server-10.1.46-1.el7.centos.x86_64
  13. --> Processing Dependency: galera for package: MariaDB-server-10.1.46-1.el7.centos.x86_64
  14. --> Processing Dependency: libjemalloc.so.1()(64bit) for package: MariaDB-server-10.1.46-1.el7.centos.x86_64
  15. --> Running transaction check
  16. ……省略部分内容……
  17.  
  18. Installed:
  19. MariaDB-server.x86_64 0:10.1.46-1.el7.centos MariaDB-shared.x86_64 0:10.1.46-1.el7.centos
  20.  
  21. Dependency Installed:
  22. MariaDB-client.x86_64 0:10.1.46-1.el7.centos MariaDB-common.x86_64 0:10.1.46-1.el7.centos
  23. boost-program-options.x86_64 0:1.53.0-28.el7 galera.x86_64 0:25.3.29-1.rhel7.el7.centos
  24. jemalloc.x86_64 0:3.6.0-1.el7 rsync.x86_64 0:3.1.2-10.el7
  25.  
  26. Replaced:
  27. mariadb-libs.x86_64 1:5.5.56-2.el7
  28.  
  29. Complete!
  30. [root@node01 ~]#

  提示:mariadb-server包名是大写的MariaDB-server;

  配置mariadb忽略名称解析

  设置mariadb开机自动启动,并启动mariadb

  添加用于mogilefs访问数据库的账号

  初始化数据库

  1. [root@node01 ~]# mogdbsetup --help
  2. Usage: mogdbsetup [opts]
  3.  
  4. Options:
  5.  
  6. Default Description
  7. ============ ===========================================
  8. --verbose <off> Be verbose about what's happening.
  9.  
  10. --dbhost= localhost hostname or IP to database server.
  11.  
  12. --dbport= dbd default port number to database server.
  13.  
  14. --dbname= mogilefs database name to create/upgrade.
  15.  
  16. --dbrootuser= root Database administrator username. Only needed
  17. for initial setup, not subsequent upgrades.
  18.  
  19. --dbrootpass= <blank> Database administrator password. Only needed
  20. for initial setup, not subsequent upgrades.
  21.  
  22. --dbuser= mogile Regular database user to create and/or use
  23. for MogileFS database. This is what the
  24. mogilefsd trackers connect as.
  25.  
  26. --dbpass= <blank> You should change this, especially if your
  27. database servers are accessible to other users
  28. on the network. But they shouldn't be
  29. if you're running MogileFS, because MogileFS
  30. assumes your network is closed.
  31.  
  32. --type= MySQL Which MogileFS::Store implementation to use.
  33. Available: MySQL, Postgres
  34.  
  35. --yes Run without questions.
  36.  
  37. [root@node01 ~]# mogdbsetup --dbhost=192.168.0.41 --dbport=3306 --dbname=mogilefs --dbrootpass=admin --dbuser=mogilefs --dbpass=mogilefs
  38.  
  39. This will attempt to setup or upgrade your MogileFS database.
  40. It won't destroy existing data.
  41. Run with --help for more information. Run with --yes to shut up these prompts.
  42.  
  43. Continue? [N/y]: y
  44.  
  45. Create/Upgrade database name 'mogilefs'? [Y/n]: y
  46.  
  47. Grant all privileges to user 'mogilefs', connecting from anywhere, to the mogilefs database 'mogilefs'? [Y/n]: n
  48. Stopped.
  49. [root@node01 ~]# mogdbsetup --dbhost=192.168.0.41 --dbport=3306 --dbname=mogilefs --dbrootpass=admin --dbuser=mogilefs --dbpass=mogilefs
  50.  
  51. This will attempt to setup or upgrade your MogileFS database.
  52. It won't destroy existing data.
  53. Run with --help for more information. Run with --yes to shut up these prompts.
  54.  
  55. Continue? [N/y]: y
  56. [root@node01 ~]#

  提示:如果不想让mogdbsetup在数据库中创建一个任何地址都可访问的mogilefs的用户,在最后的选项中使用n即可,然后在重复执行上述命令即可;如果不想交互式输入y,也可以直接在命令后面用--yes;

  验证:在数据库中查看对应的库是否都已创建,对应库中是否都有表?

  1. [root@node01 ~]# mysql
  2. Welcome to the MariaDB monitor. Commands end with ; or \g.
  3. Your MariaDB connection id is 7
  4. Server version: 10.1.46-MariaDB MariaDB Server
  5.  
  6. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  7.  
  8. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  9.  
  10. MariaDB [(none)]> show databases;
  11. +--------------------+
  12. | Database |
  13. +--------------------+
  14. | information_schema |
  15. | mogilefs |
  16. | mysql |
  17. | performance_schema |
  18. | test |
  19. +--------------------+
  20. 5 rows in set (0.01 sec)
  21.  
  22. MariaDB [(none)]> use mogilefs
  23. Reading table information for completion of table and column names
  24. You can turn off this feature to get a quicker startup with -A
  25.  
  26. Database changed
  27. MariaDB [mogilefs]> show tables;
  28. +----------------------+
  29. | Tables_in_mogilefs |
  30. +----------------------+
  31. | checksum |
  32. | class |
  33. | device |
  34. | domain |
  35. | file |
  36. | file_on |
  37. | file_on_corrupt |
  38. | file_to_delete |
  39. | file_to_delete2 |
  40. | file_to_delete_later |
  41. | file_to_queue |
  42. | file_to_replicate |
  43. | fsck_log |
  44. | host |
  45. | server_settings |
  46. | tempfile |
  47. | unreachable_fids |
  48. +----------------------+
  49. 17 rows in set (0.00 sec)
  50.  
  51. MariaDB [mogilefs]>

  到此数据库就准备好了

  配置mogilefsd连接数据库

  提示:我们只需要修改红框中的内容即可;db_dsn用于指定连接数据库的驱动,以及数据库库名和主机地址;db_user用于指定连接数据库所使用的用户,db_pass用于指定连接数据库的密码;listen用于指定mogilefsd监听的ip地址和端口;后面的配置就是和启动的进程数量的配置,这个可以根据业务的规模来设置;

  启动mogilefsd

  提示:在centos7上启动mogilefsd时,会报错,我们可以不用管这个错误,实际上mogilefsd是启动成功的,只要看到对应的端口和进程起来,表示mogilefsd启动就没有问题;

  配置node01上的mogstored

  1. [root@node01 ~]# cat /etc/mogilefs/mogstored.conf
  2. maxconns = 10000
  3. httplisten = 0.0.0.0:7500
  4. mgmtlisten = 0.0.0.0:7501
  5. docroot = /data/mogilefs
  6. [root@node01 ~]# mkdir /data/mogilefs/ -pv
  7. mkdir: created directory ‘/data
  8. mkdir: created directory ‘/data/mogilefs/’
  9. [root@node01 ~]# chown -R mogilefs.mogilefs /data/mogilefs/
  10. [root@node01 ~]# ll -d /data/mogilefs/
  11. drwxr-xr-x 2 mogilefs mogilefs 6 Sep 16 13:37 /data/mogilefs/
  12. [root@node01 ~]#

  启动mogstored

  提示:在centos7上启动mogstored也会同启动mogilefsd一样报错,这个主要是因为systemd的缘故,在centos6不会报错;到此,node01上的mariadb、mogilefsd和mogstored都已经安装配置好了;

  复制安装包到node02和node03

  在node02上安装

  1. [root@node02 ~]# yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslog perl-IO-AIO ./*.rpm -y
  2. Loaded plugins: fastestmirror
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.aliyun.com
  5. * extras: mirrors.aliyun.com
  6. * updates: mirrors.aliyun.com
  7. Package perl-Net-Netmask-1.9015-13.el7.noarch already installed and latest version
  8. Package perl-IO-stringy-2.110-22.el7.noarch already installed and latest version
  9. Package perl-Sys-Syslog-0.33-3.el7.x86_64 already installed and latest version
  10. Package perl-IO-AIO-4.20-1.el7.x86_64 already installed and latest version
  11. Examining ./MogileFS-Server-2.46-2.el7.centos.noarch.rpm: MogileFS-Server-2.46-2.el7.centos.noarch
  12. Marking ./MogileFS-Server-2.46-2.el7.centos.noarch.rpm to be installed
  13. Examining ./MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm: MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch
  14. Marking ./MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm to be installed
  15. Examining ./MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm: MogileFS-Server-mogstored-2.46-2.el7.centos.noarch
  16. Marking ./MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm to be installed
  17. Examining ./MogileFS-Utils-2.19-1.el7.centos.noarch.rpm: MogileFS-Utils-2.19-1.el7.centos.noarch
  18. Marking ./MogileFS-Utils-2.19-1.el7.centos.noarch.rpm to be installed
  19. Examining ./perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm: perl-Danga-Socket-1.61-1.el6.rf.noarch
  20. Marking ./perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm to be installed
  21. Examining ./perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm: perl-MogileFS-Client-1.14-1.el7.centos.noarch
  22. Marking ./perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm to be installed
  23. Examining ./perl-Perlbal-1.78-1.el6.noarch.rpm: perl-Perlbal-1.78-1.el6.noarch
  24. Marking ./perl-Perlbal-1.78-1.el6.noarch.rpm to be installed
  25. Resolving Dependencies
  26. --> Running transaction check
  27. ---> Package MogileFS-Server.noarch 0:2.46-2.el7.centos will be installed
  28. ---> Package MogileFS-Server-mogilefsd.noarch 0:2.46-2.el7.centos will be installed
  29. --> Processing Dependency: perl(DBI) >= 1.44 for package: MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch
  30. ……省略部分内容……
  31. Installed:
  32. MogileFS-Server.noarch 0:2.46-2.el7.centos
  33. MogileFS-Server-mogilefsd.noarch 0:2.46-2.el7.centos
  34. MogileFS-Server-mogstored.noarch 0:2.46-2.el7.centos
  35. MogileFS-Utils.noarch 0:2.19-1.el7.centos
  36. perl-Danga-Socket.noarch 0:1.61-1.el6.rf
  37. perl-MogileFS-Client.noarch 0:1.14-1.el7.centos
  38. perl-Perlbal.noarch 0:1.78-1.el6
  39.  
  40. Dependency Installed:
  41. mailcap.noarch 0:2.1.41-2.el7 perl-BSD-Resource.x86_64 0:1.29.07-1.el7
  42. perl-Business-ISBN.noarch 0:2.06-2.el7 perl-Business-ISBN-Data.noarch 0:20120719.001-2.el7
  43. perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  44. perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-DBI.x86_64 0:1.627-4.el7
  45. perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-Digest.noarch 0:1.17-245.el7
  46. perl-Digest-MD5.x86_64 0:2.52-3.el7 perl-Encode-Locale.noarch 0:1.03-5.el7
  47. perl-File-Listing.noarch 0:6.04-7.el7 perl-HTML-Parser.x86_64 0:3.71-4.el7
  48. perl-HTML-Tagset.noarch 0:3.20-15.el7 perl-HTTP-Cookies.noarch 0:6.01-5.el7
  49. perl-HTTP-Daemon.noarch 0:6.01-8.el7 perl-HTTP-Date.noarch 0:6.02-8.el7
  50. perl-HTTP-Message.noarch 0:6.06-6.el7 perl-HTTP-Negotiate.noarch 0:6.01-5.el7
  51. perl-IO-Compress.noarch 0:2.061-2.el7 perl-IO-HTML.noarch 0:1.00-2.el7
  52. perl-IO-Socket-IP.noarch 0:0.21-5.el7 perl-IO-Socket-SSL.noarch 0:1.94-7.el7
  53. perl-LWP-MediaTypes.noarch 0:6.02-2.el7 perl-Mozilla-CA.noarch 0:20130114-5.el7
  54. perl-Net-Daemon.noarch 0:0.48-5.el7 perl-Net-HTTP.noarch 0:6.06-2.el7
  55. perl-Net-LibIDN.x86_64 0:0.12-15.el7 perl-Net-SSLeay.x86_64 0:1.55-6.el7
  56. perl-PlRPC.noarch 0:0.2020-14.el7 perl-Sys-Syscall.noarch 0:0.25-10.el7
  57. perl-TimeDate.noarch 1:2.30-2.el7 perl-URI.noarch 0:1.60-9.el7
  58. perl-WWW-RobotRules.noarch 0:6.02-5.el7 perl-libwww-perl.noarch 0:6.05-2.el7
  59.  
  60. Complete!
  61. [root@node02 ~]#

  把node01上的mogilefsd的配置文件复制到node02上,然后启动mogilefsd

  把node01上的mogstored配置文件复制到node02上,然后在node02上创建对应的目录并修改属主和属组为mogilefs,然后启动mogstored

  到此node02上的mogilefsd和mogstored就安装配置启动好了;

  在node03上安装配置mogstored

  1. [root@node03 ~]# ls
  2. MogileFS-Server-2.46-2.el7.centos.noarch.rpm perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
  3. MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm
  4. MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm perl-Perlbal-1.78-1.el6.noarch.rpm
  5. MogileFS-Utils-2.19-1.el7.centos.noarch.rpm
  6. [root@node03 ~]# yum install ./MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm ./MogileFS-Utils-2.19-1.el7.centos.noarch.rpm ./perl-*.rpm perl-Net-Netmask perl-IO-stringy perl-Sys-Syslog perl-IO-AIO -y
  7. Loaded plugins: fastestmirror
  8. Examining ./MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm: MogileFS-Server-mogstored-2.46-2.el7.centos.noarch
  9. Marking ./MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm to be installed
  10. Examining ./MogileFS-Utils-2.19-1.el7.centos.noarch.rpm: MogileFS-Utils-2.19-1.el7.centos.noarch
  11. Marking ./MogileFS-Utils-2.19-1.el7.centos.noarch.rpm to be installed
  12. Examining ./perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm: perl-Danga-Socket-1.61-1.el6.rf.noarch
  13. Marking ./perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm to be installed
  14. Examining ./perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm: perl-MogileFS-Client-1.14-1.el7.centos.noarch
  15. Marking ./perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm to be installed
  16. Examining ./perl-Perlbal-1.78-1.el6.noarch.rpm: perl-Perlbal-1.78-1.el6.noarch
  17. Marking ./perl-Perlbal-1.78-1.el6.noarch.rpm to be installed
  18. Loading mirror speeds from cached hostfile
  19. * base: mirrors.aliyun.com
  20. * extras: mirrors.aliyun.com
  21. * updates: mirrors.aliyun.com
  22. Package perl-Net-Netmask-1.9015-13.el7.noarch already installed and latest version
  23. Package perl-IO-stringy-2.110-22.el7.noarch already installed and latest version
  24. Package perl-Sys-Syslog-0.33-3.el7.x86_64 already installed and latest version
  25. Package perl-IO-AIO-4.20-1.el7.x86_64 already installed and latest version
  26. Resolving Dependencies
  27. --> Running transaction check
  28. ---> Package MogileFS-Server-mogstored.noarch 0:2.46-2.el7.centos will be installed
  29. ---> Package MogileFS-Utils.noarch 0:2.19-1.el7.centos will be installed
  30. --> Processing Dependency: perl(Compress::Zlib) for package: MogileFS-Utils-2.19-1.el7.centos.noarch
  31. ……省略部分内容……
  32. Installed:
  33. MogileFS-Server-mogstored.noarch 0:2.46-2.el7.centos MogileFS-Utils.noarch 0:2.19-1.el7.centos
  34. perl-Danga-Socket.noarch 0:1.61-1.el6.rf perl-MogileFS-Client.noarch 0:1.14-1.el7.centos
  35. perl-Perlbal.noarch 0:1.78-1.el6
  36.  
  37. Dependency Installed:
  38. mailcap.noarch 0:2.1.41-2.el7 perl-BSD-Resource.x86_64 0:1.29.07-1.el7
  39. perl-Business-ISBN.noarch 0:2.06-2.el7 perl-Business-ISBN-Data.noarch 0:20120719.001-2.el7
  40. perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  41. perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-Digest.noarch 0:1.17-245.el7
  42. perl-Digest-MD5.x86_64 0:2.52-3.el7 perl-Encode-Locale.noarch 0:1.03-5.el7
  43. perl-File-Listing.noarch 0:6.04-7.el7 perl-HTML-Parser.x86_64 0:3.71-4.el7
  44. perl-HTML-Tagset.noarch 0:3.20-15.el7 perl-HTTP-Cookies.noarch 0:6.01-5.el7
  45. perl-HTTP-Daemon.noarch 0:6.01-8.el7 perl-HTTP-Date.noarch 0:6.02-8.el7
  46. perl-HTTP-Message.noarch 0:6.06-6.el7 perl-HTTP-Negotiate.noarch 0:6.01-5.el7
  47. perl-IO-Compress.noarch 0:2.061-2.el7 perl-IO-HTML.noarch 0:1.00-2.el7
  48. perl-IO-Socket-IP.noarch 0:0.21-5.el7 perl-IO-Socket-SSL.noarch 0:1.94-7.el7
  49. perl-LWP-MediaTypes.noarch 0:6.02-2.el7 perl-Mozilla-CA.noarch 0:20130114-5.el7
  50. perl-Net-HTTP.noarch 0:6.06-2.el7 perl-Net-LibIDN.x86_64 0:0.12-15.el7
  51. perl-Net-SSLeay.x86_64 0:1.55-6.el7 perl-Sys-Syscall.noarch 0:0.25-10.el7
  52. perl-TimeDate.noarch 1:2.30-2.el7 perl-URI.noarch 0:1.60-9.el7
  53. perl-WWW-RobotRules.noarch 0:6.02-5.el7 perl-libwww-perl.noarch 0:6.05-2.el7
  54.  
  55. Complete!
  56. [root@node03 ~]#

  复制node01上的mogstored配置文件到node03上,然后在node03上创建对应的目录并修改属主和属组为mogilefs,然后启动mogstored

  提示:在node03上没有安装mogilefs-server这个包,所以在对应系统上没有mogilefs这个账号,我们需要手动创建这个账号;

  启动mogstored

  到此三个节点的环境配置,以及服务都已经正常启动了;

  四、使用mogadm管理mogilefs

  把三个storage节点注册到tracker上

  提示:如果集群各节点没有做hosts主机名解析,那么对应的的节点就需要写清楚ip地址即可,如果端口不是7500,我们还需要用--port去指定端口;

  检查集群

  提示:在tracker节点监听在本机所有地址的7001,执行上述命令不需要加--trackers选项来指明tracker是谁,它默认会去找本机的7001;否则执行上述命令需要加上--trackers来指定tracer的地址和端口;

  在非tracker节点执行检查集群的命令

  创建devices

  分别在3个mogstored节点的docroot说指定的目录下创建以dev+数字的目录,并将属主和属组修改成mogilefs

  1. [root@node03 ~]# mkdir /data/mogilefs/dev3
  2. [root@node03 ~]# chown -R mogilefs.mogilefs /data/mogilefs/dev3
  3. [root@node03 ~]# ll -d /data/mogilefs/dev3
  4. drwxr-xr-x 3 mogilefs mogilefs 37 Sep 16 21:02 /data/mogilefs/dev3
  5. [root@node03 ~]#

  添加device

  查看device

  提示:如果在指定节点的docroot所指定的目录下没有创建dev+设备编号的目录,上面是看不到对应设备的空间大小的;

  创建domain

  创建class

  好了,到此我们就可以上传文件了

  上传文件,把/etc/passwd上传到files域中,使用html class

  提示:mogupload这个工具是mogilefs的一个上传文件的工具,其中--domain用于指定域,就是把文件放到那个名称空间中;--class用于指定使用那个class策略来同步文件,默认不指定使用default;--key用于指定客户端访问文件的路径;--file用于指定要上传的文件路径;

  查看上传文件的信息

  提示:查看上传文件的信息需要用mogfileinfo这个工具,我们只需要指定trancker,domain以及文件的key就可以看到,该文件的class,devcount,domain,fid,key,length,以及访问http地址;这里需要说明一下,我们刚才在创建files域中的html这个class 我们指定了mindevcount=3,表示只要使用这个class上传文件,文件至少有3个副本;而我们现在看到的只有一个,这是因为在centos7上,Sys-syscall这个包的版本过高,导致mogilefs异常;

  降级Sys-Syscall,解决centos7上安装mogilefs 后端mogstored 同步问题

  安装perl编译环境

  1. [root@node01 ~]# yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
  2. Loaded plugins: fastestmirror
  3. base | 3.6 kB 00:00:00
  4. epel | 4.7 kB 00:00:00
  5. extras | 2.9 kB 00:00:00
  6. mariadb | 2.9 kB 00:00:00
  7. updates | 2.9 kB 00:00:00
  8. (1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:00
  9. (2/2): epel/x86_64/primary_db | 6.9 MB 00:00:00
  10. Loading mirror speeds from cached hostfile
  11. * base: mirrors.aliyun.com
  12. * extras: mirrors.aliyun.com
  13. * updates: mirrors.aliyun.com
  14. Package gcc-4.8.5-39.el7.x86_64 already installed and latest version
  15. Package unzip-6.0-21.el7.x86_64 already installed and latest version
  16. Package perl-DBD-MySQL-4.023-6.el7.x86_64 already installed and latest version
  17. Package 4:perl-5.16.3-295.el7.x86_64 already installed and latest version
  18. Package 4:perl-Time-HiRes-1.9725-3.el7.x86_64 already installed and latest version
  19. Resolving Dependencies
  20. --> Running transaction check
  21. ---> Package make.x86_64 1:3.82-23.el7 will be updated
  22. ---> Package make.x86_64 1:3.82-24.el7 will be an update
  23. ---> Package perl-CPAN.noarch 0:1.9800-295.el7 will be installed
  24. --> Processing Dependency: perl(local::lib) for package: perl-CPAN-1.9800-295.el7.noarch
  25. ……省略部分内容……
  26. Installed:
  27. perl-CPAN.noarch 0:1.9800-295.el7 perl-YAML.noarch 0:0.84-5.el7
  28.  
  29. Dependency Installed:
  30. gdbm-devel.x86_64 0:1.10-8.el7 libdb-devel.x86_64 0:5.3.21-25.el7
  31. perl-Digest-SHA.x86_64 1:5.85-4.el7 perl-ExtUtils-Install.noarch 0:1.58-295.el7
  32. perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7 perl-ExtUtils-Manifest.noarch 0:1.61-244.el7
  33. perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7 perl-Test-Harness.noarch 0:3.28-3.el7
  34. perl-devel.x86_64 4:5.16.3-295.el7 perl-local-lib.noarch 0:1.008010-4.el7
  35. pyparsing.noarch 0:1.5.6-9.el7 systemtap-sdt-devel.x86_64 0:4.0-11.el7
  36.  
  37. Updated:
  38. make.x86_64 1:3.82-24.el7
  39.  
  40. Dependency Updated:
  41. libdb.x86_64 0:5.3.21-25.el7 libdb-utils.x86_64 0:5.3.21-25.el7
  42.  
  43. Complete!
  44. [root@node01 ~]#

  提示:在mogstored节点上都要安装好perl环境依赖包;然后按照下面的步骤重新编译安装Sys-Syscall;然后重启mogstored即可生效;

  下载低版本的Sys-Syscall源码包,并解压,进入到源码目录

  编译安装Sys-Syscall

  验证

  重启mogstored,mogilefsd

  提示:所有storage节点都有重新编译安装Sys-Syscall,然后重启mogstored;对应的tracker节点也需要重启mogilefsd;

  上传文件看看对应的副本数量是否还是只有一个?

  提示:可以看到对应的devcount和我们之前指定的class上的mindevcount就一样了;

  验证:访问指定上述任一一个地址,看看访问到的文件内容是否是我们上传到文件内容?

  提示:可以看到我们上传到文件内容在tracker给我们返回的地址上能够访问到,并且里面的内容也是一样的;

  验证:停掉node02上的mogstored,看看对应的tracker是否能够及时发现对应的storage不在线了呢?

  提示:可以看到当node02上的mogstored挂掉以后,在检查集群,tracker就能及时的发现对应的设备不在线了,这个有点类似nginx对后端web服务器做健康状态监测的感觉;也就说tracker在监视着注册在tracker上的storage节点;

  到此,mogilefs在centos7上的安装部署,以及使用mogadm工具管理集群就完成了,对于mogilefs通常我们上传文件是通过业务程序调用api实现,mogupload只是一个测试工具;对于查看文件,通常用户也不会使用mogfieinfo返回的链接去查看文件,通常会使用一个web反向代理(nginx)去代理用户的访问;比如用户要查看/images/test.jpg,而在tracker返回的对应资源的链接中,一定不是/images/test.jpg,这个时候我们就需要用到web反向代理,让其反向代理能够帮助我们去tracker取到对应uri的资源链接,从而帮助我们去storage节点获取到对应的文件,然后再返回给用户;最后还是建议,如果用到mogilefs,最好跑在centos6上,centos7系统环境较高,有些依赖可能成问题;在centos6上,我测试过,完全没有上述的问题;我们只需要安装perl-IO-AIO这一个依赖包就可以解决mogstored启动问题;centos6上需要用到的rpm包可以去我的网盘下载http://www.qiuhom.com/d/47e8f7ac56a445f1bfc6/

分布式文件系统之MogileFS的安装使用的更多相关文章

  1. 分布式文件系统之MogileFS工作原理及实现过程

    MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上.MogileFS由3个部分组成:   第1个部分:是server端,包 ...

  2. 【架构设计】分布式文件系统 FastDFS的原理和安装使用

    本文地址 分享提纲: 1.概述 2. 原理 3. 安装 4. 使用 5. 参考文档 1. 概述 1.1)[常见文件系统] Google了一下,流行的开源分布式文件系统有很多,介绍如下:   -- mo ...

  3. centos 6.5环境下分布式文件系统MogileFS工作原理及分布式部署实现过程

    MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上 MogileFS由3个部分组成:    第1个部分:是server端, ...

  4. 构建Mogilefs分布式文件系统(配置篇)

    构建Mogilefs分布式文件系统:  当下互联网飞速发展,海量并发所产生的数据量以几何方式增长,随着信息链接方式日益多样化,数据存储的结构也发生了变化,在这样的压力下我们不得不重新审视大量数据的存储 ...

  5. 分布式文件系统 ~MogileFS~

    一.分布式文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,也就是集群文件系统,可以支持 ...

  6. 分布式存储之MogileFS分布式文件系统简单应用

    一.分布式存储原理: 分布式存储系统,是将数据分散存储在多台独立的设备上.传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储 ...

  7. Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)

    文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...

  8. 分布式文件系统之FastDFS安装部署

    前面我们了解了分布式文件系统mogilefs的框架以及安装部署和简单使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/MogileFS/:今天我们来了解下 ...

  9. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

随机推荐

  1. [Kong 与 Konga与postgres数据库] 之 Kuberneres 部署

    1.Kong的概述 Kong是一个clould-native.快速的.可扩展的.分布式的微服务抽象层(也称为API网关.API中间件或在某些情况下称为服务网格)框架.Kong作为开源项目在2015年推 ...

  2. 报错:org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.deppon.gis.module.job.server.server.impl.HaoDuanEntity'.

  3. 已废弃_CSDN慕零的黑夜-头条-第一期(必问)[导读:]1.CSDN必问赏金流向何方 2.CSDN必问偷偷做的手脚 3.CSDN必问靠谱吗 4.关于钱于回答的平衡问题:一美元拍卖骗局qq3461896724

    [本文有已知的链接差错,懒得改了] 本期是关于CSDN 必问 (biwen.csdn.net)的内容,欢迎评论文末,文中插入有 小姐姐 img(附py代码,1.49G) + coding资料 哟~~~ ...

  4. leetcode刷题记录——树

    递归 104.二叉树的最大深度 /** * Definition for a binary tree node. * public class TreeNode { * int val; * Tree ...

  5. client-go workqueue demo

    链接地址:https://github.com/kubernetes/client-go [root@wangjq examples]# tree . ├── create-update-delete ...

  6. Java异步CompletableFuture的使用

    所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法.Java中的CompletableFuture 提供了四个静态方法来创建一个异步操作. public static Co ...

  7. Ubuntu 20.04美化及QQ、微信安装

    1.前言 电脑用了很多年了,安装的windows7,经常出现很卡的情况,于是今天索性重装了系统.既然重装系统,选择什么系统好呢,windows10系统的话,对于我这老旧本来说,可能真的是为难它了.刚好 ...

  8. 第5篇scrum冲刺(5.25)

    一.站立会议 1.照片 2.工作安排 成员 昨天已完成的工作 今天的工作安排 困难 陈芝敏   线下模块(还剩下获取词的数据库)  研究云开发,更新了登录模块,把用户的信息传入数据库了  起初在云函数 ...

  9. python连接mysql中报错1064修改方法

    Python是编程语言,MySQL是数据库,它们是两种不同的技术:要想使Python操作MySQL数据库需要使用驱动.这里选用PyMySQL驱动.下载地址: https://pypi.python.o ...

  10. Ant Design Vue使用支持v-model效验的FormModel表单遇到的一个坑

    按照官网上用法写好表单后,在a-select上绑定了change事件 <a-form-model-item label="类型" prop="config.type ...