如何将Docker卷用作Mesos / Marathon的持久卷?

时间:2016-01-26 11:37:13

标签: docker cluster-computing mesos mesosphere docker-volume

我在CoreOS上使用Ceph RBD Docker volume plugin运行Mesos和Ceph集群,但我不清楚它如何与Mesos / Marathon一起使用...创建/使用{ {1}}单个Docker容器的卷虽然完美无缺。

我找不到任何文章/博客文章/通过Marathon处理这些卷的自动创建(以及#34;任务迁移"介于Mesos奴隶之间,重新映射)的任何内容。对我来说尤其重要的是,当每个实例需要拥有自己的卷时,如何运行多个有状态服务实例(想象一下MongoDB ReplicaSet on Mesos/Marathon)。

我知道Mesos persistent volume docs,而且我也看到Marathon issue,但我仍然很困惑如何或何时可以使用它......

此处还有其他问题:

,遗憾的是,这个问题确实无法解决。

使用RexRay的EMC Code示例涵盖单个实例示例,我也可以使用上面提到的卷插件轻松处理:

rbd

在这种情况下,将自动创建{ "id": "nginx", "container": { "docker": { "image": "million12/nginx", "network": "BRIDGE", "portMappings": [{ "containerPort": 80, "hostPort": 0, "protocol": "tcp" }], "parameters": [{ "key": "volume-driver", "value": "rbd" }, { "key": "volume", "value": "nginx-data:/data/www" }] } }, "cpus": 0.2, "mem": 32.0, "instances": 1 } 卷。但是,如果我想使用持久性卷多个实例呢?

1 个答案:

答案 0 :(得分:3)

这是Flocker要解决的用例。 (免责声明:我是ClusterHQ的首席技术官)。有关Flocker< =>的演示,请参阅this blog post Mesos / Marathon交互,显示了Flocker Control Service如何充当集群设置中容器卷存在的“真实来源”。然后,Flocker将按需创建,然后在主机之间协调映射和取消映射这些卷,因为引用这些卷的容器在群集中移动。

Flocker通过提供卷名称的群集范围命名空间来实现这一点,然后可以通过Docker与Foller插件使用这些名称,以便为Mesos群集中的有状态容器提供可移植性和高可用性。

Flocker也有一个Ceph驱动程序:

  • Google“Flocker Ceph Driver”

适用于CoreOS:

  • Google“CoreOS demo上的Flocker”

您可以通过为每个容器提供自己的卷名(例如mongo_1mongo_2等)来运行多实例作业(例如具有副本集的MongoDB)。

将这些碎片放在一起并非易事,但我很乐意提供帮助。如果你愿意,我可以专门为你的筹码(Ceph + CoreOS + Docker + Mesos + Marathon)写一个详细的指南。