Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2266590
  • 博文数量: 168
  • 博客积分: 6641
  • 博客等级: 准将
  • 技术积分: 1996
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-02 11:49
文章存档

2020年(4)

2019年(6)

2017年(1)

2016年(3)

2015年(3)

2014年(8)

2013年(2)

2012年(12)

2011年(19)

2010年(10)

2009年(3)

2008年(17)

2007年(80)

分类: 服务器与存储

2019-07-17 21:26:19

GlusterFS分布式存储案例

TsengYia@  http://tsengyia.blog.chinaunix.net

一、基本概念
    Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过Infiniband RDMA 或Tcp/Ip 方式将许多廉价的x86 主机,通过网络互联成一个并行的网络文件系统。具有可扩展性、高性能、高可用性等特点。
    官方网站:

    存储类型:DAS、NAS、SAN
    常见的网络存储:NFS、Samba、iSCSI等
    常见的分布式存储:GlusterFS、Ceph、FastDFS
    GlusterFS特性:
无中心节点、可扩展性强、硬件兼容性强、高可用。
    GlusterFS概念:
Node(节点)、Trusted Storage Pool(可信存储池)、Brick(块)、Volume(卷)
    
GlusterFS 存储卷的主要模式说明

1. 分布模式,既DHT, 默认为此模式
将文件以hash算法随机分布到 一台服务器节点中存储。
# gluster volume create test-volume server1:/exp1 server2:/exp2

2. 复制模式,既AFR, 创建volume 时需指定 replica x 数量
存储时将文件复制到x个节点中(类似raid 1)。
# gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2

3. 分布式复制模式(组合型), 最少需要4块Brick才能创建
创建volume 时 replica 2 server = 4 个节点,是DHT 与 AFR 的组合型。
# gluster volume create test-volume replica 2 transport tcp server1:/exp1 server1:/exp2 server2:/exp3 server2:/exp4

4. 离散模式(组合型), 最少需要4块Brick才能创建
通过条带式读写提高访问速度,支持提供冗余块(避免块故障)。
创建volume 时 disperse 3 redundancy 1个节点,离散块必须大于2、冗余块可选。
# gluster volume create 名称 disperse 4 redundancy 2  server{1..6}:/brick3 
    

二、实验拓扑
准备4台虚拟机,通过NAT模式将虚拟机接入互联网。
存储服务器组:
    node1(192.168.10.10/24),默认网关192.168.10.2,DNS服务器192.168.10.2
    node2(192.168.10.20/24),默认网关192.168.10.2,DNS服务器192.168.10.2
    node3(192.168.10.30/24),默认网关192.168.10.2,DNS服务器192.168.10.2
存储客户机:
svr100(192.168.10.100),默认网关192.168.10.2,DNS服务器192.168.10.2


三、系统环境+软件仓库
1. 若使用CentOS7.6.1810本地光盘YUM源
# yum  repolist 
源标识   源名称   状态
centos-gluster6/7/x86_64 CentOS-7 - Gluster 6 104
repo_cos7dvd   added from: file:///repo/cos7dvd 4,021
repolist: 4,125

2. 或者,若使用CentOS7.6.1810官方默认YUM源
# yum -y install centos-release-gluster6 //在线安装gluster6软件源
# yum  repolist 
源标识   源名称   状态
base/7/x86_64 CentOS-7 - Base 10,019
centos-gluster6/7/x86_64 CentOS-7 - Gluster 6 104
extras/7/x86_64 CentOS-7 – Extras 419
updates/7/x86_64 CentOS-7 – Updates 2,231
repolist: 12,773


四、配置存储服务器组(node1、node2、node3操作相同)
1. 配置快速域名解析
# vim /etc/hosts
192.168.10.10 node1
192.168.10.20 node2
192.168.10.30 node3
192.168.10.100 svr100


2. 关闭防火墙、停用SELinux
# systemctl disable firewalld     //禁止防火墙服务开机自启
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. 
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.  
# systemctl stop firewalld     //禁止防火墙服务开机自启

# vim /etc/selinux/config //设置SELinux状态为宽松模式
SELINUX=permissive  
# setenforce  1   //立即设为宽松模式

3. 安装glusterfs-server软件包
# yum  -y  install  /root/glusterfs-server-6/*.rpm //离线安装glusterfs-server服务端包
或者
# yum  -y  install  glusterfs-server //在线安装glusterfs-server服务端包

# systemctl  enable  glusterd  --now //设开机自启,并立即启动服务

4. 准备后端块设备及brick目录
可以直接使用磁盘块设备或者LV逻辑卷做brick,推荐使用LV逻辑卷。
为每个节点添加一块20G的新磁盘,配置为卷组,划分2个逻辑卷lv01、lv02,挂载到/brick1、/brick2。
# vgcreate myvg /dev/sdb //创建卷组
# lvcreate -n lv01 -L 2G myvg //创建逻辑卷
# lvcreate -n lv02 -L 2G myvg
# mkfs.xfs /dev/myvg/lv01   //格式化
# mkfs.xfs /dev/myvg/lv02

# mkdir -p /brick1  /brick2 //挂载brick设备
# vim /etc/fstab
.. .
/dev/mapper/myvg-lv01   /brick1         xfs     defaults 0 0
/dev/mapper/myvg-lv02   /brick2         xfs     defaults 0 0
# mount -a 


五、配置共享卷(在node1、node2、node3其中任一个节点操作即可)
1. 创建可信存储池
[root@node1 ~]# gluster peer probe node2 //自动探测node2
peer probe: success. 
[root@node1 ~]# gluster peer probe node3 //自动探测node3
peer probe: success.
[root@node1 ~]# gluster peer status //查看节点状态
Number of Peers: 2
Hostname: node2
Uuid: 28ca0c13-1d37-4b1b-951d-aad45f9b6e16
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: 541b4a51-6661-4424-9046-c058388144e7
State: Peer in Cluster (Connected)

2. 配置分布式共享卷vdisk1
创建卷:
[root@node1 ~]# gluster volume create vdisk1 node{1..3}:/brick1 force 
volume create: vdisk1: success: please start the volume to access data
注意:如果节点Brick不是挂载点而是子目录,创建卷时不用添加 force 参数。
查看卷信息:
[root@node1 ~]# gluster volume info vdisk1
Volume Name: vdisk1
Type: Distribute //类型为分布卷
Volume ID: c4340b80-d1f8-41a1-af52-3088c8bf2f14
Status: Started
Snapshot Count: 0
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: node1:/brick1
Brick2: node2:/brick1
Brick3: node3:/brick1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
启动卷:
[root@node1 ~]# gluster volume start vdisk1
volume start: vdisk1: success

3. 配置复制式共享卷vdisk2
创建卷:
[root@node1 ~]# gluster volume create vdisk2 replica 3 node{1..3}:/brick2 force
volume create: vdisk2: success: please start the volume to access data
注意:如果节点Brick不是挂载点而是子目录,创建卷时不用添加 force 参数。
查看卷信息:
[root@node1 ~]# gluster volume info vdisk2

Volume Name: vdisk2
Type: Replicate
Volume ID: 9eddf7b0-5c69-4896-88fd-57846f5fa524
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: node1:/brick2
Brick2: node2:/brick2
Brick3: node3:/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
启动卷:
[root@node1 ~]# gluster volume start vdisk2
volume start: vdisk2: success

4. 其他备用操作
停止卷:
# gluster volume stop vdisk2
删除卷:
# gluster volume delete vdisk2
将某个存储节点主机从信任池中删除:
# gluster peer detach node2


六、配置存储客户机(svr100)
1. 安装glusterfs-fuse软件包
[root@svr100 ~]# yum  -y  install  /root/glusterfs-fuse-6/*.rpm //离线安装客户端包
或者
[root@svr100 ~]# yum  -y  install  glusterfs-fuse //在线安装客户端包

2. 挂载分布式共享卷
[root@svr100 ~]# mkdir  /mnt/{vdisk1,vdisk2} //创建挂载点
[root@svr100 ~]# vim /etc/fstab //添加开机挂载设置
node1:/vdisk1 /mnt/vdisk1  glusterfs defaults,_netdev  0  0
node1:/vdisk2 /mnt/vdisk2  glusterfs defaults,_netdev  0  0
[root@svr100 ~]# mount  -a //挂载
[root@svr100 ~]# df -hT /mnt/vdisk* //检查挂载结果
文件系统       类型            容量  已用  可用 已用% 挂载点
node1:/vdisk1  fuse.glusterfs  6.0G  159M  5.9G    3% /mnt/vdisk1
node1:/vdisk2  fuse.glusterfs  2.0G   53M  2.0G    3% /mnt/vdisk2

3. 文件存储测试(分布模式)
在svr100上向挂载点/mnt/vdisk1写入大量文件:
[root@node1 ~]# du -sh /boot //查看测试数据大小
134M /boot
[root@svr100 ~]# cp -rf /boot/* /mnt/vdisk1/
[root@svr100 ~]#
在每个存储节点检查brick目录下存储的文件数据:
[root@node1 ~]# du -sh /brick1/ //查看存入节点1的数据量
80M /brick1/ 

[root@node2 ~]# du -sh /brick1/   //查看存入节点2的数据量
51M /brick1/

[root@node3 ~]# du -sh /brick1/   //查看存入节点3的数据量
3.5M /brick1/

4. 文件存储测试(复制模式)
在svr100上向挂载点/mnt/vdisk1写入1个文件:
[root@svr100 ~]# echo AAAA > /mnt/vdisk2/rep.txt
[root@svr100 ~]# ls /mnt/vdisk2/rep.txt
/mnt/vdisk2/rep.txt
在每个存储节点检查brick目录下存储的文件数据:
[root@node1 ~]# ls /brick2/ //在节点1上有这个文件
rep.txt
[root@node2 ~]# ls /brick2/ //在节点2上也有这个文件
rep.txt
[root@node3 ~]# ls /brick2/ //在节点3上也有这个文件
rep.txt

阅读(3442) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~