Skip to content

Запуск и удержание кластера

Запуск и удержание кластера published on Комментариев к записи Запуск и удержание кластера нет

Считается, что после установления соединения по VPN соответствующие демоны, например, ipsec, сами обрабатывают исключительные ситуации типа внезапного пропадания коннекта и восстанавливают соединение при необходимости.

На практике же картина не столь радужна и приходится применять “ручные” средства контроля связности VPN и её восстановления. Одно из возможных решений описано ниже.


Скрипт /usr/local/sbin/check_vpn:

#!/bin/bash

# проверяем, не запущен ли другой экземпляр скрипта…
[ -z $CRONTAB ] && echo “Проверка на дубль”
[[ “2″ -ne `ps aux | grep -c check_vpn` ]] && exit

# проверяем наличие интернета — пытаемся получить страницу ya.ru
[ -z $CRONTAB ] && echo “Проверка интернета”
if [[ ‘0′ -eq `wget –quiet –timeout=10 –tries=2 -O — ya.ru| grep -c ‘http://www.yandex.ru/yandsearch’` ]]; then
exit
fi

# проверяем наличие vpn — пытаемся пинговать vpn-овский ip
[ -z $CRONTAB ] && echo “Проверка vpn”
if [[ ‘0′ -ne `ping -c 10 192.168.99.99 | grep -c ttl` ]]; then
exit
fi

# насколько можно судить, в этот момент vpn отсутствует

echo “VPN отсутствует! Пытаюсь поднять…”

source /usr/local/sbin/restart_vpn

…проверка [ -z $CRONTAB ] в скрипте служит для вывода сообщений при
запуске из комстроки.

Скрипт /usr/local/sbin/restart_vpn:

#!/bin/bash

# полный останов всех служб vpn
/usr/sbin/vserver mainvshost stop
/etc/init.d/ipsec stop
/etc/init.d/ipsec zap # бывает, что “залипает” в started статусе…
/sbin/ifconfig ipsec0 down
/etc/init.d/heartbeat stop
/etc/init.d/drbd stop
sleep 30 # для подстраховки подождём…

#начинаем поднимать обратно…

# после запуска ipsec таймаут обязателен, иначе drbd неправильно стартует
/etc/init.d/ipsec start
sleep 40

# этот роутинг нужен только у меня в сети, иначе местные служебные сервера не видны
/sbin/route add -net 192.168.4.0 netmask 255.255.255.240 gw 192.168.5.7

/etc/init.d/drbd start
sleep 10
/etc/init.d/heartbeat start

Выдержка из crontab -l :

CRONTAB=1

*/1 * * * * /usr/local/sbin/check_vpn

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Primary Sidebar