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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,636评论 15 147
  • 0. 前言 docker是什么?docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可...
    sessionboy阅读 3,884评论 2 49
  • docker基本概念 1. Image Definition 镜像 Image 就是一堆只读层 read-only...
    慢清尘阅读 8,838评论 1 21
  • 感觉不行啊! 唉,看着怎么样,自我感觉,渣啊。
    孤独予我阅读 511评论 2 1