Like的世界

个人总结与随想

在Docker容器中创建GlusterFS

| Comments

本文展示如何在一台Linux物理机/虚拟机上,创建GlusterFS集群。目的在于测试和学习GlusterFS,而非将GlusterFS应用生产环境。

下载节点容器镜像

1
docker pull gluster/gluster-centos

创建节点容器实例

1
2
3
4
5
6
7
8
9
10
for i in `seq 1 3`; do
        docker run -d --privileged=true --name gluster$i --hostname=gluster$i \
                -v /etc/glusterfs$i:/etc/glusterfs:z \
                -v /var/lib/glusterd$i:/var/lib/glusterd:z \
                -v /var/log/glusterfs$i:/var/log/glusterfs:z \
                -v /srv/glusterfs$i:/srv/glusterfs:z \
                -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
                -v /dev:/dev \
                gluster/gluster-centos
done

组建集群

1
docker exec -ti gluster1 /bin/bash
1
2
gluster peer probe <gluster2 ip addr>
gluster peer probe <gluster3 ip addr>

创建卷

冗余卷 (replica)

1
gluster peer volume create v1 replica 3 172.17.0.{2,3,4}:/srv/glusterfs/v1 force

条带卷 (stripe)

1
gluster peer volume create v2 strip 3 172.17.0.{2,3,4}:/srv/glusterfs/v2 force

纠删码卷 (disperse)

1
gluster peer volume create e3 disperse 3 redundancy 1 172.17.0.{2,3,4}:/srv/glusterfs/v3 force
  • 由于这些容器实例的/srv/glusterfst与/在同一个分区,故需要指定force参数。
  • 创建容器时,将host的/srv/glusterfs相关目录绑定至容器/srv/glusterfs是为了避免no xattr support in Docker #1070

挂载卷

通过FUSE挂载

1
mount -t glusterfs 172.17.0.2:/v1 /mnt/glusterfs/

脚本化

为了便于测试,我将上述诸多过程归纳成脚本:gluster_docker

Gluster Web Interface

gluster-web-interface是一个管理GlusterFS的Web应用应用,它基于Ruby on Rails实现。

为了简化其安装,我创建其docker镜像docker-gluster-web-interface

1
docker run -it -p 3000:3000 like/gluster-web-interface

Comments