marathon有两个应用动态端口划分的范围配置字段
--local_port_max
--local_port_min
另外在mesos的agent上有一个resources的字段,里面也可以设置端口的范围 原则上应用首先按照marathon的配置进行端口随机划分,但是到了agent会根据具体的host上的情况,再次按照resources的设置分派并上报给marathon和mesos master (上面的结论是我猜的)
另外在文档 Port Mapping Network Isolator一节中有提到
sysctl net.ipv4.ip_local_port_range
这个系统参数控制了应用可以使用的所有随机端口的范围 mesos启动docker应用之后会随机启动一个mesos-docker-excuter的进程来控制docker容器,并维持其到agent的通信,excuter使用的端口就来源ip_local_port_range
这样来讲,应用的端口最合理的就是不能和系统的端口划分范围冲突才行