Customizing Elasticsearch

Customize ElasticSearch cluster to run in HA

By default Fury Kubernetes Distribution deploys a single node ElasticSearch server. But in some scenarios you will need more capacity/performance to store and query logs generated in the cluster.

In this section we will replace the single Elasticsearch server with a 3 nodes Elasticsearch cluster.

Setup

Inside the working git repository you have to modify a couple of files:

$ ls Furyfile.yml
Furyfile.yml
$ ls manifests/distribution/kustomization.yaml
manifests/distribution/kustomization.yaml

Furyfile.yml

We have to switch the elasticseach-single package from the monitoring module to elasticsearch-triple. To do that, add the elastcearch-triple package to the Furyfile.yml:

$ echo -e "  - name: logging/elasticsearch-triple" >> Furyfile.yml
$ grep "elasticsearch" Furyfile.yml
  - name: logging/elasticsearch-single
  - name: logging/elasticsearch-triple

Please note that both lines (elasticsearch-single and elasticsearch-triple) should be present.

Then proceed to download the package in the vendor directory:

$ furyctl vendor -H
$ ls -lrt vendor/katalog/logging/elasticsearch-triple/
total 24
-rw-r--r--  1 sighup  staff  1610 31 mar 10:45 README.md
-rw-r--r--  1 sighup  staff    76 31 mar 10:45 kustomization.yaml
-rw-r--r--  1 sighup  staff   341 31 mar 10:45 triple.yml

kustomization.yaml

Once the new package is present in the vendor directory, you have to modify the manifests/distribution/kustomization.yaml to change the elasticsearch package from single to triple:

$ sed -i .backup 's@elasticsearch-single@elasticsearch-triple@g' manifests/distribution/kustomization.yaml
$ grep "elasticsearch" manifests/distribution/kustomization.yaml
  - ../../vendor/katalog/logging/elasticsearch-triple

Test

If you have followed these steps, you can verify everything is in place with the following command:

$ kustomize build manifests | grep -A 3 elasticsearch | grep replicas
  replicas: 3
$ kustomize build manifests

Commit changes to the repository

These changes should be saved in the git repository, so:

$ git add .
$ git commit -m "Modify Elasticsearch package to deploy it in HA"
$ git push origin master

Last modified 03.04.2020: Add HA note (84848b0)