[SOLVED] Apache повесить на Failover IP, насколько это нормально?

Здравствуйте.

Есть два сервера. На обоих apache, MySQL, memcache и еще немного. Оба сервера настроены таким образом, что один из них продакшен, другой бэкап. Исходный код WEB сервиса идентичен (кроме настроек подключений), настроена репликация. Но он слабее в раза так 2 чем основной.

В DNS изначально прописан маленький TTL (3600) и указан IP адрес продакшен сервера. Если я укажу в hosts IP адрес бэкапа и зайду на него, то сам WEB сервис будет работать корректно.

Изначально была задумка, в случае необходимости переключения на бэкап с продакшена или в случае аварии на нем (тьфу тьфу тьфу ))) у меня прописаны N баш скриптов, которые я запускаю и тем самым переключаю работу на резервный. Далее я меняю DNS запись и простой будет не такой уж большой. Кол-во запросов в день 250-400к. В основном на рабочее время приходит все с 7 до 22.

Но как то недавно в Интернете на форуме наткнулся на обсуждение подобной ситуации. Один из пользователей написал про возможность использования Failover IP. Сервера на хетзнере, там такая услуга есть. Важно, что я могу менять по API запросу какому из серверов этот ип адрес назначать. Я подключил один ип адрес, включил на резервном сервере его таким образом:
config_eth0="XXX.XXX.XXX.XXX/26 YYY.YYY.YYY.YYY/32"

где XXX.XXX.XXX.XXX - осноной ип адрес, YYY.YYY.YYY.YYY - failover

Прописал в apache настройки, создал временную директорию, завел временный поддомен и указал IP адрес failover у него. Все заработало.

Вопрос буде такой, насколько это нормально вешать продакшен WEB ресурс, который принимает по 250-400к запросов в день на Failover IP. Или это ненужные костыли? и стабильность может потеряться таким образом?

Как вариант, если я правильно понимаю, и он правильнее.. это взять 3ий сервер, на нем запустить ngnix и делать балансировку именно на нём. В случае недоступности 1 сервера, то отправлять на 2ой. Но это в любом случае доп. затраты, силы (никогда не работал с ngnix за все время своё) чтобы разобраться и т.п. А тут наткнулся на такой вариант, то вот решил спросить.

Буду благодарен, если выскажите своё мнение. Спасибо.

Никакой это не failover! :)

На самом деле никакой мистики тут нет, и failover адрес на самом деле это просто alias или multihoming. Чтобы все это реально заработало извне, надо еще помудрить с маршрутизацией и т.д.
Кстати, в качестве балансера может и Апач быть, но на твои задачи доп. коробка - явный перебор, да и что будет, если она откажет?!.. ;)
Тебе надо что-то попроще, типа этого, только не рекомендую сразу делать свой ебилд. как они рекомендуют... начни со стандартного из репы.

спасибо.. надеюсь на LVEE получится выбраться, поблагодарить

Если Apache будет стабильно работать на этом ип адресе, то меня это в принципе устроит.
На данный момент я пробовал прописать его в httpd.conf и в vhost на резервной машине и все у меня работает. где может быть подводный камень в маршрутизации?.

Между серверами OpenVPN. Все службы nodejs и apache+php подключаются к MySQL, memcache, memcacheq по IP адресу vpn. Я написал bash скрипты, которые:
- сначала все аккуратно останавливают;
- затем переписывают конфиги подключений к MySQL, memcache, memcacheq и т.п.;
- затем сохраняют информацию по мастер логу с резервного, и меняет мастер и слейв местами;
- ну и стартуют все заново.

В этом случае я бы встроил бы bash скрипт для API команды в хетзнер перед стартом всех служб, чтобы этот псевдо FailoverIP адрес кинуть на другой сервер + правку конфига апач.

Так не получится? Или замылился глаз у меня и не видит чего то?

Пробуй! :)У тебя сервер

Пробуй! :)

У тебя сервер свободен с 22 до 7 - вот и дерзай!.. ;)

А свое мнение и решение я уже озвучил. Делать/анализировать за тебя как-то не хочется...

спб

ну он относительно свободен )) за ночь прилетает плюс минус 30к запросов.
спасибо за мнение, оно важное для меня... попробую проверить сегодня ночью, как сработает.. отпишусь.
ну и надо будет найти время почитать про Corosync

На виртуалке поиграйся.

beba написал(а):
ну он относительно свободен...

На виртуалках поиграйся.

спасибо, считаю вопрос закрытым

Наконец то добрался до этой задачи и закончил вопрос.

Все получилось очень даже неплохо.

WEB-платформа работает на failover ип адресе, который дал Hetzner. В DNS прописан он же.
Подключение к БД, к memcache, к другим сервисам идет по OpenVPN ип адресу.
OpenVPN между серверами по внешним ип адресам.

В результате, когда падает сервер основной я через bash скрипт:
1) Останавливаю все сервисы платформы;
2) Устанавливаю Failover ип адрес на другой сервер;
3) Меняю настойки WEB-платформы, фоновых сервисов платформы;
4) Запускаю всё

Время простоя после обнаружения проблемы 1-2 минуты. Что для сервиса, очень важно.

Всем удачи в решениях вопроса. SysA отдельное спасибо и хорошего дня.

p.s. На LVEE опять не доехал, дети заболели и сорвалось в последний момент. Буду в Минске как нибудь, с удовольствием угостил бы тебя пивом.. если будет желание у тебя конечно.

На два хоста OpenVPN не

На два хоста OpenVPN не сложно поднять, но лучше использовать для внутренней связи бесплатную фичу Hetzner vSwitch

у нас еще два сервера есть в

у нас еще два сервера есть в РБ.. я работаю тоже только через OpenVPN соединение с серверами.
OpenVPN не сложно развернуть, поэтому и использую... единственное с гаджетов не получалось пока зайти по OpenVPN. Но не заморачивался пока. Все же работа с серверами это больше хобби.

Рад, что помог. Все бы так

Рад, что помог. Все бы так адекватно понимали помощь! :)

Но ты сделал не до конца - я имел ввиду и привел пример для автоматического переключения, тогда это было бы не 2мин, а 2сек! Можно и меньше, но выше вероятность "дребезга". Непонятно зачем ты рестартуешь процессы (т.е. понятно почему, но не понятно зачем ты так делаешь). По идее процессы должны привязываться к локальным адресам, а внешние запросы переадресуются/маскируются. Это я и имел ввиду "помудрить с маршрутизацией".

Для справки: при применении балансировщика время переключение вообще нулевое - просто следующий/повторный запрос идет на живой сервер. Но там все сложнее...

Кстати, на LVEE я тоже в итоге не поехал, дела заели... но с чего ты решил, что я из Минска?!.. ;) Я просто думал, что мы там сможем пересечься.

> Непонятно зачем ты

> Непонятно зачем ты рестартуешь процессы (т.е. понятно почему, но не понятно зачем ты так делаешь). По идее процессы должны привязываться к локальным адресам, а внешние запросы переадресуются/маскируются. Это я и имел ввиду "помудрить с маршрутизацией".
думаю тут накладываются ограничения в ресурсах и особенностях построения системы. У меня используется и веб-сервер, и nodejs, и memcacheq, и MySQL, и memcachedb, и OpenVPN и очень много но.
С удовольствием обсудил бы эти моменты, т.к. моего опыта именно в сфере администрирования очевидно не хватает для правильной организации.

> Для справки: при применении балансировщика время переключение вообще нулевое - просто следующий/повторный запрос идет на живой сервер. Но там все сложнее...
да, планировал почитать в эту сторону.. но со временем пока беда ((

> но с чего ты решил, что я из Минска?!.. ;) Я просто думал, что мы там сможем пересечься.
даже не знаю, чего я так решил.. Сам с Гродно. Если будешь рядом с Гродно, пиши, встречу, накормлю.. ))) ну или в Минске может будешь как нибудь проездом, напиши.. мне надо будет попасть до НГ, то я пока не рвусь... может получится совместить..
Еще раз спасибо. Хорошего дня.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".