This is the process for in-place upgrades of Elasticsearch (ES), using an existing Search feed and index data.
...
On each node in an Elasticsearch cluster, follow this process and run the files from the Swarm download bundle:
...
Before upgrading, query the Elasticsearch cluster for the list of nodes.
Code Block language bash curl -i http://ELASTICSEARCH:9200/_cat/nodes
Note which node is starred and that is the Elasticsearch master node which is recommended to upgrade last to avoid problems electing a new one.
Back up the current configuration with any /etc/elasticsearch/Backup the existing
elasticsearch.yml
customizations such asnode.attr.rack
and run , so a record of any customizations made exists. Run/root/dist/indexer-grab.sh
and gather stats for support.Start by installing the latest Swarm Search, which is the
caringo-elasticsearch-search
RPM when upgrading Elasticsearch 6.Code Block language bash yum install caringo-elasticsearch-search-VERSION.noarch.rpm
Info title Tip The error: "
ES_PATH_CONF must be set to the configuration path chown: cannot access '/etc/elasticsearch/elasticsearch.keystore': No such file or directory
" displays if Elasticsearch 7 RPM is inadvertently installed. Install caringo-elasticsearch-search-7.0.0 RPM to proceed.Run the script that installs and configures the upgrade.
The script detects Elasticsearch 6 is installed anddiscovery.zen.unicast.hosts
is configured, so it runs as with--upgrade
instead of configuring a new cluster.Code Block language bash /usr/share/caringo-elasticsearch-search/bin/configure_elasticsearch_with_swarm_search.py
Compare the backup file to the newly created
elasticsearch.yml
and add back any customizations needed, such asnetwork.host
(which defaults to_site_
, all interfaces)node.attr.rack
,systemctl restart elasticsearch
if the configuration was modified.
Note
thread_pool.write.queue_size: 1000
is no longer required.
Verify all nodes are accounted for, all shards are assigned, and the status is green.
Code Block language bash curl -i 'http://ELASTICSEARCH:9200/_cat/health?v'
The script updates the configuration files and restarts the service if Elasticsearch 7 is already installed.
...
It fixes
/etc/sysconfig/elasticsearch
to the correct ES6 version (the same as ES7).It increases the
systemd
timeout in/etc/systemd/system/elasticsearch.service.d/override.conf
(see github.com/elastic/elasticsearch/issues/60140)A prompt to continue with the yum upgrade to 7.5.2 appears after refreshing the config files for Elasticsearch 6.
It disables shard allocation and does a POST synced-flush for safer rolling upgrades.
Info title Important Disabling shard allocation or sync-flush can fail to contact the node, but do not proceed to upgrade the next node until the cluster health is green again.
It uninstalls the Prometheus Exporter plugin if it exists.
It shells out to yum to install the Elasticsearch 7 RPM in the current directory or from artifacts.elastic.co, if unavailable.
Warning Internet access is expected for the upgrade. Verify the Elasticsearch RPM is in the current directory if access is unavailable.
It updates elasticsearch.yml for version 7 compatibility, including
discovery.initial_master_nodes
instead ofdiscovery.zen.unicast.hosts
, andjvm.options
.It starts the upgraded Elasticsearch 7 and waits for it to be ready.
The cluster re-enables shard allocation and prompts to repeat these two steps on the next node if the cluster health is green or yellow.