一、目的:
搭建GlusterFS集群。
二、环境:
4台虚拟机,CentOS Linux release 7.5.1804 (Core),内存3G,硬盘45G。
192.168.110.216
192.168.110.227
192.168.10.228
192.168.10.213
三、安装过程:
3.1 关闭防火墙
在每个节点(node1,node2,node3,cli1)上执行:
systemctl stop firewalld.service && systemctl disable firewalld.service
3.2 关闭selinux
在每个节点(node1,node2,node3,cli1)上执行:
vi /etc/selinux/config
修改SELINUX=disabled
3.3 时间同步
保证5个节点的时区和时间一致。
yum install ntpdate
ntpdate ntp1.aliyun.com
3.4 配置hosts文件
192.168.110.216 node1
192.168.110.227 node2
192.168.10.228 node3
192.168.10.213 cli1
3.5 安装GlusterFS Server
在集群节点(非Client节点,即node1、node2、node3)上执行:
yum install -y centos-release-gluster
问题 | 解决方案 |
(1) Could not retrieve mirrorlist | 更新yum源 |
#################查看版本列表
yum list --showduplicates glusterfs
yum install -y glusterfs glusterfs-server
yum install -y glusterfs-fuse glusterfs-rdma
注意:在node1、node2、node3上安装即可。但本人所有节点都安装(为方便扩展slave节点),为配置Client节点,cli1不执行3.6-3.7步骤。
3.6 启动 gluster FS Server并设置开机启动
在每个集群节点(node1、node2、node3)上执行:
systemctl start glusterd.service && systemctl enable glusterd.service
systemctl start glusterfsd.service && systemctl enable glusterfsd.service
3.7 配置GlusterFS Server集群
3.7.1 向集群加入节点
在集群的Master节点(node1)上执行命令:
gluster peer probe node3 # 在node1节点上将node3节点加入到集群中。
gluster peer probe node2 # 在node1节点上将node2节点加入到集群中。
3.7.2 从集群删除节点
gluster peer detach node2 # 在node1节点上将node2节点从集群中删除。
gluster peer detach node3 # 在node1节点上将node3节点从集群中删除。
注意:可以从任意GFS Server节点上删除集群中的其它节点,但不能删除执行命令时的当前节点。
3.7.3 查看集群状态
在任意集群节点(node1、node2、node3)上执行命令:
gluster peer status
会显示当前slave节点数量:
存储池数量
gluster pool list
3.7 配置GFS Volume
3.7.1 创建数据存储目录
在所有集群节点(node1、node2、node3)上执行:
mkdir -p /data/gluster/app1-mydata
3.7.2 创建GFS volume
创建复制卷
在任意集群节点(node1、node2、node3)上执行命令:
gluster volume create app1-mydata-vol replica 2 :/data/gluster/app1-mydata slave148:/data/gluster/app1-mydata force
注意,此处使用复制模式(AFR), 创建volume 时带 replica x(x是数量):将文件复制到 x 个节点中。
创建成功后会显示:
----------------------------------------------------------------
以下不用操作
创建分布式卷
gluster volume create gfs_vm_fb node1:/data/brick_fb node2:/data/brick_fb node3:/data/brick_fb force
3.7.3 启动Volume
在任意集群节点(master145、slave148、slave149)上执行命令:
gluster volume start app1-mydata-vol
启动成功后会显示:
3.7.4 查看Volume状态
在任意集群节点(master145、slave148、slave149)上执行命令:
gluster volume info
执行成功后会显示:
3.7.5 删除Volume
gluster volume stop app1-mydata-vol # 停止名为app1-mydata-vol的GFS Volume
gluster volume delete app1-mydata-vol # 删除名为app1-mydata-vol的GFS Volume
3.8 配置GFS Client
注意:GFS Client节点必须能连通GFS服务器节点。
3.8.1 安装客户端
应该在GFS Client节点(client158、client159)执行以下命令:
yum install -y glusterfs glusterfs-fuse
但由于本人在client158、client159上执行了步骤3.1-3.5,因此略过此步骤。
3.8.2 将客户端目录挂载到GFS Volume
在GFS Client节点上(client158、client159)创建本地目录:
mkdir -p /var/client-data/app1-mydata
将本地目录挂载到GFS Volume:
mount.glusterfs master145:/app1-mydata-vol /var/client-data/app1-mydata
3.8.3 查看挂载情况
在GFS Client节点(client158、client159)上执行命令:
df -h
执行成功后会显示:
3.8.4 取消挂载
umount /var/client-data/app1-mydata
总结:
一、 默认模式,既DHT, 也叫 分布卷: 将文件已hash算法随机分布到 一台服务器节点中存储。
gluster volume create test-volume server1:/exp1 server2:/exp2
二、复制模式,既AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。
gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
三、 条带模式,既Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
四、 分布式条带模式(组合型),最少需要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
五、 分布式复制模式(组合型), 最少需要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
六、 条带复制卷模式(组合型), 最少需要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
七、 三种模式混合, 至少需要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