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.
>>
>
>

Reply via email to