環境準備,請參考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):健康檢查