一 搭建 GlusterFS 集群
(1). 格式化磁盘
fdisk /dev/sdb
命令行提示下输入【m】
输入命令【n】添加新分区
输入命令【p】创建主分区
输入【回车】,选择默认大小,这样不浪费空间
输入【回车】,选择默认的start cylinder
输入【w】,保持修改
(2). 添加gluster源
cat >>/etc/apt/sources.list <<EOF
deb http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu trusty main
deb-src http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu trusty main
EOF
(3). 安装glusterfs
apt-get install xfsprogs glusterfs-server -y
mkfs.xfs -i size=512 /dev/sdb1
mkdir -p /glusterfs/brick #挂载点
echo '/dev/sdb1 /glusterfs/brick xfs defaults 1 2' >> /etc/fstab #设置自动挂载
mount -a && mount
#gluster volume set all cluster.op-version 30710
(4). 配置peer(加入集群节点到主机)
gluster peer probe 172.18.17.168
gluster peer status
(5). 在节点表示集群搭建成功(不管主节点还是从节点)
gluster peer status
Number of Peers: 1
Hostname: 172.18.17.168
Uuid: 39c8cda9-2275-4896-9bf1-106dc7e88304
State: Peer in Cluster (Connected)
(6). 创建Volume(rimag_data)
gluster volume create rimag_data replica 2 transport tcp \
172.18.16.80:/glusterfs/brick/rimag_data \
172.18.17.168:/glusterfs/brick/rimag_data
volume create: rimag_data: success: please start the volume to access data
gluster volume info
Volume Name: rimag_data
Type: Replicate
Volume ID: cc211989-9da7-4481-8a15-092712445ec9
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: 172.18.16.80:/glusterfs/brick/rimag_data
Brick2: 172.18.17.168:/glusterfs/brick/rimag_data
Options Reconfigured:
performance.readdir-ahead: on
(7). 启动Volume(rimag_data)
gluster volume start rimag_data
volume start: rimag_data: success
二 GlusterFS 客户端配置
(1). 添加gluster源
cat >>/etc/apt/sources.list <<EOF
deb http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu trusty main
deb-src http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu trusty main
EOF
(2). 安装glusterfs client
apt-get install glusterfs-client -y
(3).建立挂载目录:(/mnt/rimag_data)
mkdir /mnt/rimag_data
(4). 挂载gluster卷
mount.glusterfs 172.18.16.80:/rimag_data /mnt/rimag_data
三 docker 使用 GlusterFS Volume
接下来,我们再来看GlusterFS如何作为Docker的存储。Docker Volume是一种可以将容器以及容器生产的数据分享开来的数据格式,我们可以使用宿主机的本地存储作为Volume的提供方,也可以使用Volume Plugin接入许多第三方的存储。 GitHub就有一个 Docker GlusterFS Volume Plugin ,方便我们将GlusterFS挂载到容器中。具体步骤如下:
(1). 获取docker-volume-glusterfs
go get github.com/calavera/docker-volume-glusterfs
考虑到搭建golang环境有一定的复杂性,我们也可以采用golang容器来获取该应用
(2). 拷贝docker-volume-glusterfs至/usr/bin
cp ./docker-volume-glusterfs /usr/bin
chmod 777 /usr/bin/docker-volume-glusterfs
(3). 声明gluster服务集群
docker-volume-glusterfs -servers node1:node2
(4). 指定volume
docker run --volume-driver glusterfs --volume rimag_data:/data alpine touch /data/hello
这里的rimag_data即我们在glusterfs集群中创建的volume,但需要事先手动创建
[参考文档](https://developer.ibm.com/zh/articles/os-cn-glusterfs-docker-volume/)