Example: A Large Installation with Separate Management Services and Proxies

What you get: This example creates large Elastic Cloud Enterprise installation that separates the allocator and proxy roles from the ECE management services (the director and coordinator roles). Intended for larger deployments with significant overall search and indexing throughput, this example uses three availability zones, so that it is highly available. To create this installation, you need nine to twelve hosts, more if you need additional allocators to handle a higher volume of user requests.

Need more capacity still? Scale up your installation by adding more allocators as the number of Elasticsearch clusters and Kibana instances hosted by Elastic Cloud Enterprise continues to grow.

A large installation with nine to twelve hosts across three availability zones

The numbered steps in the illustration match the steps in our instructions that begin with A numbered step. You need to perform some steps on more than one host, as indicated. Don’t forget to substitute the coordinator host and other information that is specific to your installation when you run the commands.

What you need:

  • 3 hosts with at least 32 GB RAM each for directors and coordinators (ECE management services)
  • 3 or more hosts with 256 GB RAM each for allocators
  • 3 hosts with 16 GB RAM each for proxies
  • We recommend the following JVM heap sizes:

    ServiceJVM Heap Size (Xms and Xmx)

    runner

    1 GB

    allocator

    4 GB

    proxy

    8 GB

    zookeeper

    4 GB

    director

    1 GB

    constructor

    4 GB

    admin-console

    4 GB

To deploy this Elastic Cloud Enterprise installation:

  1. Install Elastic Cloud Enterprise on the first host to start a new installation with your first availability zone. This first host holds all runner roles to help bootstrap the rest of the installation, but you will remove some of its roles in a later step. After installation completes, copy down the coordinator host IP address, user credentials and roles token information. Keep this information safe.

    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --availability-zone MY_ZONE-1 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"zookeeper":{"xms":"4G","xmx":"4G"},"director":{"xms":"1G","xmx":"1G"},"constructor":{"xms":"4G","xmx":"4G"},"admin-console":{"xms":"4G","xmx":"4G"}}'
  2. Generate a new roles token that persists for one hour on the first host, so that other hosts can join your installation with the right role permissions in subsequent steps (referred to as MY_TOKEN). The new token needs to enable the director, coordinator and proxy runner roles.

    curl -k -H 'Content-Type: application/json' -u admin:PASSWORD https://localhost:12443/api/v1/platform/configuration/security/enrollment-tokens -d '{ "persistent": false, "roles": ["director", "coordinator", "proxy"] }'
  3. Install Elastic Cloud Enterprise on a second and third host, placing them into a second and a third availability zone, and assign them the director and coordinator roles. Do not assign the allocator or the proxy role, as these runners should not handle or route any user requests. Make sure you include the coordinator host IP information from Step 1 and the new roles token from Step 2.

    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'MY_TOKEN' --roles "director,coordinator" --availability-zone MY_ZONE-2 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"zookeeper":{"xms":"4G","xmx":"4G"},"director":{"xms":"1G","xmx":"1G"},"constructor":{"xms":"4G","xmx":"4G"},"admin-console":{"xms":"4G","xmx":"4G"}}'
    
    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'MY_TOKEN' --roles "director,coordinator" --availability-zone MY_ZONE-3 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"zookeeper":{"xms":"4G","xmx":"4G"},"director":{"xms":"1G","xmx":"1G"},"constructor":{"xms":"4G","xmx":"4G"},"admin-console":{"xms":"4G","xmx":"4G"}}'
  4. To handle the Elasticsearch and Kibana workload, install Elastic Cloud Enterprise on three or more hosts, distributing them evenly across the existing three availability zones, or on however many hosts you think you need initially, and assign them the allocator role. Make sure you include the coordinator host IP information and allocator roles token from Step 1.

    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'ALLOCATOR_TOKEN' --roles "allocator" --availability-zone MY_ZONE-1 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"allocator":{"xms":"4G","xmx":"4G"}}'
    
    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'ALLOCATOR_TOKEN' --roles "allocator" --availability-zone MY_ZONE-2 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"allocator":{"xms":"4G","xmx":"4G"}}'
    
    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'ALLOCATOR_TOKEN' --roles "allocator" --availability-zone MY_ZONE-3 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"allocator":{"xms":"4G","xmx":"4G"}}'
  5. To handle the routing of user requests to Elasticsearch, install Elastic Cloud Enterprise on a three additional hosts, distributing them evenly across the existing three availability zones, and assign them the proxy role. Do not assign any other roles, as these runners should only route user requests. Make sure you include the coordinator host IP information from Step 1 and the new roles token from Step 2.

    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'MY_TOKEN' --roles "proxy" --availability-zone MY_ZONE-1 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"proxy":{"xms":"8G","xmx":"8G"}}'
    
    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'MY_TOKEN' --roles "proxy" --availability-zone MY_ZONE-2 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"proxy":{"xms":"8G","xmx":"8G"}}'
    
    bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --coordinator-host HOST_IP --roles-token 'MY_TOKEN' --roles "proxy" --availability-zone MY_ZONE-3 --memory-settings '{"runner":{"xms":"1G","xmx":"1G"},"proxy":{"xms":"8G","xmx":"8G"}}'
  6. Modify the first host you installed Elastic Cloud Enterprise on to prevent it from handling or routing user requests:

    1. Enable maintenance mode to prevent new Elasticsearch clusters and Kibana instances from being provisioned on the host whilst it still holds the allocator role.
    2. Move all nodes off the first host in preparation for removing the allocator role. This step moves the ES admin cluster and ES logging cluster that are part of the Elastic Cloud Enterprise administration console, shown as admin-console-elasticsearch and logging-and-metrics in the Cloud UI. Elasticsearch clusters and Kibana instances cannot be moved at the same time, so move one after the other. Verify that both Elasticsearch clusters and Kibana have been moved to another allocator.

      Moving all nodes can take a few minutes. You can check progress on the Activity Feed page in the Cloud UI.

    3. After all cluster nodes have finished moving off the first host, remove the allocator role so that the first host is no longer handling any Elasticsearch or Kibana workloads.
    4. Update the cluster endpoints, replacing the IP address portion of the CNAME with the IP address of one of the new proxies you created in Step 5. This step is needed so that the Elasticsearch and Kibana endpoints URLs shown in the Cloud UI use one of the new proxies you created. Note that if you plan to use a load balancer as recommended, you will access cluster endpoints through the load balancer rather than going directly to a proxy after installation is complete.
    5. Remove the proxy role from the first host so that the host is no longer routing any user requests.

    At this point, the first host you installed Elastic Cloud Enterprise on should hold only the coordinator and director roles, making it the third runner to hold these roles along with the runners created in Step 3.

  7. Change the deployment configuration for the admin-console-elasticsearch and logging-and-metrics clusters to use three availability zones and resize the nodes to use at least 4 GB of RAM. This change makes sure that the clusters used by the administration console are highly available and provisioned sufficiently.

For production setups, perform the post-installation steps next.