我正在运行Ceph RBD Docker volume plugin的CoreOS上运行Mesos和Ceph集群,但是我还不清楚如何将其与Mesos / Marathon一起使用…为单个Docker容器创建/使用rbd卷可以正常工作.
我找不到任何文章/博客文章/有关通过马拉松自动创建这些卷(以及在Mesos奴隶之间进行“任务迁移”的情况下重新映射)的内容.对我来说特别重要的是,当每个实例需要有自己的卷时(例如MongoDB ReplicaSet on Mesos/Marathon),如何运行有状态服务的多个实例.
我知道Mesos persistent volume docs,也看到了Marathon issue,但是我仍然很困惑如何或何时使用它…
关于SO还有其他问题:
> How to use volumes-from in marathon
> Docker on Mesos: Volume is placed on which node?
> Docker volume plugin marathon
不幸的是,这实际上并没有解决这个特定问题的答案.
RexRay的EMC Code示例还仅涵盖了一个单实例示例,我也可以使用上面提到的卷插件轻松处理该示例:
{
"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
}
Flocker通过提供卷名称的整个群集范围的命名空间来实现此目的,然后可通过Flocker插件将这些名称用于带有Marathon的Docker,以为Mesos群集中的有状态容器提供可移植性和高可用性.
Flocker也有一个Ceph驱动程序:
> Google“ Flocker Ceph驱动程序”
并适用于CoreOS:
> Google“ CoreOS演示上的Flocker”
您可以通过为每个容器指定自己的卷名(例如mongo_1,mongo_2等)来运行多实例作业(例如具有副本集的MongoDB).
将这些部分放在一起并非易事,但我很乐意提供帮助.如果愿意,我可以为您的堆栈(Ceph CoreOS Docker Mesos Marathon)写一份详细的指南.