@DockerDockerDocker容器

搭建 Gluster 模拟环境(Vagrant与Docker)

2017-03-03  本文已影响267人  左蓝

最近为了可以让一些内网运行的应用同步到外网,也就是在校内校外都可以访问我自己搭建在宿舍的服务,遂研究起了这些玩意。

Puppet-Gluster + Vagrant

$ sudo service nfs start
$ git clone --recursive https://github.com/purpleidea/puppet-gluster.git
$ cd puppet-gluster/vagrant/gluster/
$ vagrant up puppet && sudo -v && vagrant up

使用 virt-manager 就可以查看本地运行的虚拟机。

查看模拟环境

Docker

官方似乎提供了镜像,但是不怎么好用,自己写一个啦。
基于 Ubuntu 16.04,目录如下:

.
├── client
│   ├── run.sh
│   └── supervisord.conf
├── Dockerfile
├── Dockerfile.client
├── Dockerfile.server
└── server
    ├── prepare-gluster.sh
    ├── run.sh
    └── supervisord.conf

2 directories, 8 files

Server 与 Client 都是基于 Dockerfile 构建的,内容如下:

FROM ubuntu:16.04

RUN apt-get update && \
    apt-get install -y python-software-properties software-properties-common && \
    add-apt-repository -y ppa:gluster/glusterfs-3.10 && \
    apt-get update && \
    apt-get install -y supervisor glusterfs-client glusterfs-server && \
    apt-get autoremove -y python-software-properties software-properties-common && \
    apt-get autoclean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

这个镜像装了 glusterfs 的 client 与 server 两个软件,然后基于这个镜像分别构建客户端和服务端。

其中 Dockerfile.client 如下:

FROM zuolan/glusterfs

ENV GLUSTER_VOL_NAME vol
ENV GLUSTER_VOL_PATH /volume
ENV GLUSTER_PEER **ChangeMe**
ENV DEBUG 0

COPY client/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY client/*.sh /
RUN mkdir -p /var/log/supervisor ${GLUSTER_VOL_PATH} && \
    chmod +x /*.sh
WORKDIR ${GLUSTER_VOL_PATH}
VOLUME ["${GLUSTER_VOL_PATH}"]

CMD ["/run.sh"]

然后是 Dockerfile.server 的内容:

FROM zuolan/glusterfs

ENV GLUSTER_VOL_NAME vol
ENV GLUSTER_REPLICA 2
ENV GLUSTER_BRICK_PATH /volume
ENV GLUSTER_PEER **ChangeMe**
ENV SERVER_IP **ChangeMe**
ENV DEBUG 0

VOLUME ["/volume"]

COPY server/run.sh /run.sh
COPY server/prepare-gluster.sh /prepare-gluster.sh
COPY server/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN mkdir -p /var/log/supervisor && \
    chmod +x /*.sh

CMD ["/run.sh"]

两个容器运行在不同的服务器,然后数据卷会通过 NFS 同步。

完整源代码:https://github.com/izuolan/dockerfiles/tree/master/glusterfs

上一篇 下一篇

猜你喜欢

热点阅读