Назад | Перейти на главную страницу

Как я могу автоматически изменить запись DNS A, чтобы в случае сбоя мой сайт указывал на дополнительный сервер?

Мой хостинг взимает с меня плату в размере 50 долларов в месяц за размещение моих серверов в одной VLAN, чтобы я создал кластер с помощью функции балансировки сетевой нагрузки.

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

Есть ли способ создать кластер без использования NLB? Может быть, что-то, что контролирует мой основной сервер и меняет DNS для домена, когда он выходит из строя?

DNS - плохой выбор для моделирования аварийного переключения. Причины

  • DNS-записи действительны в течение определенного периода времени, поэтому для обеспечения аварийного переключения в реальном времени вам необходимо снизить TTL для записи DNS, чтобы он был настолько низким, чтобы каждый запрос к вашему сайту приводил к поиску DNS. Что серьезно замедлит восприятие ваших посетителей
  • Есть некоторые подозрения, что даже сегодня DNS-вход с очень низкими значениями TTL не соблюдается интернет-провайдерами и более старыми сломанными серверами имен.
  • Использование Round Robin DNS не обеспечивает аварийного переключения, потому что в среднем 50% запросов будет приходить на каждый указанный IP-адрес. Это действительно сработало бы, если бы протоколы более высокого уровня HTTP имели встроенную повторную попытку.

Мои предложения были бы

  • Если ваш второй сервер находится в той же хостинговой компании, то подумайте о том, чтобы арендовать настоящий балансировщик нагрузки для собственного использования, или большинство хостинговых компаний могут арендовать вам часть своей общей инфраструктуры балансировки нагрузки.
  • Используйте что-то вроде серверов распространения или Linux HA, чтобы назначить службу плавающему виртуальному IP-адресу, который передается между вашими физическими серверами. Серверы в кластере отслеживают друг друга и решают, кто является текущим владельцем виртуального IP.

Я очень рекомендую прочитать Масштабируемые интернет-архитектуры Тео Шлосснагл поскольку он описывает это очень подробно

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

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

Это решение позволяет использовать общий IP-адрес (или несколько) между двумя или более ящиками и полностью избежать проблемы с DNS.

Один из способов - разместить ваш сайт на двух разных серверах, а затем иметь монитор сайта в третьем месте, который отслеживает подключение к основному серверу (куда обычно указывает ваш DNS). Если он обнаруживает, что сайт не работает, попросите монитор выполнить сценарий или нажмите URL-адрес обновления динамического поставщика DNS (например, DtDNS [которой я управляю], или DynDNS.com) с IP-адресом вашего резервного сервера, указанным для вашего домена / имени хоста. Это обновит запись DNS и направит трафик на ваш резервный веб-сервер. Когда основной сайт снова в сети, мониторинг может запустить другой сценарий или URL-адрес, который вернет «настоящий» IP-адрес.

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

Другой - то, что за сайтом нужно наблюдать извне, объективно. Вы не можете запустить мониторинг на том же веб-сервере, что и сайт. Если весь сервер выйдет из строя, метод мониторинга / обновления сразу же отключится.

SimpleFailover делает более или менее то, что вы хотите. Помните, что DNS кэшируется, поэтому это не идеальное решение.

Что касается нескольких записей A, я недавно видел обсуждение реализации Vista и Win Server 2008 RFC3484, что означает, что вы не можете полагаться на циклический перебор и, скорее всего, получите неравномерную загрузку сервера от этих клиентов.

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

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