initial working
This commit is contained in:
100
scripts/test-failover.sh
Executable file
100
scripts/test-failover.sh
Executable file
@@ -0,0 +1,100 @@
|
||||
#!/bin/bash
|
||||
# test-failover.sh
|
||||
# Script per testare il failover automatico
|
||||
|
||||
VIP="192.168.1.210"
|
||||
VM1_IP="192.168.1.201"
|
||||
VM2_IP="192.168.1.202"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo "=== Test Failover HA ==="
|
||||
echo ""
|
||||
|
||||
# Determina chi ha il VIP
|
||||
if ssh root@$VM1_IP "ip addr show | grep -q $VIP" &>/dev/null; then
|
||||
MASTER_VM=$VM1_IP
|
||||
MASTER_NAME="VM1"
|
||||
BACKUP_VM=$VM2_IP
|
||||
BACKUP_NAME="VM2"
|
||||
elif ssh root@$VM2_IP "ip addr show | grep -q $VIP" &>/dev/null; then
|
||||
MASTER_VM=$VM2_IP
|
||||
MASTER_NAME="VM2"
|
||||
BACKUP_VM=$VM1_IP
|
||||
BACKUP_NAME="VM1"
|
||||
else
|
||||
echo -e "${RED}Errore: nessuna VM ha il VIP!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}$MASTER_NAME ($MASTER_VM) è attualmente MASTER${NC}"
|
||||
echo -e "${YELLOW}$BACKUP_NAME ($BACKUP_VM) è attualmente BACKUP${NC}"
|
||||
echo ""
|
||||
|
||||
read -p "Vuoi simulare un failure del MASTER? (y/N) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Test annullato"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "1. Stato iniziale:"
|
||||
echo " VIP su: $MASTER_NAME"
|
||||
ping -c 1 -W 2 $VIP &>/dev/null && echo -e " ${GREEN}VIP risponde al ping${NC}" || echo -e " ${RED}VIP non risponde${NC}"
|
||||
|
||||
echo ""
|
||||
echo "2. Simulo failure di $MASTER_NAME (stop keepalived)..."
|
||||
ssh root@$MASTER_VM "docker compose -f /opt/myapp/docker-compose.yml stop keepalived"
|
||||
|
||||
echo ""
|
||||
echo "3. Attendo failover (15 secondi)..."
|
||||
sleep 15
|
||||
|
||||
echo ""
|
||||
echo "4. Verifico nuovo MASTER:"
|
||||
if ssh root@$BACKUP_VM "ip addr show | grep -q $VIP" &>/dev/null; then
|
||||
echo -e " ${GREEN}✓ $BACKUP_NAME ha preso il VIP (FAILOVER RIUSCITO!)${NC}"
|
||||
else
|
||||
echo -e " ${RED}✗ $BACKUP_NAME non ha il VIP (FAILOVER FALLITO!)${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "5. Test connettività VIP:"
|
||||
if ping -c 1 -W 2 $VIP &>/dev/null; then
|
||||
echo -e " ${GREEN}✓ VIP risponde al ping${NC}"
|
||||
else
|
||||
echo -e " ${RED}✗ VIP non risponde${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "6. Test servizi FTP:"
|
||||
if timeout 5 bash -c "echo quit | nc $VIP 21" &>/dev/null; then
|
||||
echo -e " ${GREEN}✓ FTP risponde${NC}"
|
||||
else
|
||||
echo -e " ${YELLOW}⚠ FTP non risponde (potrebbe essere normale)${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
read -p "Vuoi ripristinare il MASTER originale? (y/N) " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo ""
|
||||
echo "7. Ripristino $MASTER_NAME..."
|
||||
ssh root@$MASTER_VM "docker compose -f /opt/myapp/docker-compose.yml start keepalived"
|
||||
|
||||
echo " Attendo 15 secondi..."
|
||||
sleep 15
|
||||
|
||||
if ssh root@$MASTER_VM "ip addr show | grep -q $VIP" &>/dev/null; then
|
||||
echo -e " ${GREEN}✓ $MASTER_NAME ha ripreso il VIP${NC}"
|
||||
else
|
||||
echo -e " ${YELLOW}⚠ $BACKUP_NAME ha ancora il VIP (normale)${NC}"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Test completato ==="
|
||||
Reference in New Issue
Block a user