Мониторинг и подмена адреса www-сервера

yolki

Задача такая: Есть сервер с адресом A.
Нужно как-то исхитрится и сделать так, что если он вдруг упал - за него появлялся сервер B (по тому же адресу) с надписью типа "звиняйте, А не доступен".
Я смутно себе представляю, что возможно, нужно на B поставить апача и повозится с mod_proxy или другими модулями, но пусть отцы мне посоветуют что делать реально надо..
А - под Win2K. под чем B - не важно. могу для этих целей винду найти или юникс.
B находится с A в одной локальной сети, у А есть внешний IP.

krishtaf

mod_proxy поможет, если только на В будет внешний ip адрес и В не будет падать из-за питания. Соответственно для внешнего мира А будет виден через В.

family

Гы, failover-кластер на коленке

yolki

соответственно, в случае если B имеет внешний IP, серверу А уже не нужен внешний IP?

stm7884696

в общем случае - ты должен с сервера Б пинговать сервер А и как только пинги падают (причем пинги на тестовый сервер в инете не упали, иначе - вдруг просто линк упал) - лезть на dns сервер и править там адреса или ip...
т.е. под этот домен вместо ip A ставить ip B.
Как только сервак поднялся - лезть опять туда и опять править все назад.

Fragaria

хуйня, тогда уж проще портмаппинг настроить по тому же принципу, чем с DNS геморроиться.

stm7884696

я просто не в курсе насчет портмаппинга...

sergey_m

Вообще все предлагаемые решения работают таким образом, что если B упал, то сайт вообще не работает. Потому что одним из условий задачи является то, что на A винда, а получается, что на нём ничего нельзя делать.

stm7884696

получается, что если оба упали - то сайт не работает.
А в моем решении если Б упал - то сайт работает если А не упал.

krishtaf

твое решение - вообще хуйня, т.к.
 
лезть на dns сервер и править там адреса или ip...
т.е. под этот домен вместо ip A ставить ip B.
Как только сервак поднялся - лезть опять туда и опять править все назад.
на клиентах кешируются результаты днс запросов.
и не факт что удастся поиметь к авторитетному днс-серверу автоматический доступ

tokuchu

на клиентах кешируются результаты днс запросов
И не только на клиентах.

krishtaf

под клиентами также понимаются кеширующие рекурсивные днс-сервера

Marinavo_0507

Не понял, почему на винде ничего нельзя делать?
Наверняка какие-то средства failover есть там.

sergey_m

Я не знаю ни одного. Даже если есть, то они совместимы только с самим собой.

Marinavo_0507

OSPF, говорят, есть.
Через него можно сделать, если ещё и роутер(ы) есть.

krishtaf

можно как вариант isa сервер поднять

stm7884696

твое решение - вообще хуйня, т.к.


лезть на dns сервер и править там адреса или ip...
т.е. под этот домен вместо ip A ставить ip B.
Как только сервак поднялся - лезть опять туда и опять править все назад.
на клиентах кешируются результаты днс запросов.

Воистину - хуйня...
Надо вешать пинг на вторую сетевуху сервака А, и как только она перестает пинговаться - править eth0 на серваке B -передавая ему внешний ip сервака А - никаких обновлений днс не надо.
как только вторая сетевуха А запинговалось - убираешь из eth0 сервака Б ip сервака А/
Это решение гораздо красивее и делается в 3 условия, 2 команды и 1 цикл.

krishtaf

гы гы гы
не надо изобретать велосипед.
CARP, HSRP, VRRP, HertBeat и т.п.
но это не в этом случае, т.к. иначе можно поиметь кучу глюков

stm7884696

мне незнакомы твои аббривеатуры, но я не вижу смыста в установке хз-каких прог, если можно обойтись строчками кода на баше.

krishtaf

мне незнакомы твои аббривеатуры, но я не вижу смыста в установке хз-каких прог, если можно обойтись строчками кода на баше.

ты бы лучше только веб-программированием занимался

Sharp

Я бы копал в сторону if_bridge.
http://www.opennet.ru/base/net/FilterBridge.txt.html - здесь создают мост с фильтрацией, но можно заменить фильтрацию на прозрачное проксирование.

stm7884696

а это и есть веб программирование.
так сказать - резервный канал при падении сайта.
а все меганавороты - это для админов.
для практических целей нужны простые и легкие решения.

krishtaf

а это и есть веб программирование.

смешно

Marinavo_0507

а ты загляни в исходники ping
там наворотов гораздо больше, чем в реализации carp и т.п.
я как-то смотрел - ничего не понял

stm7884696

в пинге может наворотов и больше, но он везде есть и потому он априори простой.
А непонятные аббривеатуры - не факт, что простые. Да и раз их больше одной - значит как минимум - каждая хороша по своему, а значит надо тратить время, разбираться во всех, потом выбирать лучшую.
В результате - потеря времени и никакого полезного результата.
А тут - простой и гарантированный результат за несколько строк кода.
>> изобретать велосипед
Ну и зачем мне теперь Ваши самолеты, если я могу доехать и на велосипеде.

Marinavo_0507

> но он везде есть
и везде разный

krishtaf

простой и гарантированный результат
в том-то и дело что это не так

sergey_m

Дело в том, что:
1) Когда ты уже поставил на B адрес А, ты уже не заметишь, что B поднялся, никаким пингом. А останется сидеть на этом адресе навечно.
2) Машина может пинговаться, а сайт на ней работать не будет. Твой скрипт не сработает.

sergey_m

Теперь внимание, правильный ответ: на А ставится nginx в режиме акселлератора/прокси, помимо этого на этом же nginx поднимается резервный сайт, на другом порту, например 8080. В нормальном случае nginx на A проксирует свой порт 80 на B. В качестве upstream_next для этого проксирования вписывается B:8080.

Marinavo_0507

Когда ты уже поставил на B адрес А, ты уже не заметишь, что B поднялся, никаким пингом.
Разумный человек поставит каждому серверу свой постоянный адрес (который и будет пинговать а для сервиса выделит виртуальный-переходящий.

sergey_m

Верно, но всё равно способ отстойный.

stm7884696

Разумный человек поставит каждому серверу свой постоянный адрес (который и будет пинговать а для сервиса выделит виртуальный-переходящий
я примерно так и предлагал, и даже указал в посте, что пинговать надо другую сетевуху.
Единственно - под пингом я понимал на именно команду ping (речь идет о первом моем посте а проверку сайта не работоспособность.
Заморочка с nginx - это перебор, т.к. сайт упадет если ляжет машина Б.

ava3443

Потому что одним из условий задачи является то, что на A винда, а получается, что на нём ничего нельзя делать.
Да ну? Есть же MSCS - нормальный HA-кластер, в том числе и под Win2K. Правда, нужен Win2K Advanced Server или Datacenter Server.

Marinavo_0507

Совместимый только сам с собой?
Требующий от всех приложений использования его API?

ava3443

Кхм. Ты об чём? Включить апач в кластер (причём, в любой, не только MSCS) - как раз плюнуть, никакие API не нужны.
Единственный раз я использовал API когда заказчик захотел нетривиального мониторинга Оракла. И то, всё было ну очень просто.

Marinavo_0507

Ну значит про API меня заголовки в MSDN неправильные ввели в заблуждение.

ava3443

API конечно есть, он нужен для двух вещей:
1) писать свои инструменты для управления кластером,
2) включать в кластер свои нестандартные приложения, требующие какого-нибудь хитрого мониторинга (пример - кластер отслеживает состояние standby базы данных, состояние оценивается по выводу специального SELECTа, запускаемого раз в минуту)
Оставить комментарий
Имя или ник:
Комментарий: