我在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
}
卷。但是,如果我想使用持久性卷和多个实例呢?
答案 0 :(得分:3)
这是Flocker要解决的用例。 (免责声明:我是ClusterHQ的首席技术官)。有关Flocker< =>的演示,请参阅this blog post Mesos / Marathon交互,显示了Flocker Control Service如何充当集群设置中容器卷存在的“真实来源”。然后,Flocker将按需创建,然后在主机之间协调映射和取消映射这些卷,因为引用这些卷的容器在群集中移动。
Flocker通过提供卷名称的群集范围命名空间来实现这一点,然后可以通过Docker与Foller插件使用这些名称,以便为Mesos群集中的有状态容器提供可移植性和高可用性。
Flocker也有一个Ceph驱动程序:
适用于CoreOS:
您可以通过为每个容器提供自己的卷名(例如mongo_1
,mongo_2
等)来运行多实例作业(例如具有副本集的MongoDB)。
将这些碎片放在一起并非易事,但我很乐意提供帮助。如果你愿意,我可以专门为你的筹码(Ceph + CoreOS + Docker + Mesos + Marathon)写一个详细的指南。