一、           安装glusterfs服务端
  1. 1.  到阿里云取epel源,和官方的yum源才能安装。(本次把几个个yum源放到附件)

yuminstall glusterfs-server装完即可

启动glusterd

[root@server2yum.repos.d]# systemctl start glusterd

[root@server2yum.repos.d]# ps -ef | grep gluster

root      4732    1  0 16:22 ?        00:00:00 /usr/sbin/glusterd -p/var/run/glusterd.pid

root      4791 3789  0 16:25 pts/1    00:00:00 grep --color=auto gluster

可以看到glusterfs已经启动。

查看gluster的状态

[root@server2yum.repos.d]# gluster peer status

Connectionfailed. Please check if gluster daemon is operational.

可以看到以上报错了。可以用一下方法来解决此错误

[root@server2yum.repos.d]# rm /var/run/glusterd.socket

rm:是否删除套接字 "/var/run/glusterd.socket"?y

[root@server2yum.repos.d]# systemctl start glusterd

[root@server2yum.repos.d]# gluster peer status

Numberof Peers: 0

[root@server2yum.repos.d]#

可以看到此时已经恢复正常

在server1上重新执行上面的步骤。(步骤略)

二、           安装glusterfs客户端

同样配置好阿里云的yum源,和官方提供的源。安装glusterfs-cli-3.6.0.29-2.el6.x86_64 glusterfs-libs-3.6.0.29-2.el6.x86_64         glusterfs-fuse-3.6.0.29-2.el6.x86_64

glusterfs-3.6.0.29-2.el6.x86_64这四个安装包就行

三、           配置glusterfs服务端

首先要为两个服务端挂载额外的磁盘并且分区挂载到一个特定位置,本次挂载到/data

[root@server1 data]# df -HT

文件系统                类型      容量  已用  可用 已用% 挂载点

/dev/mapper/centos-root xfs        21G 4.3G   16G   22% /

devtmpfs                devtmpfs  509M    0  509M    0% /dev

tmpfs                   tmpfs    518M     0  518M   0% /dev/shm

tmpfs                   tmpfs     518M  14M  504M    3% /run

tmpfs                   tmpfs     518M    0  518M    0% /sys/fs/cgroup

/dev/sda1               xfs       312M 114M  198M   37% /boot

/dev/sdb1               xfs       5.4G  62M  5.3G    2% /data

 

[root@localhost data]# df -HT

文件系统                类型      容量  已用  可用 已用% 挂载点

/dev/mapper/centos-root xfs        21G 4.0G   17G   20% /

devtmpfs                devtmpfs  509M    0  509M    0% /dev

tmpfs                  tmpfs     518M    0  518M    0% /dev/shm

tmpfs                   tmpfs     518M 7.3M  511M    2% /run

tmpfs                   tmpfs     518M    0  518M    0% /sys/fs/cgroup

/dev/sda1               xfs       312M 114M  198M   37% /boot

/dev/sdb1               xfs       5.4G  61M  5.3G    2% /data

 

下面来让我们把两台glusterfs服务器做成一个群集

[root@server1 data]# gluster peer probe server2

查看当前状态,可以看到当前有两个节点了

[root@server1 data]# gluster peer status

Number of Peers: 1

Hostname: 192.168.2.29

Uuid: 60e180d4-dc68-4fac-a09e-225977c91340

State: Peer in Cluster (Connected)

Other names:

server2

 

下面创建几种类型的卷来实验一下效果

  • 哈希卷:(不提供冗余,根据一种特殊的算法访问服务端)

[root@server1 data]# gluster volume create haxi server1:/data/haxi_b1server2:/haxi_b2

  • 复制卷 (可以提供冗余,相当于raid1

[root@server1 data]#gluster volume create fuzhi replica 2server1:/data/fuzhi_b1 server2:/data/fuzhi_b2

  • 哈希复制卷

gluster volume create hxfz server1:/data/hxfz_b1server2:/data/hxfz_b1 server1:/data/hxfz_b2 server2:/data/hxfz_b2 force

  • 条带卷

gluster volume create tiaodai stripe 2server1:/data/tiaodai_b1 server2:/data/tiaodai_b2

查看卷的信息

[root@server1 data]# gluster volume info

 复制卷

Volume Name: fuzhi

Type: Replicate

Volume ID: 0bc17a47-c255-403e-b407-8ed6cdde136e

Status: Started

Number of Bricks: 1 x 2 = 2

Transport-type: tcp

Bricks:

Brick1: server1:/data/fuzhi_b1

Brick2: server2:/data/fuzhi_b2

Options Reconfigured:

performance.readdir-ahead: on

 哈希卷

Volume Name: haxi

Type: Distribute

Volume ID: 02700557-aabf-46ce-b04f-94349e448d84

Status: Started

Number of Bricks: 2

Transport-type: tcp

Bricks:

Brick1: server1:/data/haxi_b1

Brick2: server2:/data/haxi_b2

Options Reconfigured:

performance.readdir-ahead: on

 哈希复制卷

Volume Name: hxfz

Type: Distribute

Volume ID: 91647ca1-d8dc-4f9b-89f1-8bff7b5761f6

Status: Started

Number of Bricks: 4

Transport-type: tcp

Bricks:

Brick1: server1:/data/hxfz_b1

Brick2: server2:/data/hxfz_b1

Brick3: server1:/data/hxfz_b2

Brick4: server2:/data/hxfz_b2

Options Reconfigured:

performance.readdir-ahead: on

 条带卷

Volume Name: tiaodai

Type: Stripe

Volume ID: faba8182-be90-4fa6-8a56-dea887f94024

Status: Started

Number of Bricks: 1 x 2 = 2

Transport-type: tcp

Bricks:

Brick1: server1:/data/tiaodai_b1

Brick2: server2:/data/tiaodai_b2

Options Reconfigured:

performance.readdir-ahead: on


一、           在客户端进行挂载

首先在客户端创建挂载点

# mkdir haxi fuzhi hxfz tiaodai

进行挂载

挂载格式  mount  -t (类型) servername:卷的名字   本机挂载点

mount -t glusterfs server1:/haxi   haxi

mount –t glusterfs server1:/hxfz  hxfz

mount –t glusterfs server1:/fuzhi  fuzhi

mount –t glusterfs server1:/tiaodai  tiaodai

使用df命令查看挂载情况

[root@server1 fuzhi]# df -HT

Filesystem                   Type            Size  Used Avail Use% Mounted on

/dev/mapper/vg_erick-lv_root ext4             20G  1.9G  17G  11% /

tmpfs                        tmpfs           389M     0 389M   0% /dev/shm

/dev/sda1                    ext4            508M   35M 448M   8% /boot

server1:/fuzhi              fuse.glusterfs  5.4G   62M 5.3G   2% /root/fuzhi

server2:/fuzhi              fuse.glusterfs  5.4G   62M 5.3G   2% /root/fuzhi

server1:hxfz                 fuse.glusterfs   51G 8.0G   43G  16% /root/hxfz

server1:/haxi               fuse.glusterfs   26G  4.0G  22G  16% /root/haxi

server1:/tiaodai            fuse.glusterfs   26G  4.0G  22G  16% /root/fuzhi/tiaodai

现在可以查看当前客户端的进程

[root@server1 fuzhi]# ps -ef | grep glusterfs

root      2461     1  0Mar06 ?        00:00:02/usr/sbin/glusterfs --volfile-server=server1 --volfile-id=/fuzhi fuzhi/

root      2580     1  0Mar06 ?        00:00:02/usr/sbin/glusterfs --volfile-server=server2 --volfile-id=/fuzhi fuzhi/

root      2700     1  0Mar06 ?        00:00:02/usr/sbin/glusterfs --volfile-server=server1 --volfile-id=hxfz hxfz/

root      4672     1  006:39 ?        00:00:00/usr/sbin/glusterfs --volfile-server=server1 --volfile-id=/haxi haxi/

root      4752     1  006:45 ?        00:00:00/usr/sbin/glusterfs --volfile-server=server1 --volfile-id=/tiaodai tiaodai/

可以看到一个挂载对应这个一个进程。

二、           几种卷组的测试
  • 测试复制卷

复制卷就相当于raid0,可以做冗余,在写文件时,把流量写成2份到不同的server端。

首先在client端创建测试文件

[root@client fuzhi]# touch {1..10}

[root@client fuzhi]# ls

 1  10  2 3  4  5 6  7  8  9

分别在Server端查看文件是否产生

[root@server1 fuzhi_b1]# ls

1 10  2  3 4  5  6 7  8  9

 

[root@server2 fuzhi_b2]# ls

1 10  2  3 4  5  6 7  8  9

已经产生了文件。

测试更改文件内容

[root@client fuzhi]# echo"test">1

[root@client fuzhi]# cat 1

Test

 

[root@server2 fuzhi_b2]# cat 1

Test

 

[root@server1 fuzhi_b1]# cat 1

Test

测试删除

[root@client fuzhi]# rm * -f

[root@client fuzhi]# ll

total 0

 

[root@server1 fuzhi_b1]# ll

总用量 0

 

[root@server2 fuzhi_b2]# ll

总用量 0

可以看到现在两个server端已经没有数据

下面模拟一下当其中一个server宕机后的是怎么恢复的

[root@client fuzhi]# touch{1..10}

[root@client fuzhi]# ls

10  2 3  4  5 6  7  8  9

现在server1server2应该已经同步了数据

现在模拟server1的网络突然断开的情况

[root@server1fuzhi_b1]# systemctl stop network

现在我们继续用客户端进行写和删除操作

[root@client fuzhi]# touch{10..20}

[root@client fuzhi]# rm -f{1..10}

[root@client fuzhi]# ls

11  12 13  14  15 16  17  18 19  20

现在我们到server2上查看数据

[root@server2 fuzhi_b2]# ls

11  12 13  14  15 16  17  18 19  20

此时我们能看到server2 已经同步数据了,由于server1网络已经物理断开了,所以数据应该不会同步

下面我们对server1进行恢复

[root@server1 fuzhi_b1]# glustervolume heal fuzhi

下面在查看我们的数据

[root@server1 fuzhi_b1]# ls

11  12 13  14  15 16  17  18 19  20

发现我们的数据已经同步回来了!

模拟磁盘损坏并由server3顶替server1的位置

查看当前server1 server2 client的数据

[root@server1 fuzhi_b1]# ls

11  12  13 14  15  16  17  18 19  20

 

[root@server2 fuzhi_b2]# ls

11  12  13 14  15  16  17  18 19  20

 

[root@client fuzhi]# ls

11  12  13 14  15  16  17  18 19  20

查看当前复制分区的信息

[root@server2 fuzhi_b2]# gluster volume info fuzhi

 

Volume Name: fuzhi

Type: Replicate

Volume ID: 0bc17a47-c255-403e-b407-8ed6cdde136e

Status: Started

Number of Bricks: 1 x 2 = 2

Transport-type: tcp

Bricks:

Brick1: server1:/data/fuzhi_b1

Brick2: server2:/data/fuzhi_b2

Options Reconfigured:

features.inode-quota: on

features.quota: on

performance.readdir-ahead: on

可以看到此时的数据是一样的,现在我们把server1sdb盘卸载掉,然后用server3来顶替server1工作。

移除server1sdb后,现在可以看到server1/data目录以及损坏

[root@server1 data]# ls

ls: 无法打开目录.: 输入/输出错误

此时我们到客户端更新目录的内容

[root@client fuzhi]# touch {100..110}

[root@client fuzhi]# ls

100  101  102 103  104  105 106  107  108 109  11  110 12  13  14 15  16  17 18  19  20

 

[root@server2 fuzhi_b2]# ls

100  102  104 106  108  11  12  14  16 18  20

101  103  105 107  109  110 13  15  17  19

替换步骤:

  1. 1.        server1brick移除

[root@server2fuzhi_b2]# gluster volume remove-brick fuzhi replica 1 server1:/data/fuzhi_b1force

查看当前fuzhi卷的信息,现在可以看到只有server2的卷了

 

Removingbrick(s) can result in data loss. Do you want to Continue? (y/n) y

volume remove-brick commitforce: success

[root@server2 fuzhi_b2]#gluster volume info fuzhi


Volume Name: fuzhi

Type: Distribute

Volume ID:0bc17a47-c255-403e-b407-8ed6cdde136e

Status: Started

Number ofBricks: 1

Transport-type: tcp

Bricks:

Brick1:server2:/data/fuzhi_b2

Options Reconfigured:

features.inode-quota: on

features.quota: on

performance.readdir-ahead:on

  1. 2.        server3brick添加到复制卷

[root@server2 fuzhi_b2]# gluster volume add-brickfuzhi replica 2 server3:/data/fuzhi_b3force

volume add-brick: success

注意现在这个replica后面跟的数量一定是大于1

查看当前fuzhi卷的信息,可以发现已经把

[root@server2 fuzhi_b2]# gluster volume info fuzhi


Volume Name: fuzhi

Type: Replicate

Volume ID: 0bc17a47-c255-403e-b407-8ed6cdde136e

Status: Started

Number of Bricks: 1 x 2 = 2

Transport-type: tcp

Bricks:

Brick1: server2:/data/fuzhi_b2

Brick2: server3:/data/fuzhi_b3

Options Reconfigured:

features.inode-quota: on

features.quota: on

performance.readdir-ahead: on

         现在执行节点健康检查

[root@server2 fuzhi_b2]# gluster volume heal fuzhi

现在可以看到server3上的数据已经同步过来了

[root@server3 fuzhi_b3]# ls

0    101 103  105  107 109  110  13 15  17  19

100  102 104  106  108 11   12   14 16  18  20

但是这样恢复有个问题,那就是server3不会自动同步数据必须执行

gluster volume heal fuzhi才会同步


                     注:替换磁盘的方法是本人自己想法,可能不正确,欢迎大家纠正!)


glusterfs的常用命令


gluster peer 

帮助 gluster volume create help

本次把sdb1挂在到了/date/下

卷的类型

哈希卷 gluster volume create haxi server1:/data/haxi_b1 server2:/data/haxi_b2 force

复制卷 gluster volume create fuzhi replica 2 server1:/data/fuzhi_b1 server2:/data/fuzhi_b2

条带卷 gluster volume create tiaodai stripe 2 server1:/data/tiaodai_b1 server2:/data/tiaodai_b2

哈希条带复制卷  gluster volume create hxfz server1:/data/hxfz_b1 server2:/data/hxfz_b1 server1:/data/hxfz_b2 server2:/data/hxfz_b2 force

增加节点

gluster peer probe ip/主机名

删除节点

gluster peer detach ip/主机名

查看节点状态

gluster peer status

为哈希卷扩容

gluste volume add-brick  卷的名字   servername:/brick的位置

为哈希卷缩小空间

gluster volume remove-brick 卷的名字 servername:/brik的位置 start

gluster volume remove-brick 卷的名字 servername:/brick的位置 commit -->此时会丢失数据

为复制卷扩容

gluster volume add=brick 卷的名字 replica 2 servername:/brick的位置  servername:/brick的位置 start

为复制卷缩小空间

gluster volume remove-brick 卷的名字 replica 2 servername:/brick的位置 servername:/brick的位置 start

gluster volume remove-brick 卷的名字 servername:/brick的位置  servername:/brick的位置 commit


负载均衡

命令格式

volume rebalance 卷的名字 fix-layout start

数据监控检测以及修复

gluster volume heal 卷的名称

磁盘配额

gluster volume quota 卷的名字 limit-usage 路径 限额大小