Loading

Setting up GCE Discovery

Before starting, you need:

If you did not set it yet, you can define your default project you will work on:

gcloud config set project es-cloud 

If you haven’t already, login to Google Cloud

gcloud auth login 

This will open your browser. You will be asked to sign-in to a Google account and authorize access to the Google Cloud SDK.

gcloud compute instances create myesnode1 \ --zone <your-zone> \ --scopes compute-rw 

When done, a report like this one should appears:

Created [https://www.googleapis.com/compute/v1/projects/es-cloud-1070/zones/us-central1-f/instances/myesnode1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS myesnode1 us-central1-f n1-standard-1 10.240.133.54 104.197.94.25 RUNNING 

You can now connect to your instance:

# Connect using google cloud SDK gcloud compute ssh myesnode1 --zone europe-west1-a # Or using SSH with external IP address ssh -i ~/.ssh/google_compute_engine 192.158.29.199 
Service Account Permissions

It’s important when creating an instance that the correct permissions are set. At a minimum, you must ensure you have:

scopes=compute-rw 

Failing to set this will result in unauthorized messages when starting Elasticsearch. See Machine Permissions.

Once connected, install Elasticsearch.

Install the plugin:

# Use Plugin Manager to install it sudo bin/elasticsearch-plugin install discovery-gce 

Open the elasticsearch.yml file:

sudo vi /etc/elasticsearch/elasticsearch.yml 

And add the following lines:

cloud: gce: project_id: es-cloud zone: europe-west1-a discovery: seed_providers: gce 

Start Elasticsearch:

sudo systemctl start elasticsearch 

If anything goes wrong, you should check logs:

tail -f /var/log/elasticsearch/elasticsearch.log 

If needed, you can change log level to trace by opening log4j2.properties:

sudo vi /etc/elasticsearch/log4j2.properties 

and adding the following line:

# discovery logger.discovery_gce.name = discovery.gce logger.discovery_gce.level = trace