This repository has been archived on 2026-07-05. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
compose-files/scripts/network/mtu_phase2.sh
T

49 lines
1.7 KiB
Bash

#!/bin/bash
# Phase 2 — Recreate overlay networks + redeploy stacks
# Only runs on whichever node holds swarm leadership
# Must wait for all 3 nodes to complete phase1 first
LOG=/volume1/docker/mtu_migration/phase2.log
exec >> "$LOG" 2>&1
echo "[$(date)] Phase2 starting — waiting for all nodes phase1.done"
TIMEOUT=600
ELAPSED=0
while true; do
ALL_DONE=true
for node in docker-2 docker-3; do
[ ! -f "/volume1/docker/mtu_migration/${node}_phase1.done" ] && ALL_DONE=false
done
$ALL_DONE && break
sleep 5; ELAPSED=$((ELAPSED+5))
if [ "$ELAPSED" -ge "$TIMEOUT" ]; then
echo "[$(date)] TIMEOUT waiting for phase1 — aborting phase2"
exit 1
fi
done
echo "[$(date)] All phase1 done files present — checking swarm quorum"
SWARM_READY=false
for i in $(seq 1 24); do
STATUS=$(docker node ls 2>/dev/null | grep -c "Ready")
echo "[$(date)] Swarm ready nodes: $STATUS"
[ "$STATUS" -ge 2 ] && SWARM_READY=true && break
sleep 10
done
if ! $SWARM_READY; then
echo "[$(date)] Swarm not ready after 4min — aborting phase2"
exit 1
fi
echo "[$(date)] Swarm healthy — redeploying stacks"
CD=/volume1/docker/compose-files
for stack in traefik auth postgresql; do
f="$CD/${stack}.yaml"
[ -f "$f" ] || { echo "[$(date)] WARN: $f not found, skipping"; continue; }
echo "[$(date)] Redeploying stack: $stack"
docker stack deploy -c "$f" "$stack" 2>&1
echo "[$(date)] $stack deploy exit: $?"
sleep 5
done
echo "[$(date)] Verifying overlay MTUs:"
docker network ls --filter driver=overlay -q | \
xargs docker network inspect --format '{{.Name}} {{json .Options}}' 2>/dev/null
echo "[$(date)] Phase2 COMPLETE"
touch /volume1/docker/mtu_migration/phase2.done