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

我正在CoreOS上运行Mesos和Ceph集群,并使用一个Ceph RBD Docker卷插件 ,但是对于Mesos / Marathon如何使用这个插件 ,我还不太清楚…为单个Docker容器创build/使用rbd卷虽然工作正常。

我不能find任何文章/博客文章/无论是通过马拉松处理这些卷的自动创build(以及在“Mesos”从属之间的“任务迁移”,重新映射)这些卷。 对我来说尤为重要的是如何在每个实例需要拥有自己的卷时运行有状态服务的多个实例(想象一下Mesos / Marathon上的MongoDB副本集 )。

我知道Mesos持续卷文档 ,我也看到了马拉松的问题 ,但我仍然很困惑如何或何时这将是可用的…

在这里还有其他的问题:

  • 如何使用卷 – 从马拉松
  • 在Mesos上的Docker:卷被放置在哪个节点上?
  • Docker卷插件马拉松

不幸的是,这并不能真正解决这个问题。

使用RexRay的EMC代码示例也涵盖一个实例示例,我还可以轻松处理上面提到的volume插件:

 { "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 } 

在这种情况下,将自动创buildnginx-data卷。 但是,如果我想要使用持久性卷多个实例呢?

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

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

Flocker也有一个Ceph司机:

  • Google“Flocker Ceph Driver”

并在CoreOS上工作:

  • Google“CoreOS演示Flocker”

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

把这些东西放在一起将是不平凡的,但我很乐意提供帮助。 如果你愿意的话,我可以为你的堆栈(Ceph + CoreOS + Docker + Mesos + Marathon)写一个详细的指南。

Interesting Posts