как избежать тайм-аутов во время перезагрузки сервера

Я сталкиваюсь с проблемами с сайтом, который использует циклический алгоритм DNS для обработки отказа.

Существует два веб-сервера. Когда я выключаю апача на одном поле, все прекрасно. Когда браузеры пытаются перейти к веб-серверу с выключенным апачем, это отказалось от соединения, и он автоматически пробует другой.

Однако при перезагрузке, я сталкиваюсь с проблемами. Когда я перезагружаю сервер вместо соединения, которому отказывают, браузеры теперь ожидают продвижения тайм-аута на действительно медленный сайт, пока сервер не возвращается.

Существует ли способ настроить сеть (или CentOS) таким образом, что во время перезагрузок, что IP продолжает отклонять вместо того, чтобы занять много времени к тайм-ауту?

4
задан 17 January 2015 в 17:02
3 ответа

В качестве временного решения специального (только в случае, к сожалению, отсутствия балансировщика нагрузки), вы можете сопровождать перезагрузку сервера подходящими конфигурациями на одном из его следующих переходов (переключатель , маршрутизатор, межсетевой экран), например,

  1. остановить apache
  2. Заставить следующий переход ответить явными сообщениями «недоступен»
  3. перезагрузить сервер
  4. Отменить внесенные изменения, шаг 2

В частности, шаг 2 может состоять из одного из следующих

  • добавления IP-адреса веб-сервера в качестве вторичного IP-адреса к одному из его интерфейсов (при условии, что на нем не запущен веб-сервер)
  • или создания статической записи arp (т. Е. Ip для mac translation), который относится к запущенному хосту, на котором не запущен веб-сервер
  • , не делает этот единственный IP-адрес немаршрутизируемым
  • или добавляет правило брандмауэра для отклонения (не отбрасывания!) трафика порта 80 на рассматриваемый IP
  • или измените существующую запись SNAT для вашего веб-сервера, чтобы он ссылался на запущенный хост, но не на веб-сервер
  • , или присоедините фиктивный хост с тем же MAC-адресом к тот же lan

Возможно, существуют и другие варианты. Конечно, есть один важный момент: Не стреляйте себе в ногу! Например,

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

Кроме того, я сам не тестировал ни один из этих методов, я просто придумал их и думаю, что они должны работать.

1
ответ дан 3 December 2019 в 02:23

Используйте программное обеспечение для балансировки нагрузки с проверкой работоспособности, например Zen-Loadbalancer или HA-Proxy .

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

Циклический перебор DNS не предназначен для таких вещей, потому что ваш DNS не знает, недоступен ли сервер. DNS отправляет запросы поочередно на каждый ip.

9
ответ дан 3 December 2019 в 02:23

Просто чтобы объяснить: DNS Round Robin не предназначен для тех целей, для которых вы его используете. Он просто указывает DNS раздавать доступные IP-адреса поочередно; нет обратной связи между отказавшим сервером и DNS (а если бы она была, то проблемы с синхронизацией не позволили бы ей сильно помочь из-за особенностей конструкции DNS). Таким образом, вы можете использовать DNS-Round-Robin для балансировки нагрузки (ограниченным образом), но не для аварийного переключения.

См. Эту цитату: «Если служба на одном из адресов в списке выйдет из строя, DNS продолжит раздавать этот адрес, а клиенты по-прежнему будут пытаться связаться с неработающей службой». из http://en.wikipedia.org/wiki/Round-robin_DNS

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

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

5
ответ дан 3 December 2019 в 02:23

Теги

Похожие вопросы