Может ли марафон использовать ряд эксклюзивных портов для одного приложения
Я хочу, чтобы набор приложений использовал определенный диапазон портов, а остальные приложения использовали другой диапазон
На месос-агенте я установил: --resources="ports(*):[8000-9000, 31000-32000]"
Я хочу создать 100 × APP1 и использовать сеть BRIDGE с хост-портами в привязках портов из диапазона 8000-9000
и остальные приложения (APP2,APP3,...APPN) для использования диапазона 31000-32000
,
Является ли это возможным?
Прямо сейчас APP2,3 ... APPN может принимать порты из диапазона 8000-9000
, что для меня не желательно.
ОБНОВЛЕНИЕ: я создал роль для диапазона портов ресурса 8000-9000
(статическое резервирование). Проверено в mesos-master:5050/slaves
и вроде бы нормально
"reserved_resources": {
"app1": {
"disk": 0.0,
"mem": 0.0,
"gpus": 0.0,
"cpus": 0.0,
"ports": "[8000-9000]"
}
}
а также
"reserved_resources_full": {
"app1": [{
"name": "ports",
"type": "RANGES",
"ranges": {
"range": [{
"begin": 8000,
"end": 9000
}]
},
"role": "app1",
"reservations": [{
"type": "STATIC",
"role": "app1"
}]
}]
}
он также назначал ноль диску, памяти и т. д., не знаю, почему он так себя ведет. В марафоне я добавил:
"acceptedResourceRoles": [
"app1"
]
Но оно не развернуло приложение. Я поместил запись марафона в след:
С учетом ресурсов с ролями {app1} без резидентных меток бронирования. Не все основные ресурсы удовлетворены: cpus NOT SATISFIED (0.1 > 0.0), mem NOT SATISFIED (512.0 > 0.0) (mesosphere.mesos.ResourceMatcher$:marathon-akka.actor.default-dispatcher-33)
Затем я изменил:
"acceptedResourceRoles": [
"app1",
"*"
]
И теперь это говорит:
С учетом ресурсов с ролями {app1, *} без резидентных меток бронирования. Не удается найти диапазон с портом хоста 8111 для спецификации запуска
Там нет ничего в документах, касающихся resident reservation labels
, Есть reservation labels
но это не говорит о том, как создать или добавить ярлык или просто небольшой пример. Для ролей есть что-то, связанное с ACL, но очень нечеткое, и кажется, что оно затрагивает пользователей и права доступа, а не то, что означает резервирование ресурсов.
1 ответ
Поэтому я нашел способ заставить его работать. Я не знаю, правильно ли это сделать, но мне не с чем сравнивать, так что вот так:
На мастера я добавил в /etc/default/mesos-master
MESOS_ROLES="*,app1"
На mesos slave я добавил в /etc/default/mesos-slave
MESOS_RESOURCES="ports(*):[30000-32000];cpus(*):4.0;mem(*):15023.0;disk(*):34522.0;ports(app1):[8000-9000]" MESOS_ROLES="app1"
и удалил параметр --resources из сценария exec
На мастерах марафона я добавил в / etc / default / marathon
MARATHON_MESOS_ROLE="app1"
Перезапустите все ведущие и подчиненные мезо, и все приложения с ролями ресурсов "app1" будут порождать свои порты в моем желаемом диапазоне [8000-9000].