mantl / mesos-consul

Mesos to Consul bridge for service discovery
Apache License 2.0
338 stars 95 forks source link

Question - How does this tie/connect to the Consul service #43

Closed ghost closed 8 years ago

ghost commented 8 years ago

This is not an issue but a question, I don't understand how this bridge connects to consul, where do i specify the host/port of consul for this bridge to connect? I don't see any environment variables to do this?

ChrisAubuchon commented 8 years ago

It connects to a Consul agent that is running on the same node that the service is running on. It gets that address from the Mesos task information. Because of how service registration with Consul works, this is the only way to properly register the services. Registering a service with a centralized Consul server causes that Consul server to manage the service. If that service fails, then the Consul server is marked as failing instead of the node running the service.

ghost commented 8 years ago

@ChrisAubuchon I am also attempting to use the haproxy-consul container as well with this mesos-consul bridge. So are you saying there is another dependency on running a consul agent on each mesos slave?

ChrisAubuchon commented 8 years ago

There is. The consul agent doesn't have to be a server though. It can be a client.

I'm not sure that the haproxy-consul container works with the data that mesos-consul puts in Consul. I'm fairly certain that you need to run marathon-consul for the haproxy bit to work.

ghost commented 8 years ago

ok thanks, will have to do some more digging. In regards to marathon-consul, I already got that working with the haproxy-consul along with a consul service and I don't recall having to install the consul agents for my particular configuration because marathon-consul offers the environment variable to connect to the consul server.

I now wanted to see what mesos-consul offers instead of using the marathon-consul bridge. I actually thought haproxy-consul would work with either marathon-consul or mesos-consul, but you have some doubts.

stevendborrelli commented 8 years ago

@sarlindo you can set haproxy-consul to run either against marathon or consul data stores by setting an environment variable. It supports both.

ChrisAubuchon commented 8 years ago

The key difference that your running into here is that marathon-consul doesn't register services with Consul. It writes the Mesos task information into the Consul K/V store which the haproxy-consul container parses via consul-template. Because it's not registering a service, it can write to any consul server.

Mesos-consul registers the Mesos task as a service within Consul and thus needs to register the service with an agent running on the same node as the task.

ghost commented 8 years ago

Thanks guys for the info.