Cluster Upgrade

Warning

Rolling upgrades are not supported when upgrading to version 8.x. An upgraded node will not join an existing 7.x cluster. For upgrades to 8.x, all nodes must be stopped and upgraded together. See Upgrade to Version 8.0.0 for the full procedure.

This section describes how to upgrade a multi-node cluster while maintaining availability during upgrades within the same major version (e.g., 7.8 to 7.9). For single-node installations, use the standard procedure described in Version-Specific Upgrades.

In a multi-node deployment, each node is upgraded individually using the same ./install.sh -u script. The API commands in this procedure (shard allocation control, flush) prevent unnecessary shard rebalancing while nodes are being restarted.

Prerequisites

  • Cluster health is green

  • A current backup exists (see Backup and Recovery)

  • All nodes are running the same Energy Logserver version

Verify cluster health before proceeding:

curl -u $USER:$PASSWORD "http://localhost:9200/_cluster/health?pretty"

Procedure

1. Disable shard reallocation

Run this once, from any node, before starting the upgrade process:

curl -u $USER:$PASSWORD "localhost:9200/_cluster/settings" \
  -H "Content-Type: application/json" -d '{
  "persistent": {
    "cluster.routing.allocation.enable": "primaries"
  }
}'

curl -u $USER:$PASSWORD "localhost:9200/_flush?pretty"

2. Upgrade each node

Repeat the following steps for each node in the cluster.

a) Stop all services on the node:

systemctl stop logserver logserver-gui logserver-probe alert cerebro \
  e-doc skimmer intelligence intelligence-scheduler license-service

b) Run the upgrade:

cd install
./install.sh -u

When the script asks whether to restart services, answer no — services will be started manually in the correct order.

c) Start the database service first and wait for the node to rejoin the cluster:

systemctl start logserver

Wait until the node appears in the cluster:

curl -u $USER:$PASSWORD "localhost:9200/_cat/nodes?v"

d) Wait for cluster health to reach at least yellow before moving to the next node:

curl -u $USER:$PASSWORD "http://localhost:9200/_cluster/health?pretty"

3. Re-enable shard allocation

After all nodes have been upgraded:

curl -u $USER:$PASSWORD -X PUT \
  "http://localhost:9200/_cluster/settings?pretty" \
  -H 'Content-Type: application/json' -d '{
  "persistent": {
    "cluster.routing.allocation.enable": "all"
  }
}'

4. Start remaining services

On each node that runs client services, start services in the following order — the database service (logserver) must be running and healthy before starting the remaining services:

systemctl start logserver-gui alert cerebro e-doc skimmer \
  intelligence intelligence-scheduler license-service logserver-probe

5. Verify

curl -u $USER:$PASSWORD "http://localhost:9200/_cluster/health?pretty"
curl -u $USER:$PASSWORD "localhost:9200/_cat/nodes?v"

After the upgrade, follow any version-specific post-upgrade steps described in Version-Specific Upgrades.