dcos - marathon - internal小点

来源:互联网 发布:java里把大括号替换 编辑:程序博客网 时间:2024/05/22 14:27

dcos 作为运行docker的底层支撑平台, 是我们的工作量减少不少,但是由于docker数量众多,即使有了overlay的网络,可是ip地址呀端口号呀那么多,我们可如何是好呢?

对喽,这个时候 marathon-lb就出现了,大致过程如下:
1. 我们运行docker, 打出一个随机端口A,而且告知zk我们希望我们拥有哪个端口B可以被别人访问
2. marathon-lb 会去zk找这个端口B,然后作为负载均衡设备,供别人访问lb的B端口导向实际appdocker的B端口
3. 那么ip地址是哪个来,marathon-lb在运行后,会在zk进行注册,域名 marathon-lb-internal.marathon.mesos或者其他的域名,不错吧,当然解析需要把本地的nslookup server指向 dcos master。

APP docker的配置json

{  "id": "nginx-internal",  "container": {    "type": "DOCKER",    "docker": {      "image": "nginx:1.9.14",      "network": "BRIDGE",      "portMappings": [        { "hostPort": 0, "containerPort": 80, "servicePort": 10001 }      ],      "forcePullImage":true    }  },  "instances": 1,  "cpus": 0.1,  "mem": 65,  "healthChecks": [{      "protocol": "HTTP",      "path": "/",      "portIndex": 0,      "timeoutSeconds": 10,      "gracePeriodSeconds": 10,      "intervalSeconds": 2,      "maxConsecutiveFailures": 10  }],  "labels":{    "HAPROXY_GROUP":"internal"  }}# 内外部-nginx{  "id": "nginx-everywhere",  "container": {    "type": "DOCKER",    "docker": {      "image": "nginx:1.7.7",      "network": "BRIDGE",      "portMappings": [        { "hostPort": 0, "containerPort": 80, "servicePort": 10002 }      ],      "forcePullImage":true    }  },  "instances": 1,  "cpus": 0.1,  "mem": 65,  "healthChecks": [{      "protocol": "HTTP",      "path": "/",      "portIndex": 0,      "timeoutSeconds": 10,      "gracePeriodSeconds": 10,      "intervalSeconds": 2,      "maxConsecutiveFailures": 10  }],  "labels":{    "HAPROXY_GROUP":"external,internal"  }}

marathon-lb-internal的json

# 做一个internal marathon-lb{  "marathon-lb":{    "name":"marathon-lb-internal",    "haproxy-group":"internal",    "bind-http-https":false,    "role":""  }}dcos package install --options=options.json marathon-lb

测试

curl http://marathon-lb-internal.marathon.mesos:10001/
  • marathon-lb-internal的管理地址
  • marathon-lb-internal.marathon.mesos:9090/haproxy?stats

这里写图片描述

0 0
原创粉丝点击