Я сталкиваюсь с проблемами с сайтом, который использует циклический алгоритм DNS для обработки отказа.
Существует два веб-сервера. Когда я выключаю апача на одном поле, все прекрасно. Когда браузеры пытаются перейти к веб-серверу с выключенным апачем, это отказалось от соединения, и он автоматически пробует другой.
Однако при перезагрузке, я сталкиваюсь с проблемами. Когда я перезагружаю сервер вместо соединения, которому отказывают, браузеры теперь ожидают продвижения тайм-аута на действительно медленный сайт, пока сервер не возвращается.
Существует ли способ настроить сеть (или CentOS) таким образом, что во время перезагрузок, что IP продолжает отклонять вместо того, чтобы занять много времени к тайм-ауту?
В качестве временного решения специального (только в случае, к сожалению, отсутствия балансировщика нагрузки), вы можете сопровождать перезагрузку сервера подходящими конфигурациями на одном из его следующих переходов (переключатель , маршрутизатор, межсетевой экран), например,
В частности, шаг 2 может состоять из одного из следующих
Возможно, существуют и другие варианты. Конечно, есть один важный момент: Не стреляйте себе в ногу! Например,
Кроме того, я сам не тестировал ни один из этих методов, я просто придумал их и думаю, что они должны работать.
Используйте программное обеспечение для балансировки нагрузки с проверкой работоспособности, например Zen-Loadbalancer или HA-Proxy .
Здесь вы можете настроить проверку работоспособности, которая будет пинговать или открывать файл на своем веб-сервере и удалите их из балансировки нагрузки, например, если файл недоступен.
Циклический перебор DNS не предназначен для таких вещей, потому что ваш DNS не знает, недоступен ли сервер. DNS отправляет запросы поочередно на каждый ip.
Просто чтобы объяснить: DNS Round Robin не предназначен для тех целей, для которых вы его используете. Он просто указывает DNS раздавать доступные IP-адреса поочередно; нет обратной связи между отказавшим сервером и DNS (а если бы она была, то проблемы с синхронизацией не позволили бы ей сильно помочь из-за особенностей конструкции DNS). Таким образом, вы можете использовать DNS-Round-Robin для балансировки нагрузки (ограниченным образом), но не для аварийного переключения.
См. Эту цитату: «Если служба на одном из адресов в списке выйдет из строя, DNS продолжит раздавать этот адрес, а клиенты по-прежнему будут пытаться связаться с неработающей службой». из http://en.wikipedia.org/wiki/Round-robin_DNS
Причина, по которой у вас не было проблем с выключением веб-сервера, вероятно, заключается в том, что ваш браузер придерживается работающего веб-сервера, возможно, потому что какого-то сеансового файла cookie и т.п. Вы должны попробовать свой эксперимент с выключением веб-сервера несколько раз, используя совершенно новые сеансы - тогда у вас должны возникнуть те же проблемы, что и при перезагрузке.
Кроме того, я бы поддержал уже данный ответ: решение для балансировки нагрузки будет делать то, что вы хотите.