131 lines
3.3 KiB
Bash
Executable File
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 ==="
|