Files
proxmox-ha-setup/scripts/verify-cluster.sh
2025-10-31 21:00:14 +01:00

131 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# verify-cluster.sh
# Script per verificare lo stato del cluster
VIP="192.168.1.210"
VM1_IP="192.168.1.201"
VM2_IP="192.168.1.202"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
print_test() { echo -n " Testing $1... "; }
print_ok() { echo -e "${GREEN}OK${NC}"; }
print_fail() { echo -e "${RED}FAIL${NC}"; }
print_warn() { echo -e "${YELLOW}WARN${NC}"; }
echo "=== Verifica Cluster HA ==="
echo ""
# Test 1: Ping VM
echo "1. Network connectivity:"
print_test "VM1 ($VM1_IP)"
if ping -c 1 -W 2 $VM1_IP &>/dev/null; then print_ok; else print_fail; fi
print_test "VM2 ($VM2_IP)"
if ping -c 1 -W 2 $VM2_IP &>/dev/null; then print_ok; else print_fail; fi
print_test "VIP ($VIP)"
if ping -c 1 -W 2 $VIP &>/dev/null; then print_ok; else print_fail; fi
# Test 2: SSH
echo ""
echo "2. SSH connectivity:"
print_test "VM1 SSH"
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@$VM1_IP "echo ok" &>/dev/null; then
print_ok
else
print_fail
fi
print_test "VM2 SSH"
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@$VM2_IP "echo ok" &>/dev/null; then
print_ok
else
print_fail
fi
# Test 3: Docker
echo ""
echo "3. Docker status:"
print_test "VM1 Docker"
if ssh -o ConnectTimeout=5 root@$VM1_IP "docker ps" &>/dev/null; then
print_ok
else
print_fail
fi
print_test "VM2 Docker"
if ssh -o ConnectTimeout=5 root@$VM2_IP "docker ps" &>/dev/null; then
print_ok
else
print_fail
fi
# Test 4: Services
echo ""
echo "4. Services:"
check_service() {
local vm_ip=$1
local service=$2
if ssh -o ConnectTimeout=5 root@$vm_ip "docker ps | grep -q $service" &>/dev/null; then
return 0
else
return 1
fi
}
print_test "MySQL on VM1"
if check_service $VM1_IP mysql; then print_ok; else print_warn; fi
print_test "Redis Master on VM1"
if check_service $VM1_IP redis-master; then print_ok; else print_warn; fi
print_test "Redis Slave on VM2"
if check_service $VM2_IP redis-slave; then print_ok; else print_warn; fi
print_test "FTP Server 1"
if check_service $VM1_IP ftp-server-1; then print_ok; else print_warn; fi
print_test "FTP Server 2"
if check_service $VM2_IP ftp-server-2; then print_ok; else print_warn; fi
print_test "HAProxy on VM1"
if check_service $VM1_IP haproxy; then print_ok; else print_warn; fi
print_test "Keepalived on VM1"
if check_service $VM1_IP keepalived; then print_ok; else print_warn; fi
# Test 5: VIP ownership
echo ""
echo "5. Virtual IP ownership:"
if ssh -o ConnectTimeout=5 root@$VM1_IP "ip addr show | grep -q $VIP" &>/dev/null; then
echo -e " ${GREEN}VM1 is MASTER${NC} (has VIP)"
elif ssh -o ConnectTimeout=5 root@$VM2_IP "ip addr show | grep -q $VIP" &>/dev/null; then
echo -e " ${YELLOW}VM2 is MASTER${NC} (has VIP)"
else
echo -e " ${RED}No VM has VIP!${NC}"
fi
# Test 6: Service endpoints
echo ""
echo "6. Service endpoints:"
print_test "FTP port 21"
if nc -zv -w 2 $VIP 21 &>/dev/null; then print_ok; else print_fail; fi
print_test "HAProxy stats 8404"
if nc -zv -w 2 $VIP 8404 &>/dev/null; then print_ok; else print_fail; fi
print_test "MySQL port 3306"
if nc -zv -w 2 $VIP 3306 &>/dev/null; then print_ok; else print_fail; fi
print_test "Redis port 6379"
if nc -zv -w 2 $VIP 6379 &>/dev/null; then print_ok; else print_fail; fi
echo ""
echo "=== Verifica completata ==="