#!/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 ==="