Небходимо реализовать переключалку на резервного провайдера в случае падения основного. Решил попробовать сделать на monit.
Провайдер 1 (prov1) - имеет внутреннюю локалку, ppp-сервак в этой локалке и может падать 2 способами:
- Падает линк локалки, т.е. не пингуется ни этот сервер, ни внешний мир.
- Падает что-то за серваком, т.е. сам сервер пингуется, а вот внешний мир - нет.
Провайдер 2 (prov2) - обычный юсб-свисток.
Собственно наваял вот такой конфиг:
#проверяем пинг до внутреннего сервака прова
#если его нет - переключаемся на свисток
check host l2tp.prov with address prov1.ip
if failed icmp type echo count 10 with timeout 10 seconds then exec "/etc/scripts/prov1_not_ping_go_whistle.sh"
#потом проверяем пинг до гугла, но только если сервер prov1 пинговался нормально
#если пинга до гугла нет, значит сервак prov1 доступен, но тупит, переключаемся на свисток
#если пинг есть - значит все хорошо, переключаемся на prov1
check host google.dns with address 8.8.8.8
if failed icmp type echo count 10 with timeout 10 seconds then exec "/etc/monit/prov1_ping_but_no_inet_go_whistle.sh"
else if succeeded then exec "/etc/monit/run_prov1.sh"
depends on l2tp.prov
Как я понял из документации, «depends on l2tp.prov» означает, что вторая проверка (check host google.dns) будет выполняться только в том случае, если первая увенчалась успехом. Однако понял я, судя по-всему, неправильно, т.к. они просто выполняются по очереди. Где я туплю?