Gurminder,
Consul is a CP system, servers contain all the state, and clients are doing RPC to the servers
for all requests. With this model, the clients actually don’t have any data. The P2P gossip that
is used to is to track the location of servers. There are a number of trade-offs here, but the CP
architecture enables a much richer feature set than an AP system. We went this route after
If you want more of an AP like system, Serf is always available too!
That said, there are 2 deployment styles we recommend:
1) Consul client on all nodes, with DNS recursor configured. All DNS queries are serviced
by the local Consul agent, and the recursor is used for non-Consul queries. This is simple to
configure, simple to deploy.
2) Consul client on all nodes, with central BIND servers. In this case, assume there are 3
Consul servers. On each server node, you also run BIND. BIND will forward Consul requests
to the local agent, and recurse non-Consul requests. Since you are running N=3 BIND’s,
you don’t have a SPOF (all the name servers are in /etc/resolv.conf). This is a slightly more
complex deployment, but works very well since BIND enables DNS caching and other features
that Consul does not support.
These two options both work very well, and offer a high level of reliability. Both are fairly
straightforward to setup as well.
Hope that helps!
Best Regards,
Armon Dadgar