Cluster Upgrade
This section describes how to upgrade a multi-node cluster while maintaining availability. 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 Elasticsearch API commands in this procedure (shard allocation control, flush) are standard Elasticsearch cluster operations used to 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 logstash 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 logstash
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.