mesos-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Itamar Ostricher <ita...@yowza3d.com>
Subject Re: Mesos-DNS host based HTTP-redirection from slave to container
Date Mon, 03 Aug 2015 16:44:52 GMT
Thanks!
I also found this automated nginx reverse proxy for docker -
http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/
Looks like a very similar process, that takes advantage of the docker
events API.
I think I was able to get it working.
Ryan, how does this approach compares to bamboo?
Thanks a lot!

On Sun, Aug 2, 2015 at 1:21 PM Ryan Thomas <r.n.thomas@gmail.com> wrote:

> If you are going to be pulling data down yourself it would be better to do
> it from marathon, than mesos-dns as you will have additional data about the
> tasks available.
>
> On 2 August 2015 at 11:12, tommy xiao <xiaods@gmail.com> wrote:
>
>> mesos-dns store the app's IP and ports. so you can query the mesos-dns
>> to setup a route rule to define the url.
>>
>> 2015-08-02 17:51 GMT+08:00 Ryan Thomas <r.n.thomas@gmail.com>:
>>
>>> Yes it appears that mesos-dns does use SRV records - I should really
>>> check it out :)
>>>
>>> On 2 August 2015 at 10:50, Ryan Thomas <r.n.thomas@gmail.com> wrote:
>>>
>>>> Hey Itamar,
>>>>
>>>> Using DNS to redirect to a port will only be possible if you're using
>>>> SRV records (I'm not sure what mesos-dns uses) but this doesn't really
>>>> matter as it won't be looked up by the browser.
>>>>
>>>> For this solution I have a small daemon written in go running on a
>>>> number of hosts (that aren't slaves), this locates the marathon master, and
>>>> pulls down my apps - I tag apps with a "Host" label (something like
>>>> foo.example.com) and then I create a haproxy config file with backends
>>>> directed by the host header. There's a few more smarts in it around only
>>>> pulling apps with a green healthcheck etc.
>>>>
>>>> This daemon manages the lifecycle of haproxy on the node - it uses a
>>>> polling model, not an event driven one from the marathon event stream.
>>>>
>>>> Another solution that uses the event-stream is this one
>>>> https://github.com/QubitProducts/bamboo - it's been a while since I
>>>> checked it out, but was functional back then.
>>>>
>>>> Hope that helps.
>>>>
>>>> ryan
>>>>
>>>> On 2 August 2015 at 07:10, Itamar Ostricher <itamar@yowza3d.com> wrote:
>>>>
>>>>> I use marathon to launch a nginx-docker-container named "my-app", and
>>>>> set up Mesos-DNS, such that "my-app.marathon.mesos" returns the IP of
the
>>>>> slave running the container (e.g. 10.20.30.40).
>>>>>
>>>>> Now, "my-app" is running on some dynamically-allocated port (e.g.
>>>>> 31001), but I would like http://my-app.marathon.mesos/foo to hit my
>>>>> app at http://10.20.30.40:31001/foo
>>>>>
>>>>> Is there a "best practice" way to achieve this behavior?
>>>>>
>>>>> I was thinking about a proxy running on each slave, listening on port
>>>>> 80, redirecting incoming HTTP requests based on the request host to the
>>>>> correct port on localhost. The "correct port" can be determined by querying
>>>>> mesos-dns itself.
>>>>>
>>>>> This sounds like a pretty common use-case, so I wondered if anyone can
>>>>> point me at an existing solution for this.
>>>>>
>>>>> Thanks!
>>>>> - Itamar.
>>>>>
>>>>
>>>>
>>>
>>
>>
>> --
>> Deshi Xiao
>> Twitter: xds2000
>> E-mail: xiaods(AT)gmail.com
>>
>
>

Mime
View raw message