OpenWRT failover или домашняя высокая доступность.

Высокая доступность?!! Дома?!! Да, заголовок звучит странно, но если Вы поддерживаете дома какой-то сервис, то возможно подобные мысли уже посещали и Вас. Давайте на минутку представим себе этакого крутого гика, который горит желанием хостить сайт у себя дома и взглянем на мир его глазами…

Сайт-заглушка поможет обеспечить высокую доступность

Размышления, доступность — зачем?

Конечно, если у нас есть дома публичный сайт, доступный через сеть Интернет, то нам просто необходимо иметь хорошую доступность и максимальный аптайм для него. Так что, нам ни в коем случае нельзя обижать поисковых ботов и допускать бесследную пропажу нашего сайта из Сети. Но давайте сразу договоримся, что денег на покупку всяких вкусных «плюшек» у нас нет и надо все реализовать своими силами. Наш бюджет, в лучшем случае, несколько сотен рублей в месяц. Кроме того, мы же живем не одни и кто-то еще периодически прибирает наш творческий порядок, попутно разбирая завалы из жестких дисков, контроллеров, старой денди и обязательно задевая пару из тысяч разбросанных по полу проводов. Такой подход тоже оказывает негативное влияние на работоспособность сайта. А ведь и мы иногда отключаем свои компьютеры, чтоб покопаться в них и быть может пропылесосить.

Планируем нашу высокую доступность

Итак, в простейшем варианте, наша цель заключается в обеспечении максимально высокого аптайма сайта в домашних условиях. Для начала мы отбросим все решения с резервированием сайта в пределах нашего дома, все-таки у нас не датацентр Tier 3 :). А значит нам надо поддерживать копию нашего сайта где то в «Интернетах». Тут нам на помощь может прийти, к примеру, дешевый хостинг или VPS. Также, предполагается что Интернет у нас дома раздается роутером, прошитым OpenWRT или же другой подобной прошивкой.

И реализуем доступность

Первым делом, нам необходимо разместить копию сайта на хостинге. Конечно еще будет необходимо настроить синхронизацию между Вашим домашним сайтом и его копией, но так как этот процесс сильно зависит от архитектуры сайта, то я пожалуй пропущу размышления о том, как это можно сделать и, в простейшем случае, порекомендую просто делать не копию, а сайт-заглушку, т.е. просто одну страничку со словами о нахождении сайта на техобслуживании и HTTP кодом 503.

Во вторых, реализуем механизм переключения на копию сайта в случае недоступности оригинала. Идея будет такая — через заданные промежутки времени мы проверяем доступность нашего сайта и в случае падения переводим все запросы к нему на сайт-копию. Для этого мы зайдем на роутер по ssh (или telnet) и создадим следующий скрипт:

 Теперь, все что осталось, это добавить запуск этого скрипта в cron, выполняем команду crontab -e  и добавляем следующую строку:

Вот и все! Спасибо за внимание! Успехов в достижении высокой доступности!

Оставить ответ