Rollback Procedures
When an upgrade encounters critical issues, a rollback to the previous version may be necessary. This section provides detailed procedures for safely reverting to a previous Energylogserver version.
### Rollback Procedures
### Preparation
1. Stop all services:
```bash
systemctl stop logserver logserver-gui logserver-probe alert license-service
Create snapshot:
curl -X PUT "localhost:9200/_snapshot/backup_repo/pre_upgrade_snapshot" -H 'Content-Type: application/json' -u $USER:$PASSWORD -d '
{
"include_global_state": true
Execution
Phase 1: Package Downgrade
yum downgrade energy-logserver-data-node-[PREVIOUS_VERSION] energy-logserver-client-node-[PREVIOUS_VERSION]
Phase 2: Service Restart
systemctl start logserver
until curl -u $USER:$PASSWORD "localhost:9200/_cluster/health" | grep -q '"status":"green"'; do sleep 10; done
systemctl start logserver-gui logserver-probe alert license-service
Phase 3: Data Restoration
If data loss occurred:
curl -X POST "localhost:9200/_snapshot/backup_repo/pre_upgrade_snapshot/_restore" -u $USER:$PASSWORD
Phase 4: Configuration Restoration
If configurations were altered:
if [ -d "/backup/pre-upgrade-$(date +%Y%m%d)" ]; then
BACKUP_DIR="/backup/pre-upgrade-$(date +%Y%m%d)"
cp $BACKUP_DIR/logserver/logserver.yml /etc/logserver/
cp $BACKUP_DIR/logserver/jvm.options /etc/logserver/
cp $BACKUP_DIR/logserver-gui/logserver-gui.yml /etc/logserver-gui/
cp -r $BACKUP_DIR/logserver-probe/conf.d/* /etc/logserver-probe/conf.d/
fi
Phase 5: Verification
System Health Check:
#!/bin/bash
echo "=== Post-Rollback Verification ==="
echo "Current Version:"
curl -u $USER:$PASSWORD "localhost:9200" | jq '.version.number'
services=("logserver" "logserver-gui" "logserver-probe" "alert" "license-service")
for service in "${services[@]}"; do
status=$(systemctl is-active $service)
echo "$service: $status"
done
echo "Index Count:"
curl -u $USER:$PASSWORD "localhost:9200/_cat/count?v"
echo "Recent Data:"
curl -u $USER:$PASSWORD "localhost:9200/*$(date +%Y.%m.%d)*/_count" | jq '.count'
echo "GUI Access Test:"
curl -I http://localhost:5601 | head -1
Performance Baseline:
time curl -u $USER:$PASSWORD "localhost:9200/_search?size=1000&q=*" > /dev/null
echo '{"test": "rollback verification", "timestamp": "'$(date -Iseconds)'"}' | \
curl -X POST "localhost:9200/rollback-test/_doc" -H 'Content-Type: application/json' -u $USER:$PASSWORD -d @-
curl -u $USER:$PASSWORD "localhost:9200/_nodes/stats/jvm" | jq '.nodes[].jvm.mem.heap_used_percent'