Один IP на два сервера
Идея и начало положено отсюда
https://toster.ru/q/2549
Имеем два сервера в общей подсети. Задача - заданный IP висит на основном сервере, при падении IP вешается на второй сервер. При поднятии первого IP со второго убирается.
Скрипт в дальшейшем будет использоваться для создания отказоустойчевого сервера
192.168.10.100 - первый сервер (Master)
192.168.10.101 - второй сервер (Slave)
192.168.10.105 - IP aliase, по этому IP будут доступны сервера в зависимости от доступности.
192.168.10.1 - общий шлюз
eth0 - интерфейс на обоих машинах, на который будет вешаться aliase
sleep_Time - интервал проверки master-сервера
На первом (Master):
На втором (Slave):
Создаем скипт
mkdir /opt/sustainability
nano /opt/sustainability/sustainability.sh
#!/bin/bash
MASTERHOST="192.168.10.100"
IP1="192.168.10.105"
MASK1="255.255.255.0"
INERFACE1="eth0:1"
GATE1="192.168.10.1"
sleep_Time=10
sleep 10
Master_enable () {
logger "setupip :: Host $MASTERHOST is UP at $(date); Shutting down $IP1"
ifconfig $INERFACE1 down
}
Master_disable () {
#if IP is not set - do add it, send ARP cache clear
logger "setupip :: Host $MASTERHOST is down at $(date); Binding up $IP1"
ifconfig $INERFACE1 $IP1 netmask $MASK1
arping -c 1 -s $IP1 $GATE1
}
while true; do
count=$(ping -c 1 $MASTERHOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
localip=$(ifconfig | grep "$IP1 " | wc -l)
if [ $count -eq 0 ]; then
if [ $localip -eq 0 ]; then
Master_disable
fi
else
if [ $localip -gt 0 ]; then
Master_enable
fi
fi
sleep $sleep_Time
done
https://toster.ru/q/2549
Имеем два сервера в общей подсети. Задача - заданный IP висит на основном сервере, при падении IP вешается на второй сервер. При поднятии первого IP со второго убирается.
Скрипт в дальшейшем будет использоваться для создания отказоустойчевого сервера
192.168.10.100 - первый сервер (Master)
192.168.10.101 - второй сервер (Slave)
192.168.10.105 - IP aliase, по этому IP будут доступны сервера в зависимости от доступности.
192.168.10.1 - общий шлюз
eth0 - интерфейс на обоих машинах, на который будет вешаться aliase
sleep_Time - интервал проверки master-сервера
На первом (Master):
- ifconfig eth0:1 192.168.10.105 netmask 255.255.255.0
- arping -c 1 -s 192.168.10.105 192.168.10.1
На втором (Slave):
Создаем скипт
mkdir /opt/sustainability
nano /opt/sustainability/sustainability.sh
#!/bin/bash
MASTERHOST="192.168.10.100"
IP1="192.168.10.105"
MASK1="255.255.255.0"
INERFACE1="eth0:1"
GATE1="192.168.10.1"
sleep_Time=10
sleep 10
Master_enable () {
logger "setupip :: Host $MASTERHOST is UP at $(date); Shutting down $IP1"
ifconfig $INERFACE1 down
}
Master_disable () {
#if IP is not set - do add it, send ARP cache clear
logger "setupip :: Host $MASTERHOST is down at $(date); Binding up $IP1"
ifconfig $INERFACE1 $IP1 netmask $MASK1
arping -c 1 -s $IP1 $GATE1
}
while true; do
count=$(ping -c 1 $MASTERHOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
localip=$(ifconfig | grep "$IP1 " | wc -l)
if [ $count -eq 0 ]; then
if [ $localip -eq 0 ]; then
Master_disable
fi
else
if [ $localip -gt 0 ]; then
Master_enable
fi
fi
sleep $sleep_Time
done
Комментарии
Отправить комментарий