环境准备,请参考mesosphere/marathon/docker安装配置
1.marathon服务编排
下面为marathon服务编排配置:
{
"id":"registry",
"cpus":1,
"mem":256,
"instances":1,
"container":{
"type":"DOCKER",
"docker":{
"network":"BRIDGE",
"image":"daocloud.io/library/registry:0.9.1",
"portMappings":[
{
"containerPort":5000,
"hostPort": 31000,
"servicePort":0,
"protocol":"tcp",
"name":"http"
}
]
},
"volumes":[
{
"containerPath":"/opt/docker-image",
"hostPath":"/home/zcg/data/registry",
"mode":"RW"
}
]
},
"env":{
"STORAGE_PATH":"/opt/docker-image"
},
"constraints":[
[
"hostname",
"CLUSTER",
"172.16.120.136"
]
],
"healthChecks":[
{
"protocol":"HTTP",
"path":"/",
"portIndex":0,
"gracePeriodSeconds":300,
"intervalSeconds":60,
"timeoutSeconds":20,
"maxConsecutiveFailures":3
}
]
}
2.配置详解
2.1 端口号
"portMappings":[
{
"containerPort":5000,
"hostPort": 31000,
"servicePort":0,
"protocol":"tcp",
"name":"http"
}
]
containerPort:容器内部端口号,设置为0表示随机分配
hostPort:主机端口号,设置为0表示随机分配,mesos slave启动时默认预留了端口号31000~32000,如果设置其他端口号mesos不会分配资源,mesos slave启动可以配置预留端口号。
有关端口号的其他内容请参考marathon参考(11):ports端口设置
2.2 约束
"constraints":[
[
"hostname",
"CLUSTER",
"172.16.120.136"
]
]
上面配置的含义是让docker容器运行在IP为172.16.120.136的机器上。
有关约束的更多内容参考marathon参考(6): 约束Constraints
2.3 健康检查
"healthChecks":[
{
"protocol":"HTTP",
"path":"/",
"portIndex":0,
"gracePeriodSeconds":300,
"intervalSeconds":60,
"timeoutSeconds":20,
"maxConsecutiveFailures":3
}
]
上面配置的含义上使用HTTP协议,端口号为ports中定义的第一端口,访问路径是根目录,检查应用是否健康。
有关健康检查的更多内容参考marathon参考(9):健康检查