Некоторые веб-сайты мы размещаем на серверах в нашем офисе. У нас есть два интернет-соединения, основное и резервное (с отдельными диапазонами IP-адресов). Нам нужно иметь возможность обнаруживать за пределами нашей локальной сети, что основное подключение к Интернету не удалось.
Мы используем специальную службу DNS, которая будет переключать записи DNS на наши резервные IP-адреса, если основные адреса отключены. Он определяет, перешли ли наши основные адреса в автономный режим, проверяя связь с сервером или загружая веб-страницу на нашем конце, и, если это не удается, переключает наш DNS на вторичные IP-адреса.
У нас была проверка на наличие страницы на нашем веб-сервере, но проблема в том, что когда мы перезагружаем этот веб-сервер для обновлений Windows, он думает, что интернет-соединение прервано, и переключается на вторичное соединение, что вызывает проблемы. Он переключается обратно через несколько минут после перезагрузки сервера.
До недавнего времени моя процедура заключалась в том, чтобы войти во внешний DNS и отключить аварийное переключение, затем перезагрузить сервер и снова включить его. Это не оптимальное решение, потому что переключение при отказе должно устанавливаться для каждого домена, а их довольно много.
Я бы хотел, чтобы при отказе проверялось устройство, которое всегда включено, 100% времени. Желательно отсутствие движущихся частей на ИБП, чтобы он никогда не выходил из строя. Я попытался использовать сервер печати Hawking, у которого есть веб-интерфейс, но он кажется ненадежным, поскольку обнаружил, что подключение к Интернету не удалось, хотя на самом деле это не так. В худшем случае я могу собрать компьютер без вентилятора, который может загружаться с USB, и просто запустить урезанную версию unix с веб-хостом, который обслуживает одну страницу.
Существуют ли какие-либо простые, на 100% надежные устройства, которые можно задействовать в работе, которые могут быть проверены, или обслуживают веб-страницу, которую можно использовать?
Итак, в моем первоначальном ответе предполагалось, что вы говорите об отказоустойчивых веб-серверах. То, что вы хотите, полностью отличается от этого. Спасибо за обновление вашего вопроса.
То, что мы только что сделали, мы сделали с помощью BGP. У нас есть 2 провайдера, каждый из которых предоставил нам ссылку BGP. Затем у нас есть диапазон IP-адресов, который каждый провайдер объявляет через BGP. Когда какой-либо канал выходит из строя, BGP заботится о маршрутизации сети. Так работает Интернет, когда ссылки опускаются. Вам вообще не нужны изменения DNS, и это намного надежнее, чем то, что у вас есть и полностью автоматизировано. Может ли это быть для вас вариантом?
Извините, но мне кажется, что отработка отказа выполняет то, что вы планировали. Если вы перезагрузитесь, сервер не будет обслуживать контент, пока он не будет полностью перезагружен и службы не будут запущены. Если вы не хотите, чтобы он проверял веб-сервер, подойдет простой пинг. Но это все равно не идеально, когда пользователи пытаются зайти на ваш веб-сайт, поскольку IIS, возможно, не запустился, даже если вы можете проверить связь с ним.
Использование DNS для аварийного переключения никогда не будет надежным. Похоже, вы выяснили это на собственном горьком опыте.
Причина этого в том, что записи DNS кэшируются по всему Интернету, а кеши DNS и серверы могут игнорировать ваши значения TTL, даже если они установлены довольно низко, например, 30 секунд. Если вы установили его на 5 минут, то пройдет как минимум столько же времени, прежде чем все вернется в норму. В любом случае это также звучит так, будто ваши серверы резервного копирования не работают должным образом или это просто статическая веб-страница, указывающая, что сайт временно не работает?
Существуют лучшие решения в виде отказоустойчивых веб-серверов. Я не знаком с тем, как именно это делает Microsoft, но считаю, что Microsoft Cluster Server - правильное название для продукта. Или вы можете переключить свои веб-серверы на Linux. mono и mod-mono доступны, если вам нужна поддержка .NET на веб-сервере apache. Это бесплатно. Я не думаю, что кластерный сервер MS стоит дешево.
Третий вариант может заключаться в установке маршрутизатора Linux внутри вашей сети. Затем создайте сценарий, который каждую минуту проверяет веб-сервер. Если он не работает, сценарий может изменить маршрут или перенаправить на статическую страницу или другой сервер. Возможно, вы даже сможете сделать это с помощью iptables redirect. В любом случае, просто некоторые мысли, и я знаю, что это старый вопрос.
Некоторые небольшие бортовые компьютеры, такие как Гумстикс Оверо на базе микрокомпьютера или Rasberry Pi должно сработать. Для веб-сервера вы можете использовать встроенный веб-сервер и супервизор Python или другой веб-сервер.
У меня Gumstix работает более 3 недель без перегрева или простоев.