在CentOS 6.4上安装配置GlusterFS

背景介绍:

项目目前在文件同步方面采用的是rsync,在尝试用分布式文件系统替换的时候,使用过MooseFS,效果差强人意,在了解到了GlusterFS之
后,决定尝试一下,因为它跟MooseFS相比,感觉部署上更加简单一些,同时没有元数据服务器的特点使其没有单点故障的存在,感觉非常不错。

环境介绍:

OS: CentOS 6.4 x86_64 Minimal
Servers: sc2-log1,sc2-log2,sc2-log3,sc2-log4
Client: sc2-ads15

具体步骤:

1. 在sc2-log{1-4}上安装GlusterFS软件包:
# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo
# yum install -y glusterfs-3.4.2-1.el6 glusterfs-server-3.4.2-1.el6 glusterfs-fuse-3.4.2-1.el6

# /etc/init.d/glusterd start
# chkconfig glusterfsd on

2. 在sc2-log1上配置整个GlusterFS集群:
[[email protected] ~]# gluster peer probe sc2-log1

peer probe: success: on localhost not needed

[[email protected] ~]# gluster peer probe sc2-log2

peer probe: success

[[email protected] ~]# gluster peer probe sc2-log3

peer probe: success

[[email protected] ~]# gluster peer probe sc2-log4

peer probe: success

[[email protected] ~]# gluster peer status

Number of Peers: 3

Hostname: sc2-log2
Port: 24007
Uuid: 399973af-bae9-4326-9cbd-b5b05e5d2927
State: Peer in Cluster (Connected)

Hostname: sc2-log3
Port: 24007
Uuid: 833a7b8d-e3b3-4099-baf9-416ee7213337
State: Peer in Cluster (Connected)

Hostname: sc2-log4
Port: 24007
Uuid: 54bf115a-0119-4021-af80-7a6bca137fd9
State: Peer in Cluster (Connected)

3. 在sc2-log{1-4}上创建数据存放目录:
# mkdir -p /usr/local/share/{models,geoip,wurfl}
# ls -l /usr/local/share/

total 24
drwxr-xr-x   2 root root 4096 Apr  1 12:19 geoip
drwxr-xr-x   2 root root 4096 Apr  1 12:19 models
drwxr-xr-x   2 root root 4096 Apr  1 12:19 wurfl

4. 在sc2-log1上创建GlusterFS磁盘:
[[email protected] ~]# gluster volume create models replica 4
sc2-log1:/usr/local/share/models sc2-log2:/usr/local/share/models
sc2-log3:/usr/local/share/models sc2-log4:/usr/local/share/models force

volume create: models: success: please start the volume to access data

[[email protected] ~]# gluster volume create geoip replica 4 sc2-log1:/usr/local/share/geoip sc2-log2:/usr/local/share/geoip sc2-log3:/usr/local/share/geoip sc2-log4:/usr/local/share/geoip force

volume create: geoip: success: please start the volume to access data

[[email protected] ~]# gluster volume create wurfl replica 4 sc2-log1:/usr/local/share/wurfl sc2-log2:/usr/local/share/wurfl sc2-log3:/usr/local/share/wurfl sc2-log4:/usr/local/share/wurfl force

volume create: wurfl: success: please start the volume to access data

[[email protected] ~]# gluster volume start models

volume start: models: success

[[email protected] ~]# gluster volume start geoip

volume start: geoip: success

[[email protected] ~]# gluster volume start wurfl

volume start: wurfl: success

[[email protected] ~]# gluster volume info

Volume Name: models
Type: Replicate
Volume ID: b29b22bd-6d8c-45c0-b199-91fa5a76801f
Status: Started
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: sc2-log1:/usr/local/share/models
Brick2: sc2-log2:/usr/local/share/models
Brick3: sc2-log3:/usr/local/share/models
Brick4: sc2-log4:/usr/local/share/models

Volume Name: geoip
Type: Replicate
Volume ID: 69b0caa8-7c23-4712-beae-6f536b1cffa3
Status: Started
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: sc2-log1:/usr/local/share/geoip
Brick2: sc2-log2:/usr/local/share/geoip
Brick3: sc2-log3:/usr/local/share/geoip
Brick4: sc2-log4:/usr/local/share/geoip

Volume Name: wurfl
Type: Replicate
Volume ID: c723a99d-eeab-4865-819a-c0926cf7b88a
Status: Started
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: sc2-log1:/usr/local/share/wurfl
Brick2: sc2-log2:/usr/local/share/wurfl
Brick3: sc2-log3:/usr/local/share/wurfl
Brick4: sc2-log4:/usr/local/share/wurfl

5. 在sc2-ads15上部署客户端并mount GlusterFS文件系统:
[sc2-ads15][[email protected] ~]# wget -P /etc/yum.repos.d
http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo

[sc2-ads15][[email protected] ~]# yum install -y glusterfs-3.4.2-1.el6 glusterfs-fuse-3.4.2-1.el6
[sc2-ads15][[email protected] ~]# mkdir -p /mnt/{models,geoip,wurfl}
[sc2-ads15][[email protected] ~]# mount -t glusterfs -o ro sc2-log3:models /mnt/models/
[sc2-ads15][[email protected] ~]# mount -t glusterfs -o ro sc2-log3:geoip /mnt/geoip/
[sc2-ads15][[email protected] ~]# mount -t glusterfs -o ro sc2-log3:wurfl /mnt/wurfl/
[sc2-ads15][[email protected] ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_t-lv_root
  59G  7.7G   48G  14% /
tmpfs                 3.9G     0  3.9G   0% /dev/shm
/dev/xvda1            485M   33M  428M   8% /boot
sc2-log3:models        98G  8.6G   85G  10% /mnt/models
sc2-log3:geoip         98G  8.6G   85G  10% /mnt/geoip
sc2-log3:wurfl         98G  8.6G   85G  10% /mnt/wurfl

6. 相关数据读写可用性测试:
在sc2-ads15挂载点上写入数据:
[sc2-ads15][[email protected] ~]# umount /mnt/models
[sc2-ads15][[email protected] ~]# mount -t glusterfs sc2-log3:models /mnt/models/
[sc2-ads15][[email protected] ~]# echo "This is sc2-ads15" > /mnt/models/hello.txt
[sc2-ads15][[email protected] ~]# mkdir /mnt/testdir
在sc2-log1数据目录中进行查看:
[[email protected] ~]# ls /usr/local/share/models/

hello.txt testdir

结果: 数据写入成功

在sc2-log1数据目录中直接写入数据:
[[email protected] ~]# echo "This is sc2-log1" > /usr/local/share/models/hello.2.txt
[[email protected] ~]# mkdir /usr/local/share/models/test2
在sc2-ads15挂载点上进行查看:
[sc2-ads15][[email protected] ~]# ls /mnt/models
[sc2-ads15][[email protected] ~]# ls -l /mnt/models

hello.txt testdir

结果: 数据写入失败

在sc2-log1挂载点上写入数据:
[[email protected] ~]# mount -t glusterfs sc2-log1:models /mnt/models/
[[email protected] ~]# echo "This is sc2-log1" > /mnt/models/hello.3.txt
[[email protected] ~]# mkdir /mnt/models/test3
在sc2-ads15挂载点上进行查看:
[sc2-ads15][[email protected] models]# ls /mnt/models

hello.2.txt  hello.3.txt hello.txt  test2  test3  testdir

结果: 数据写入成功,同时之前写入失败的数据也成功加载了。

最终结论:
在数据目录中直接写入数据,会导致其它节点因为得不到通知而使数据同步失败。
正确的做法是所有的读写操作都通过挂载点来进行。

7. 其它操作笔记:
删除GlusterFS磁盘:
# gluster volume stop models
# gluster volume delete models

卸载GlusterFS磁盘:
# gluster peer detach sc2-log4

ACL访问控制:
# gluster volume set models auth.allow 10.60.1.*

添加GlusterFS节点:
# gluster peer probe sc2-log5
# gluster peer probe sc2-log6
# gluster volume add-brick models sc2-log5:/data/gluster sc2-log6:/data/gluster

迁移GlusterFS磁盘数据:
# gluster volume remove-brick models sc2-log1:/usr/local/share/models sc2-log5:/usr/local/share/models start
# gluster volume remove-brick models sc2-log1:/usr/local/share/models sc2-log5:/usr/local/share/models status
# gluster volume remove-brick models sc2-log1:/usr/local/share/models sc2-log5:/usr/local/share/models commit

修复GlusterFS磁盘数据(例如在sc2-log1宕机的情况下):
# gluster volume replace-brick models sc2-log1:/usr/local/share/models sc2-log5:/usr/local/share/models commit -force
# gluster volume heal models full

http://www.tuicool.com/articles/zQVZ7z

时间: 2024-10-10 14:02:19

在CentOS 6.4上安装配置GlusterFS的相关文章

Centos 6.5上安装配置KVM

搭建环境 操作系统:CentOS 6.5 final x86_64 KVM:qemu-kvm-0.12.1.2-2.479.el6_7.3.x86_64 工具:Win7和vnc-viewer(先在服务器端装好VNC,通过VNC viewer连接服务器CentOS) 一.安装KVM及相关软件 1.KVM 需要有 CPU 的支持(Intel vmx 或 AMD svm),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持: [[email protected] kvm]# egrep '

在 CentOS 7.0 上安装配置 Ceph 存储

来自: https://linux.cn/article-6624-1.html Ceph 是一个将数据存储在单一分布式计算机集群上的开源软件平台.当你计划构建一个云时,你首先需要决定如何实现你的存储.开源的 Ceph 是红帽原生技术之一,它基于称为 RADOS 的对象存储系统,用一组网关 API 表示块.文件.和对象模式中的数据.由于它自身开源的特性,这种便携存储平台能在公有云和私有云上安装和使用.Ceph 集群的拓扑结构是按照备份和信息分布设计的,这种内在设计能提供数据完整性.它的设计目标就

怎样在 CentOS 7.0 上安装和配置 VNC 服务器

这是一个关于怎样在你的 CentOS 7 上安装配置 VNC 服务的教程.当然这个教程也适合 RHEL 7 .在这个教程里,我们将学习什么是 VNC 以及怎样在 CentOS 7 上安装配置 VNC 服务器. 我们都知道,作为一个系统管理员,大多数时间是通过网络管理服务器的.在管理服务器的过程中很少会用到图形界面,多数情况下我们只是用 SSH 来完成我们的管理任务.在这篇文章里,我们将配置 VNC 来提供一个连接我们 CentOS 7 服务器的方法.VNC 允许我们开启一个远程图形会话来连接我们

【ruby】【linux】【irb】CentOS上安装配置ruby开发环境,安装 irb

在读<理解Unix进程>这本书,书中代码是用Ruby写的,就自己想实践一下,搜来搜去要安装配置Ruby,我是centOS6.5的系统.下面这篇不错,我又加入了一点自己的理解和试验. 1 方法一:下载ruby的安装包来进行安装 1.安装编译环境gcc 使用yum install gcc在线安装 2.安装ruby开发环境 PS:经常在搜帖子的时候,大神的文章中都是随随便便下载个什么啊,又没告诉我这样的菜鸟到哪里下,让人几番周折,这里 下载 Ruby - Ruby 官方网站:https://www.

CentOS 7.0 上安装和配置 VNC 服务器

作为一个系统管理员,大多数时间是通过网络管理服务器的.在管理服务器的过程中很少会用到图形界面,多数情况下我们只是用 SSH 来完成我们的管理任务.在这篇文章里,我们将配置 VNC 来提供一个连接我们 CentOS 7 服务器的方法.VNC 允许我们开启一个远程图形会话来连接我们的服务器,这样我们就可以通过网络远程访问服务器的图形界面了. VNC 服务器是一个自由开源软件,它可以让用户可以远程访问服务器的桌面环境.另外连接 VNC 服务器需要使用 VNC viewer 这个客户端. 一些 VNC

CentOS上安装配置OpenVPN

CentOS6.7上安装配置OpenVPN 安装配置openvpn服务端 1.安装依赖 ntpdate pool.ntp.org yum -y install lzo lzo-devel-devel gcc pam-devel gcc-c++ 2.安装openvpn mkdir tools cd tools wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz tar xf openvpn-2.3.2.t

在CentOS 6.4上安装Puppet配置管理工具

在CentOS 6.4上安装Puppet配置管理工具 linux, puppetAdd comments 五052013 上篇说了下在ubuntu12.04上安装puppet,安装的版本为puppet2.7.11版本,今天尝试了下在CentOS6.4系统上安装puppet 3.1.1版本,本文参考chenshake的文章 ? 1 2 3 4 OS:centso 6.4 X64 Puppet 3.1.1 Puppet master: master.canghai.com Puppet client

CentOS 6.5上安装docker与docker对中文字符集的支持

一.CentOS 6.5上安装docker 在CentOS 6.5 还不能够直接通过yum install -y docker 来安装docker服务 在一些文档中有看到说是因为内核太低的原因导致的,因为docker至少要做3.8以上的版本才能安装, 但是我发现其实并不需要升级内核就可以实现docker的安装不过,也有可能我的安装存在偶然性, 但是我还是记录一下,以防日后忘记. 1.先查看下你的系统内核是多少 # uname -r 2.6.32-431.el6.x86_64 我的是CentOS

如何在CentOS 5.5上安装ruby 1.8.7

原文链接:http://heatware.net/linux-unix/how-to-install-ruby-1-8-7-centos-5-5/ 你曾经试过在CentOS 5.5上面运行 yum install ruby 命令吗?如果你使用的是默认的应用库配置,你会发现你安装的是老版本的Ruby 1.8.5.如果你还没有准备好升级到Ruby 1.9,而是准备安装Ruby 1.8.7,请往下看! 1 yum install -y gcc zlib zlib-devel 2 wget ftp://