Like的世界

个人总结与随想

在Docker容器中创建GlusterFS

| Comments

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

下载节点容器镜像

1
docker pull gluster/gluster-centos

创建元数据目录

1
mkdir -p /etc/glusterfs{1,2,3} /var/lib/glusterd{1,2,3} /var/log/glusterfs{1,2,3}

创建节点容器实例

1
2
3
4
5
6
7
8
9
10
for i in `seq 1 3`; do
        mkdir -p $etc$i $var$i $log$i
        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 /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}:/mnt/v1 force

条带卷 (stripe)

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

纠删码卷 (disperse)

1
gluster peer volume create e3 disperse 3 redundancy 1 172.17.0.{2,3,4}:/mnt/v3 force
  • 由于这些容器实例的/mnt与/在同一个分区,故需要指定force参数。
  • 创建卷时,目录/mnt/v{1,2,3}将被gluster自动创建,前提是父目录 (/mnt)已存在

挂载卷

通过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