Files
proxmox/scripts/maintenance/proxmox-load-balance-suggest.sh
defiQUG e4c9dda0fd
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: update submodule references and documentation
- Marked submodules ai-mcp-pmm-controller, explorer-monorepo, and smom-dbis-138 as dirty to reflect recent changes.
- Updated documentation to clarify operator script usage, including dotenv loading and task execution instructions.
- Enhanced the README and various index files to provide clearer navigation and task completion guidance.

Made-with: Cursor
2026-03-04 02:03:08 -08:00

61 lines
2.5 KiB
Bash

#!/usr/bin/env bash
# Suggest load-balancing migrations: show current load and example commands to move
# containers from r630-01 to r630-02 (or ml110). Run from project root.
#
# Usage: bash scripts/maintenance/proxmox-load-balance-suggest.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
[[ -f "${PROJECT_ROOT}/config/ip-addresses.conf" ]] && source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
R630_01="${PROXMOX_HOST_R630_01:-192.168.11.11}"
R630_02="${PROXMOX_HOST_R630_02:-192.168.11.12}"
ML110="${PROXMOX_HOST_ML110:-192.168.11.10}"
SSH_OPTS="-o ConnectTimeout=8 -o StrictHostKeyChecking=no"
# Candidates safe to suggest (r630-01 -> r630-02). Excludes NPMplus main, core RPC, validators, sentries, DBIS core.
CANDIDATES="3500 3501 7804 8640 8642 10232 10235 10236"
echo ""
echo "=== Proxmox load balance — suggestion ==="
echo ""
# Current load and counts
for entry in "r630-01:$R630_01" "r630-02:$R630_02" "ml110:$ML110"; do
IFS=: read -r name ip <<< "$entry"
out=$(ssh $SSH_OPTS root@"$ip" "
echo \"LOAD|\$(cat /proc/loadavg 2>/dev/null | cut -d' ' -f1-3)\"
echo \"LXC|\$(pct list 2>/dev/null | tail -n +2 | wc -l)\"
" 2>/dev/null) || true
load=$(echo "$out" | awk -F'|' '$1=="LOAD"{print $2}')
lxc=$(echo "$out" | awk -F'|' '$1=="LXC"{print $2}')
printf " %-10s %s LXC: %s\n" "$name" "load: $load" "$lxc"
done
echo ""
echo "--- Suggested migrations (r630-01 → r630-02) ---"
echo "Run from project root. Use --dry-run first. Target storage on r630-02: thin1, thin2, thin5, thin6."
echo ""
for vmid in $CANDIDATES; do
# Check if CT exists on r630-01
on_src=$(ssh $SSH_OPTS root@"$R630_01" "pct list 2>/dev/null | awk '\$1==$vmid{print \$1}'" 2>/dev/null) || true
if [[ -n "$on_src" ]]; then
name=$(ssh $SSH_OPTS root@"$R630_01" "pct config $vmid 2>/dev/null | grep -E '^hostname:|^name:' | head -1 | sed 's/^[^:]*:[[:space:]]*//'" 2>/dev/null) || echo "CT-$vmid"
echo " VMID $vmid ($name):"
echo " ./scripts/maintenance/migrate-ct-r630-01-to-r630-02.sh $vmid thin1 --dry-run"
echo " ./scripts/maintenance/migrate-ct-r630-01-to-r630-02.sh $vmid thin1 --destroy-source"
echo ""
fi
done
echo "--- Cluster check (optional) ---"
echo "If nodes are in the same cluster, you can try live migrate from r630-01:"
echo " ssh root@$R630_01 \"pvecm status\""
echo " ssh root@$R630_01 \"pct migrate <VMID> r630-02 --storage thin1 --restart\""
echo ""
echo "See: docs/04-configuration/PROXMOX_LOAD_BALANCING_RUNBOOK.md"
echo ""