Menu Zavrieť

Upgrade Elasticsearch clustera

Upgrade Elasticsearch clustera z verzie 5.5.1 na verziu 6.8.1

  • Autor : Miroslav Kohútik
  • Operačný Systém : Ubuntu 16.04

V tomto návode si ukážeme ako aktualizovať Elasticsearch cluster, ktorý sa nachádza na jednom zariadení.
Ako príklad použijeme náš Elasticsearch cluster, ktorý pozostáva z piatich uzlov.

Pred vykonaním aktualizácie treba zastaviť všetky uzly

sudo systemctl stop elasticsearch_data1
sudo systemctl stop elasticsearch_data2
sudo systemctl stop elasticsearch_data3
sudo systemctl stop elasticsearch_ingest
sudo systemctl stop elasticsearch_master

Stiahneme si inštalačný balík pre Elasticsearch verziu 6.8.1

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.1.deb

Nainštalujeme novú verziu

sudo dpkg -i elasticsearch-6.8.1.deb

Elasticsearch by sme teraz mali mať úspešne aktualizovaný na verziu 6.8.1, avšak náš cluster ešte nemôžeme spustiť. Najprv musíme manuálne aktualizovať Linuxovú službu pre každý uzol, pretože definícia služieb pre verziu 6.x je mierne odlišná od verzie 5.x.
Uzly nášho clustera sa nachádzajú v /usr/lib/systemd/system/

Tu je úkážka časti súboru /usr/lib/systemd/system/elasticsearch_master.service:

[Service]
Environment=ES_HOME=/usr/share/elasticsearch
Environment=CONF_DIR=/etc/master
Environment=DATA_DIR=/var/lib/elasticsearch/master
Environment=LOG_DIR=/var/log/elasticsearch/master
Environment=PID_DIR=/var/run/elasticsearch
EnvironmentFile=-/etc/default/elasticsearch

WorkingDirectory=/usr/share/elasticsearch

User=elasticsearch
Group=elasticsearch

ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec

ExecStart=/usr/share/elasticsearch/bin/elasticsearch \
                                                -p ${PID_DIR}/elasticsearch.pid \
                                                -Edefault.path.logs=${LOG_DIR} \
                                                -Edefault.path.data=${DATA_DIR} \
                                                -Edefault.path.conf=${CONF_DIR}

Tu je tá istá časť toho istého súboru aktualizovaná pre použite s verziou 6.x:

[Service]
Environment=ES_HOME=/usr/share/elasticsearch
Environment=PID_DIR=/var/run/elasticsearch
EnvironmentFile=-/etc/default/elasticsearch
LimitMEMLOCK=infinity
RuntimeDirectory=elasticsearch
PrivateTmp=true
Environment=ES_PATH_CONF=/etc/master

WorkingDirectory=/usr/share/elasticsearch

User=elasticsearch
Group=elasticsearch

ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet

Uistite sa, že pre každú jednu premennú, ktorú ste nastavili vo svojich elasticsearch_.service súboroch, taktiež zakomentujete jej ekvivalent v súbore /etc/default/elasticsearch, inak budú vaše zmeny potlačené hodnotami v tomto súbore.

Súbory služieb pre zvyšné uzly (v našom prípade súbory: elasticsearch_ingest.service, elasticsearch_data1.service, elasticsearch_data2.service a elasticsearch_data3.service) treba aktualizovať obdobným spôsobom.

Slúžba pre každú uzol taktiež potrebuje svoj vlastný elasticsearch.yaml súbor. Tento súbor by sa mal nachádzať na ceste nastavenej v premennej ES_PATH_CONF v súbore služby uvedenom vyššie (v prípade master uzla to je adresár /etc/master/).

Tu je príklad elasticsearch.yaml súboru nachádzajúcom sa v /etc/master/. Venujte pozornosť atribútom node.master, node.data, a node.ingest, tieto musia byť nastavené podľa toho, akú rolu má nastavený daný uzol a sú rozdielne pre uzly odlišného druhu.

# ---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
cluster.name: elastic
# ------------------------------------ Node ------------------------------------
# Use a descriptive name for the node:
node.name: master
# Add custom attributes to the node:
node.master: true
node.data: false
node.ingest: false
node.max_local_storage_nodes: 5
# ----------------------------------- Paths ------------------------------------
# Path to directory where to store the data (separate multiple locations by comma):
path.data: /data/elasticsearch/data_master
# Path to log files:
path.logs: /var/log/elasticsearch/master
# ----------------------------------- Memory -----------------------------------
# Lock the memory on startup:
bootstrap.memory_lock: true
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.

Každý uzol taktiež používa odlišný pár HTTP a TCP portov špecifikovaných atribútmi http.port a transport.tcp.port.

# ---------------------------------- Network -----------------------------------
# Set the bind address to a specific IP (IPv4 or IPv6):
network.host: 192.168.1.1
# Set a custom port for HTTP:
http.port: 9200
transport.tcp.port: 9300

Master uzol musí byť schopný objaviť ostatné uzly v clusteri, preto atrubút discovery.zen.ping.unicast.hosts obsahuje zoznam IP adries a transportných portov všetkých ostatných uzlov. Na uzloch iných ako master bude obsahovať len IP adresu a transportný port mastera [“192.168.1.1:9300”]:

# --------------------------------- Discovery ----------------------------------
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
discovery.zen.ping.unicast.hosts: ["192.168.1.1:9301","192.168.1.1:9302","192.168.1.1:9303","192.168.1.1:9304"]

Teraz by sme už mali byť schopní spustiť náš Elasticsearch cluster:

sudo systemctl stop elasticsearch_master
sudo systemctl stop elasticsearch_ingest
sudo systemctl stop elasticsearch_data1
sudo systemctl stop elasticsearch_data2
sudo systemctl stop elasticsearch_data3
Rate this post

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.