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 <[email protected]> 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 <[email protected]> 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 <[email protected]>: >> >>> 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 <[email protected]> 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 <[email protected]> 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 >> > >

