The role of the proxy in Elastic Cloud Enteprise is not to provide a unified view over multiple clusters (which is what tribe node does), but rather to abstract the client from the physical location of cluster nodes. In Cloud Enterprise, each cluster is assigned a virtual host name which contains the cluster ID for that cluster. The proxy maintains an internal routing table (which is based on the data that resides in ZooKeeper) and uses the cluster ID to route the request to specific hosts and from there to the Docker containers that run the actual cluster nodes.
When dealing with a large amount of clusters, this is useful as it allows Cloud Enterprise to do a number of things:
- Move cluster nodes around and restart them in case their host fails, without it being noticeable to the client.
- Easily block traffic to a running cluster when it's overwhelmed, needs to undergo maintenance, or taken out of service.
- Enforce certain policies on API requests (e.g. disallow a certain API call), although we do not use this capability at this point
- Centrally log all requests to the clusters it's managing which is very useful for troubleshooting and tracing issues