设为首页 收藏本站
查看: 3368|回复: 0

[经验分享] CentOS 7 安装 GlusterFS

[复制链接]

尚未签到

发表于 2017-6-1 11:08:18 | 显示全部楼层 |阅读模式
  CentOS 7 GlusterFS
DSC0000.png

  环境说明:
3台机器安装 GlusterFS 组成一个集群。
使用 docker volume plugin GlusterFS

  服务器:
10.6.0.140
10.6.0.192
10.6.0.196

配置 hosts
  10.6.0.140  swarm-manager
10.6.0.192  swarm-node-1
10.6.0.196  swarm-node-2

client:
10.6.0.94   node-94


安装:
CentOS 安装 glusterfs 非常的简单

在三个节点都安装glusterfs

yum install centos-release-gluster

yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

  配置 GlusterFS 集群:
  启动 glusterFS   

systemctl start glusterd.service

systemctl enable glusterd.service


在 swarm-manager 节点上配置,将 节点 加入到 集群中。

[iyunv@swarm-manager ~]#gluster peer probe swarm-manager
peer probe: success. Probe on localhost not needed
  [iyunv@swarm-manager ~]#gluster peer probe swarm-node-1
peer probe: success.
  [iyunv@swarm-manager ~]#gluster peer probe swarm-node-2
peer probe: success.
  
查看集群状态:
[iyunv@swarm-manager ~]#gluster peer status
Number of Peers: 2
  Hostname: swarm-node-1
Uuid: 41573e8b-eb00-4802-84f0-f923a2c7be79
State: Peer in Cluster (Connected)
  Hostname: swarm-node-2
Uuid: da068e0b-eada-4a50-94ff-623f630986d7
State: Peer in Cluster (Connected)



创建数据存储目录:
[iyunv@swarm-manager ~]#mkdir -p /opt/gluster/data
[iyunv@swarm-node-1 ~]# mkdir -p /opt/gluster/data
[iyunv@swarm-node-2 ~]# mkdir -p /opt/gluster/data


查看volume 状态:
[iyunv@swarm-manager ~]#gluster volume info
No volumes present
  
创建GlusterFS磁盘:
[iyunv@swarm-manager ~]#gluster volume create models replica 3 swarm-manager:/opt/gluster/data swarm-node-1:/opt/gluster/data swarm-node-2:/opt/gluster/data force
volume create: models: success: please start the volume to access data
  
GlusterFS 几种volume 模式说明:
  一、 默认模式,既DHT, 也叫 分布卷:    将文件已hash算法随机分布到 一台服务器节点中存储。
    gluster volume create test-volume server1:/exp1 server2:/exp2
DSC0001.png

  
二、 复制模式,既AFR, 创建volume 时带 replica x 数量:   将文件复制到 replica x 个节点中。
gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
DSC0002.png

  
三、 条带模式,既Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
    gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
DSC0003.png

  
四、 分布式条带模式(组合型),最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。
    gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
DSC0004.png

  
五、 分布式复制模式(组合型), 最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。
gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
DSC0005.png

  
六、 条带复制卷模式(组合型), 最少需要4台服务器才能创建。 创建volume 时 stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。
    gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
DSC0006.png

  七、 三种模式混合, 至少需要8台 服务器才能创建。 stripe 2 replica 2 , 每4个节点 组成一个 组。
gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8
DSC0007.png

  
再查看 volume 状态:
[iyunv@swarm-manager ~]#gluster volume info

Volume Name: models
Type: Replicate
Volume ID: e539ff3b-2278-4f3f-a594-1f101eabbf1e
Status: Created
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: swarm-manager:/opt/gluster/data
Brick2: swarm-node-1:/opt/gluster/data
Brick3: swarm-node-2:/opt/gluster/data
Options Reconfigured:
performance.readdir-ahead: on
  
启动 models
[iyunv@swarm-manager ~]#gluster volume start models
volume start: models: success
  
gluster 性能调优:

开启 指定 volume 的配额: (models 为 volume 名称)
gluster volume quota models enable

限制 models 中 / (既总目录) 最大使用 80GB 空间
gluster volume quota models limit-usage / 80GB
  #设置 cache 4GB
gluster volume set models performance.cache-size 4GB
  #开启 异步 , 后台操作
gluster volume set models performance.flush-behind on

#设置 io 线程 32
gluster volume set models performance.io-thread-count 32

#设置 回写 (写数据时间,先写入缓存内,再写入硬盘)
gluster volume set models performance.write-behind on
  
部署GlusterFS客户端并mount GlusterFS文件系统 (客户端必须加入 glusterfs  hosts 否则报错。)

[iyunv@node-94 ~]#yum install -y glusterfs glusterfs-fuse
[iyunv@node-94 ~]#mkdir -p /opt/gfsmnt
[iyunv@node-94 ~]#mount -t glusterfs swarm-manager:models /opt/gfsmnt/

[iyunv@node-94 ~]#df -h
文件系统                容量  已用  可用 已用% 挂载点
/dev/mapper/vg001-root   98G  1.2G   97G    2% /
devtmpfs                 32G     0   32G    0% /dev
tmpfs                    32G     0   32G    0% /dev/shm
tmpfs                    32G  130M   32G    1% /run
tmpfs                    32G     0   32G    0% /sys/fs/cgroup
/dev/mapper/vg001-opt   441G   71G  370G   17% /opt
/dev/sda2               497M  153M  344M   31% /boot
tmpfs                   6.3G     0  6.3G    0% /run/user/0
swarm-manager:models    441G   18G  424G    4% /opt/gfsmnt
  测试:

DHT 模式 客户端 创建一个 1G 的文件

[iyunv@node-94 ~]#time dd if=/dev/zero of=hello bs=1000M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576000字节(1.0 GB)已复制,9.1093 秒,115 MB/秒
  real    0m9.120s
user    0m0.000s
sys     0m1.134s
  

AFR 模式 客户端 创建一个 1G 的文件

[iyunv@node-94 ~]#time dd if=/dev/zero of=hello.txt bs=1024M count=1
录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,27.4566 秒,39.1 MB/秒
  real    0m27.469s
user    0m0.000s
sys     0m1.065s
  
Striped 模式 客户端 创建一个 1G 的文件

[iyunv@node-94 ~]#time dd if=/dev/zero of=hello bs=1000M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576000字节(1.0 GB)已复制,9.10669 秒,115 MB/秒
  real    0m9.119s
user    0m0.001s
sys     0m0.953s
  条带复制卷模式 (Number of Bricks: 1 x 2 x 2 = 4) 客户端 创建一个 1G 的文件  
  [iyunv@node-94 ~]#time dd if=/dev/zero of=hello bs=1000M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576000字节(1.0 GB)已复制,17.965 秒,58.4 MB/秒
  real    0m17.978s
user    0m0.000s
sys     0m0.970s
  
分布式复制模式 (Number of Bricks: 2 x 2 = 4) 客户端 创建一个 1G 的文件  
  [iyunv@node-94 ~]#time dd if=/dev/zero of=haha bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB)已复制,17.7697 秒,59.0 MB/秒
  real    0m17.778s
user    0m0.001s
sys     0m0.886s
  针对 分布式复制模式还做了如下测试:
  4K随机写 测试:
安装 fio  (yum -y install libaio-devel (否则运行fio 会报错engine libaio not loadable, 已安装需重新编译,否则一样报错))

  [iyunv@node-94 ~]#fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=10G -filename=1.txt -name="EBS 4KB randwrite test" -iodepth=32 -runtime=60


write: io=352204KB, bw=5869.9KB/s, iops=1467, runt= 60002msec
WRITE: io=352204KB, aggrb=5869KB/s, minb=5869KB/s, maxb=5869KB/s, mint=60002msec, maxt=60002msec


4K随机读 测试:
fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randread -size=10G -filename=1.txt -name="EBS 4KB randread test" -iodepth=8 -runtime=60


read: io=881524KB, bw=14692KB/s, iops=3672, runt= 60001msec
READ: io=881524KB, aggrb=14691KB/s, minb=14691KB/s, maxb=14691KB/s, mint=60001msec, maxt=60001msec


512K 顺序写 测试:
fio -ioengine=libaio -bs=512k -direct=1 -thread -rw=write -size=10G -filename=512.txt -name="EBS 512KB seqwrite test" -iodepth=64 -runtime=60

write: io=3544.0MB, bw=60348KB/s, iops=117, runt= 60135msec
WRITE: io=3544.0MB, aggrb=60348KB/s, minb=60348KB/s, maxb=60348KB/s, mint=60135msec, maxt=60135msec
  




其他的维护命令:
  1. 查看GlusterFS中所有的volume:
[iyunv@swarm-manager ~]#gluster volume list
  2. 删除GlusterFS磁盘:
[iyunv@swarm-manager ~]#gluster volume stop models    #停止名字为 models 的磁盘
[iyunv@swarm-manager ~]#gluster volume delete models  #删除名字为 models 的磁盘

  注: 删除 磁盘 以后,必须删除 磁盘( /opt/gluster/data ) 中的 ( .glusterfs/ .trashcan/ )目录。
    否则创建新 volume 相同的 磁盘 会出现文件 不分布,或者 类型 错乱 的问题。
  
3. 卸载某个节点GlusterFS磁盘
[iyunv@swarm-manager ~]#gluster peer detach swarm-node-2


4. 设置访问限制,按照每个volume 来限制
[iyunv@swarm-manager ~]#gluster volume set models auth.allow 10.6.0.*,10.7.0.*


5. 添加GlusterFS节点:
[iyunv@swarm-manager ~]#gluster peer probe swarm-node-3
[iyunv@swarm-manager ~]#gluster volume add-brick models swarm-node-3:/opt/gluster/data
注:如果是复制卷或者条带卷,则每次添加的Brick数必须是replica或者stripe的整数倍

6. 配置卷
[iyunv@swarm-manager ~]# gluster volume set


7. 缩容volume:
  先将数据迁移到其它可用的Brick,迁移结束后才将该Brick移除:
[iyunv@swarm-manager ~]#gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start

在执行了start之后,可以使用status命令查看移除进度:
[iyunv@swarm-manager ~]#gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status

不进行数据迁移,直接删除该Brick:
[iyunv@swarm-manager ~]#gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit
注意,如果是复制卷或者条带卷,则每次移除的Brick数必须是replica或者stripe的整数倍。

  扩容:
  gluster volume add-brick models swarm-node-2:/opt/gluster/data
  
8. 修复命令:
[iyunv@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit -force


9. 迁移volume:
[iyunv@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start
pause 为暂停迁移
[iyunv@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data pause
abort 为终止迁移
[iyunv@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data abort
status 查看迁移状态
[iyunv@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status
迁移结束后使用commit 来生效
[iyunv@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit


10. 均衡volume:
[iyunv@swarm-manager ~]#gluster volume models lay-outstart
[iyunv@swarm-manager ~]#gluster volume models start
[iyunv@swarm-manager ~]#gluster volume models startforce
[iyunv@swarm-manager ~]#gluster volume models status
[iyunv@swarm-manager ~]#gluster volume models stop

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-382039-1-1.html 上篇帖子: CentOS7下分布式系统GlusterFS安装配置 下篇帖子: 2.GlusterFS 安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表