利用glusterfs构建网站分布集群存储
一、前言
GlusterFS是一个开源的分布式集群文件系统,于2011年被红帽收购。它具有高扩展性、高性能、高可用性、可横向扩展(scale-out)的弹性特点,借助tcp/ip或infiniBand RDMA(remote direct memory access)网络将物理分布的存储资源聚集一起,使用单一全局命名空间来管理数据,无元数据服务器设计使glusterfs没有单点故障隐患(通过有的弹性Hash算法),详细介绍请查看官网:www.gluster.org 。
典型架构:存储服务器(Brick Server)、客户端(运行glusterfs客户端)、NFS/Samba存储网关(为没有运行glusterfs客户端提供访问)。
二、环境
三个虚拟机
操作系统:最小化安装CentOS6.5
2、部署说明
存储节点:
IP
主机名
Brick
172.16.2.165
node1
/home/rfs
172.16.2.166
node2
/home/rfs
客户端:
172.16.2.167
三、部署
三台机器都要作
# vi /etc/selinux/config
SELINUX=disabled
# chkconfig iptables off
# chkconfig iptables off
1、存储端安装(所有安装包打包在glusterfs.tar.gz中):
# yum -y install device-mapper device-mapper-libs device-mapper-event device-mapper-event-libs libaio libgssglue libtirpc libudev lvm2-libs rpcbind (目前centos默认已经安装这些包)
#tar zxvf glusterfs.tar.gz
#cd glusterfs
#yum -y install *.rpm
# chkconfig glusterd on
# service glusterd start
2、服务端配置:
ssh密钥登录(172.16.2.166上操作)[//如果所有服务器的root密码一样,此步骤不需要]:
# ssh-keygen
#mv .ssh/id_rsa.pub .ssh/authorized_keys
#scp -r .ssh root@172.16.2.XX:~/
其他节点做相同操作,除自身ip
建立peer关系(172.16.2.166上操作):
将2个存储节点组成一集群,本文在第一个节点执行,只需要在任意节点执行就OK。
[root@rfs-161 ~]# gluster peer probe node2
Probe successful
如果node2在peer表中被识别为ip地址,可能后面集群过程中会出现通讯问题,
我们可以使用ip来进行修复:
查看集群的节点信息:
[root@rfs-161 ~]# gluster peer status
Number of Peers: 1
Hostname: node2
Uuid: 7301f9e5-ba9e-4095-a78c-4741f801a715
State: Peer in Cluster (Connected)
建立卷(172.16.2.165与172.16.2.166其中一台上操作):
以/data/gluster为共享目录,创建名为datavol的卷,副本数为2:
mkdir /home/rfs
[root@rfs-161 ~]# gluster volume create datavol replica 2 node1:/home/rfs node2:/home/rfs
Creation of volume img has been successful. Please start the volume to access data.
建立卷时有三种模式:Stripe(RAID0)、Replicate(RAID1)和DHT(分布式Hash),默认是DHT,后边跟的数字意思是几个为1组,此示例中为2个为一组建立replica卷,类似RAID1。
配置文件:/etc/glusterfs/glusterfsd.vol
启动卷:
[root@rfs-161 ~]# gluster volume start datavol
Starting volume datavol has been successful
查看卷状态:
[root@rfs-161 ~]# gluster volume info
Volume Name: datavol
Type: Replicate
Volume ID: b7863e25-2f26-4af9-b2bc-908b594ae900
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: 172.16.2.165:/home/rfs
Brick2: 172.16.2.166:/home/rfs
此时,文件系统就准备就绪了,可以像挂载nfs分区一样挂载它了
3、客户端安装配置:
安装:
rpm -ivh glusterfs-3.5.0-2.el6.x86_64.rpm glusterfs-libs-3.5.0-2.el6.x86_64.rpm glusterfs-fuse-3.5.0-2.el6.x86_64.rpm
挂载:
mount -t glusterfs 172.16.2.165:/datavol /share/ (挂载任意一个节点即可)
mount -t nfs -o mountproto=tcp,vers=3 172.16.4.161:/datavol /share/ (使用NFS挂载,注意远端的rpcbind服务必须开启)
mount -t nfs -o rw,nfsvers=3,proto=tcp,port=38465,nolock,noacl,nocto,noatime,nodiratime,rsize=131072,wsize=524288,async,soft,bg,acregmin=3,acregmax=10,acdirmin=1,acdirmax=5 172.16.2.165:datavol /share
mount.nfs 172.16.2.165:/datavol /share/ -o nfsvers=3,proto=tcp