Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- 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
61 lines
2.5 KiB
Bash
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 ""
|