I dont think there is way how can MesosDNS help you in this case ... when you rely on "classic" DNS lookups - they are based on looking up DNS -> IP (a, aaaa records) - there is no port lookup (they use port you provide).
https://mesosphere.github.io/marathon/docs/service-discovery-load-balancing.html is a good starting point. 2015-07-16 22:24 GMT+02:00 Dvorkin-Contractor, Eugene (CORP) < [email protected]>: > Thanks. I was hoping that mesos-dns will do it for me and I can run > services on different ports even on the same node. I was hesitant to use > HAProxy. > I think I have to use HAProxy/Bamboo to achieve this functionality. > > From: Ondrej Smola <[email protected]> > Reply-To: "[email protected]" <[email protected]> > Date: Thursday, July 16, 2015 at 2:55 PM > To: "[email protected]" <[email protected]> > Subject: Re: Mesos-DNS configuration problem with dockerized web > application > > Hi, > > "portMappings": [ > { "containerPort": 8080, "hostPort": *80*, "servicePort": 9000, > "protocol": "tcp" } > ] > > will work - you need to specify required port as hostPort > only limitation of this setup is that you wont be able to run multiple > services on single host with same hostPort (port collision) > but for most setups you should be ok with just choosing random/different > ports for different services or ensuring there are more nodes than > requested instances with same port > if you want to use random port - you will need some have logic to query > DNS and parse SRV records and for example setup HA proxy with correctly > assigned ports > > this problem can also be solved using SDN (for example flannel/weave -) > assigning each service unique IP address and dont care about port > collisions - but this is not related to MesosDNS - just info :) > > > > > 2015-07-16 17:58 GMT+02:00 Dvorkin-Contractor, Eugene (CORP) < > [email protected]>: > >> Hi, >> I can’t access my application using mesos-dns. Neither port 8123 nor >> 8080 responding. I think I miss something in configuration but can’t find >> problem myself. >> >> I have a very basic java application that listen on port 8080. I have >> created docker image and deployed this application to marathon. >> My deployment configuration is following: >> $ cat app-slick.json >> { >> "container": { >> "type": "DOCKER", >> "docker": { >> "image": "edvorkin/slick-swagger:1", >> "network": "BRIDGE", >> "portMappings": [ >> { "containerPort": 8080, "hostPort": 0, "servicePort": 9000, >> "protocol": "tcp" } >> ] >> } >> }, >> "cmd": "java -jar /tmp/spray-slick-swagger-assembly-0.0.2.jar Boot", >> "id": "slick-swagger-demo", >> "instances": 1, >> "cpus": 0.1, >> "mem": 256, >> "constraints": [ >> ["hostname", "UNIQUE"] >> ] >> } >> Application successfully deployed to 2 nodes and assigned random port >> of 31990 and 31000 on each node. >> Now I installed and configured Mesos-DNS with config.json >> { >> "zk": "zk://172.31.50.58:2181,172.31.50.59:2181,172.31.50.60:2181/mesos", >> "refreshSeconds": 60, >> "ttl": 60, >> "domain": "mesos", >> "port": 53, >> "resolvers": ["172.31.0.2"], >> "timeout": 5, >> "email": "root.mesos-dns.mesos" >> } >> >> >> and I got following: >> >> $ *dig slick-swagger-demo.marathon.mesos* >> >> ; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7_1.1 <<>> >> slick-swagger-demo.marathon.mesos >> ;; global options: +cmd >> ;; Got answer: >> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20376 >> ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 >> >> ;; QUESTION SECTION: >> ;slick-swagger-demo.marathon.mesos. IN A >> >> ;; ANSWER SECTION: >> slick-swagger-demo.marathon.mesos. 60 IN A 172.31.11.202 >> slick-swagger-demo.marathon.mesos. 60 IN A 172.31.11.203 >> >> ;; Query time: 1 msec >> ;; SERVER: 54.86.164.193#53(54.86.164.193) >> ;; WHEN: Thu Jul 16 15:23:04 UTC 2015 >> ;; MSG SIZE rcvd: 83 >> >> >> *curl >> http://localhost:8123/v1/services/_slick-swagger-demo._tcp.marathon.mesos >> <http://localhost:8123/v1/services/_slick-swagger-demo._tcp.marathon.mesos> >> |python -m json.tool* >> % Total % Received % Xferd Average Speed Time Time Time >> Current >> Dload Upload Total Spent Left >> Speed >> 100 289 100 289 0 0 1916 0 --:--:-- --:--:-- --:--:-- >> 1926 >> [ >> { >> "host": "slick-swagger-demo-15491-s42.marathon.mesos.", >> "ip": "172.31.11.203", >> "port": "31990", >> "service": "_slick-swagger-demo._tcp.marathon.mesos" >> }, >> { >> "host": "slick-swagger-demo-20495-s43.marathon.mesos.", >> "ip": "172.31.11.202", >> "port": "31000", >> "service": "_slick-swagger-demo._tcp.marathon.mesos" >> } >> ] >> >> But when I try to access my application using dns name, I can’t get get >> response. >> curl http://slick-swagger-demo.marathon.mesos:8080 >> curl: (7) Failed connect to slick-swagger-demo.marathon.mesos:8080; >> Connection refused >> >> curl slick-swagger-demo.marathon.mesos:8123 >> 404: Page Not Found >> >> curl slick-swagger-demo.marathon.mesos:31990 – produce desired results, >> but that binded to a random port. >> >> How do I configure mapping between random ports and my service? >> I would like to be able to access my server on port 80 for example >> Curl http://slick-swagger-demo.marathon.mesos >> >> Thanks >> Eugene >> >> >> >> >> >> ------------------------------ >> This message and any attachments are intended only for the use of the >> addressee and may contain information that is privileged and confidential. >> If the reader of the message is not the intended recipient or an authorized >> representative of the intended recipient, you are hereby notified that any >> dissemination of this communication is strictly prohibited. If you have >> received this communication in error, notify the sender immediately by >> return email and delete the message and any attachments from your system. >> > >

