c4rt1y

分布式GlusterFS环境搭建

0x01 GlusterFS介绍

GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。
说起glusterfs可能比较陌生,可能大家更多的听说和使用的是NFS,GFS,HDFS之类的,这之中的NFS应该是使用最为广泛的,简单易于管理,但是NFS以及后边会说到MooseFS都会存在单点故障,为了解决这个问题一般情况下都会结合DRBD进行块儿复制。但是glusterfs就完全不用考虑这个问题了,因为它是一个完全的无中心的系统。

0x02 环境介绍

#centos7服务器3台
master 10.10.10.20
node01 10.10.10.30
node02 10.10.10.40

#关闭firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service

#关闭selinux
sed -i 's:SELINUX=enforcing:SELINUX=disabled:g' /etc/selinux/config

#重新启动电脑,使用setenforce 0无效
reboot

0x03 环境搭建

##master和node01、node02上同时执行

#下载源
yum install centos-release-gluster -y
#安装glusterfs服务端
yum install glusterfs-server -y

#启动服务和设置启动项
systemctl start glusterd.service
systemctl enable glusterd.service

#创建磁盘路径
mkdir -p /opt/gluster/data


##master上
#添加节点
gluster peer probe 10.10.10.30
gluster peer probe 10.10.10.40

#查看节点
gluster peer status 

#创建磁盘
gluster volume create test-volume replica 3 10.10.10.20:/opt/gluster/data 10.10.10.30:/opt/gluster/data 10.10.10.40:/opt/gluster/data force

#启动test-volume
gluster volume start test-volume

#查看状态
gluster volume info

##优化
#开启 指定 volume 的配额
gluster volume quota test-volume enable
#限制 test-volume 中 / (既总目录) 最大使用 5GB 空间 
gluster volume quota models limit-usage / 5GB
设置 cache 大小
gluster volume set test-volume performance.cache-size 512MB
#开启异步操作
gluster volume set test-volume performance.flush-behind on
#设置 io 线程 32 
gluster volume set test-volume performance.io-thread-count 32
#设置 回写 (写数据时间,先写入缓存内,再写入硬盘) 
gluster volume set test-volume performance.write-behind on

#查看状态
gluster volume info


##随意找一台服务器,可以使上述里面,也可以不是里面的
#安装客户端
yum install -y glusterfs glusterfs-fuse

#创建目录
mkdir /mnt/test /mnt/test1

#两种挂载都可以
mount.glusterfs 10.10.10.20:/test-volume /mnt/test1
mount -t glusterfs 10.10.10.20:/test-volume /opt/test2/

#在test1里面写入内容
echo "test1" > /mnt/test1/test1
echo "test2" > /mnt/test1/test2
echo "test3" > /mnt/test1/test3
echo "test4" > /mnt/test1/test4

##在master、node01和node02上可以看到
ls /opt/gluster/data 

##小结
这里我们使用的是复制卷操作,一次挂在就等于多个文件上传,其他的还有其他方法,具体的glusterfs的操作如下所示,也就是增删该查。

0x04 gluster使用命令

##节点管理
#查看所有节点信息,显示时不包括本节点
	gluster peer status                          
#添加节点
	gluster peer probe   NODE-NAME 
移除节点,需要提前将该节点上的brick移除
	gluster peer detach  NODE-NAME 

##卷管理
#创建卷
1、复制卷[跨越brick进行复制,在需要高可用性和可靠性的环境中使用,类似于raid1]
语法: gluster volume create NEW-VOLNAME [replica COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK
示例1:gluster volume create test-volume replica 2 transport tcp server1:/exp1/brick server2:/exp2/brick

2、条带卷[单个文件被分散到多个brick中,而分布卷是整个文件在一个brick中,多个文件在不同的brick中,类似于raid0]
语法: gluster volume create NEW-VOLNAME [stripe COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...
示例: gluster volume create test-volume stripe 2 transport tcp server1:/exp1/brick server2:/exp2/brick

3、分布式卷[单个文件分布于多个brick中,多个文件被分布到多个brick中]
语法: gluster volume create NEW-VOLNAME [transport tcp | rdma | tcp, rdma] NEW-BRICK
示例1:gluster volume create test-volume server1:/exp1/brick server2:/exp2/brick
示例2:gluster volume create test-volume transport rdma server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick

4、分布式复制卷[及提高了可靠性又能提供不错的性能,在大多数生产环节中可用,brick的数量应该是分布式复制卷的整数倍]
语法: gluster volume create NEW-VOLNAME [replica COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...
示例: gluster volume create test-volume replica 2 transport tcp server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick

5、分布式条带卷[单个文件分布于多个brick中,多个文件被分布到多个brick中]
语法: gluster volume create NEW-VOLNAME [stripe COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...
示例: gluster volume create test-volume stripe 2 transport tcp server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick

6、条带复制卷[在高并发,及大文件的情况下非常有用,并且有安全性]
语法: gluster volume create NEW-VOLNAME [stripe COUNT] [replica COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...
示例: gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick


创建卷          
	gluster volume create <volname> [replica <count>] <brick list>
删除卷          
	gluster volume delete <volname>
启动卷          
	gluster volume start <volname>
停止卷          
	gluster volume stop <volname>
配置卷          
	gluster volume set <volname> <key> <value>

new-centos

均衡卷  
	gluster volume rebalance <volname> fix-layoutstart
	gluster volume rebalance <volname> start
	gluster volume rebalance <volname> startforce
	gluster volume rebalance <volname> status
	gluster volume rebalance <volname> stop

扩展卷  
	gluster volume add-brick <volname> [replica<count>]<new brick>

缩容卷  
	gluster volume remove-brick <volname> [replica <count>] <brick> start
    gluster volume remove-brick <volname> [replica <count>] <brick> status
	gluster volume remove-brick <volname> [replica <count>] <brick> commit

替换卷  gluster volume replace-brick <volname> <brick> <new brick> start
	gluster volume replace-brick <volname> <brick> <new brick> status
	gluster volume replace-brick <volname> <brick> <newbrick> commit

修复卷  
	gluster volume heal <volname>

列举全部卷   
	gluster volume list
查看卷配置   
	gluster volume info  [volname]
查看卷状态   
	gluster volume status  [volname]
帮助信息     
	gluster volume help

0x05 资料来源

http://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/
http://blog.csdn.net/phn_csdn/article/details/75153913?utm_source=debugrun&utm_medium=referral
http://www.cnblogs.com/liang-wei/p/6825690.html
GoTop