...
Файл /home/wnam/check_wnam.sh:
#!/bin/bash
# Check if WNAM wnam is running, return 1 if not.
# Used by keepalived to initiate a failover in case WNAM is down
WNAM_STATUS=$(curl -s http://127.0.0.1:8080/api/statistic?json)
if [[ "$WNAM_STATUS" == *"statistic"* ]]
then
exit 0
elif [[ "$WNAM_STATUS" == *API_DISABLED* ]]
then
MONGO_ADDRESS=$(/bin/ps ax | grep -w wnam.war | grep -w java)if [ "$WNAM_STATUS" != "" ]
then
exit 0
else
logger "WNAM is NOT running. Setting keepalived state to FAULT."
exit cat /home/wnam/application.yaml | grep mongodb:// | grep -Ev '^#' | awk -F "/" '{print $3}')
MONGO_PORT=$(echo $MONGO_ADDRESS | awk -F ":" '{print $2}')
MONGO_ADDRESS=$(echo $MONGO_ADDRESS | awk -F ":" '{print $1}')
MONGO_STATUS=$(echo "" > /dev/tcp/$MONGO_ADDRESS/$MONGO_PORT && echo "Opened" || echo "Closed")
if [[ "$MONGO_STATUS" == "Opened" ]]
then
exit 0
else
logger "Mongo is NOT running. Setting keepalived state to FAULT."
exit 1
fi
else
logger "WNAM is NOT running. Setting keepalived state to FAULT."
exit 1
fi
Файл /home/wnam/keepalived.state.sh:
#!/bin/bashTYPE=$1
NAME=$2
STATE=$3echo $STATE > /var/run/keepalived.stateif [ $STATE == "MASTER" ]; then
# /sbin/ip route delete NET/MASK #Эта строка нужна если контроллер WNAM и NAS находятся в одной подсети. Здесь указать нужную подсеть.
/sbin/ip route add NAS_IP dev IF src CLUSTER_IP #если WNAM и NAS в одной подсети
/sbin/ip route add NAS_IP via GW src CLUSTER_IP #если WNAM и NAS в разных подсетях
fi
Вместо NAS_IP подставьте ip адрес вашего NAS, вместо IF имя интерфейса, на котором висит кластерный адрес, CLUSTER_IP кластерный ip адрес, GW - ip адрес шлюза до нужного хоста или подсети.
Таких записей может быть несколько. В таком случае добавлять их перед fi.
...