marathon-lb使用实践

在使用marathon发布程序时经常发现端lb上的端口号不是自己想发布的,而是一个随机端口。

仔细研究了下marathon-lb的端口机制,发现servicePort才是真正在lb上对外释放的端口。

如下端口的配置意思是容器内,程序监听的容器端口是30590,在lb上对外释放50000端口,主机上对应桥接端口是30010(也可以是其他端口,或随机端口,随机端口填0),VIP_0这个地方端口号要与容器内的端口号一致,其主要作用是的配合lb做负载均衡时使用,让用户可以再mesos集群外部通过访问lb的50000端口可以访问到容器内的30590的服务。

 

    "portMappings": [
      {
        "containerPort": 30590,
        "hostPort": 30010,
        "labels": {
          "VIP_0": "/api:30590"
        },
        "protocol": "tcp",
        "servicePort": 50000,
        "name": "api"
      }
    ],

 

VIP包含3个部分:

  • Private virtual IP address -----容器自动分配的内部地址
  • Port (a port which the service is available on)------这也就是说该端口必须与容器内端口一致才能有效访问到服务
  • Service name 

api即一个service endpoint, 在DC/OS集群里面(包含master节点)里面可以使用VIP地址(命名约定):api..marathon.l4lb.thisdcos.directory:30590来访问该服务。如果配置了VIP,marathon-lb则直接使用该VIP来实现对各个instance之间的负载均衡。

 

网络采用bridge模式:

  "networks": [
    {
      "mode": "container/bridge"
    }
  ],

 

如果需要发布端口到marathon-lb上,标签的配置不能缺少,如果缺少标签配置,则不会发布端口到lb

 

 "labels":{
    "HAPROXY_GROUP":"external"
  }

这个group有2个选项: external, internal,取决于将lb用于外部还是内部,或者2个都配置,用逗号隔开,同时用于内部和外部。

另外需要注意的是marathon的app没有完成部署(即非running状态),对外的端口是不会发布到lbs上的。

总而言之,servicePort和label 2个配置一起完成lb的配置。

如果需要对HTTP请求做更多的头部设置可以在每个应用的labels里面的相应字段添加相关信息:

如:

      "labels":{
        "HAPROXY_GROUP":"external",
        "HAPROXY_0_BACKEND_HTTP_OPTIONS":"  option forwardfor\n  no option http-keep-alive\n      http-request set-header X-Forwarded-Port %[dst_port]\n  http-request add-header X-Forwarded-Proto https if { ssl_fc }\n"
      }

 

    "labels":{
      "HAPROXY_0_STICKY":true,
      "HAPROXY_0_REDIRECT_TO_HTTPS":true,
      "HAPROXY_0_VHOST":"nginx.mesosphere.com"
    }
    "labels":{
      "HAPROXY_0_VHOST":"nginx.mesosphere.com",
      "HAPROXY_0_SSL_CERT":"/etc/ssl/certs/nginx.mesosphere.com"
    }

 

转载于:https://my.oschina.net/u/2449787/blog/1628014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值