12

我正在尝试建立一个 docker / fig Mesos 集群。我是 fig 和 Docker 的新手。Docker 有大量文档,但我发现自己很难理解如何使用 fig。

这是我目前的 fig.yaml:

zookeeper:
  image: jplock/zookeeper
  ports: 
  - "49181:2181"
mesosMaster:
  image: mesosphere/mesos:0.19.1
  ports: 
    - "15050:5050"
  links: 
    - zookeeper:zk
  command: mesos-master --zk=zk --work_dir=/var/log --quorum=1
mesosSlave:
  image: mesosphere/mesos:0.19.1
  links: 
    - zookeeper:zk
  command: mesos-slave --master=zk

谢谢 !


编辑:

感谢 Mark O`Connor 的帮助,我创建了一个基于 docker 的工作的 mesos 设置(+storm、chronos 等)。

享受吧,如果你觉得这很有用 - 请贡献: https ://github.com/yaronr/docker-mesos

PS。请+1马克的回答:)

4

1 回答 1

29

您没有指出您遇到的错误。

这是您正在使用的图像的文档:

Mesos 基础 Docker 使用来自https://mesosphere.io/downloads/的 Mesosphere 包 。不启动 Mesos,请使用 mesos-master 和 mesos-slave Dockers。

这些图像真正让我担心的是它们不受信任,并且没有立即可用的来源。

因此,我使用 mesosphere github 作为灵感重新创建了您的示例:

更新示例

更新示例以包含 chronos 框架

├── build.sh
├── fig.yml
├── mesos
│   └── Dockerfile
├── mesos-chronos
│   └── Dockerfile
├── mesos-master
│   └── Dockerfile
└── mesos-slave
    └── Dockerfile

构建基础镜像(只需执行一次)

./build.sh

运行 fig 以启动每个服务的实例:

$ fig up -d
Creating mesos_zk_1...
Creating mesos_master_1...
Creating mesos_slave_1...
Creating mesos_chronos_1...

关于 fig 的一件有用的事情是你可以扩大奴隶的规模

$ fig scale slave=5
Starting mesos_slave_2...
Starting mesos_slave_3...
Starting mesos_slave_4...
Starting mesos_slave_5...

mesos 主控制台应该显示 5 个从站正在运行

http://localhost:15050/#/slaves

chronos 框架应该正在运行并准备好启动任务

http://localhost:14400

无花果.yml

zk:
  image: mesos
  command: /usr/share/zookeeper/bin/zkServer.sh start-foreground
master:
  build: mesos-master
  ports:
    - "15050:5050"
  links:
    - "zk:zookeeper"
slave:
  build: mesos-slave
  links:
    - "zk:zookeeper"
chronos:
  build: mesos-chronos
  ports:
    - "14400:4400"
  links:
    - "zk:zookeeper"

笔记:

  • 此示例仅需要 Zookeeper 的单个实例

构建.sh

docker build --rm=true --tag=mesos mesos

mesos/Dockerfile

FROM ubuntu:14.04
MAINTAINER Mark O'Connor <mark@myspotontheweb.com>

RUN echo "deb http://repos.mesosphere.io/ubuntu/ trusty main" > /etc/apt/sources.list.d/mesosphere.list
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv E56151BF
RUN apt-get -y update
RUN apt-get -y install mesos marathon chronos

mesos-master/Dockerfile

FROM mesos
MAINTAINER Mark O'Connor <mark@myspotontheweb.com>

EXPOSE 5050

CMD ["--zk=zk://zookeeper:2181/mesos", "--work_dir=/var/lib/mesos", "--quorum=1"]

ENTRYPOINT ["mesos-master"]

mesos-slave/Dockerfile

FROM mesos
MAINTAINER Mark O'Connor <mark@myspotontheweb.com>

CMD ["--master=zk://zookeeper:2181/mesos"]

ENTRYPOINT ["mesos-slave"]

mesos-chronos/Dockerfile

FROM mesos
MAINTAINER Mark O'Connor <mark@myspotontheweb.com>

RUN echo "zk://zookeeper:2181/mesos" > /etc/mesos/zk

EXPOSE 4400

CMD ["chronos"]

笔记:

  • “chronos”命令行是使用文件配置的。
于 2014-08-09T11:42:54.937 回答