Я рассматриваю варианты изменения веб-сайта с высокой доступностью, который предоставляет услуги через https api.
Текущая настройка:
Если бы балансировка нагрузки не была обязательной, могли бы мы обойтись без балансировщика нагрузки, просто совместив DNS-серверы на двух машинах, каждый из которых отвечает только со своим собственным адресом при запросе DNS. В этом сценарии, если одна виртуальная машина не работает, это приведет к удалению и службы, и DNS-сервера, который указывает на службу, так что никакие клиенты не будут перенаправлены на неработающий сервер, это правильно?
отредактировать для ясности:
мы довольны неидеальной «HA», которая у нас есть сейчас, этот вопрос конкретно о том, сделают ли изменения, о которых я думаю, положение хуже или нет.
Прямой ответ на ваш вопрос - да, будет только хуже.
Это связано с тем, что один из ваших серверов имен не отвечает, будет постоянно вызывать задержки разрешения для клиентов, которые пытаются разрешить через отказавший сервер имен, тогда как текущий метод будет терпеть неудачу только + - половина клиентов, пока вы не обнаружите, что виртуальная машина не работает + TTL секунд.
Обычно серверы имен кэшируются на 48 часов, поэтому во время меньшего времени простоя или обновлений сервера имен + 48 часов у ваших пользователей будет случайная медленная работа.
Ваша текущая реализация лучше если только ваша ВМ обнаруживает, что не работает. В период между отключением виртуальной машины и ее обнаружением + TTL предлагаемое решение действительно будет лучше. Но я предполагаю, что это настолько небольшой промежуток времени, что его нельзя игнорировать.
Если я правильно вас понял, вы предлагаете, чтобы оба распределенных сервера были перечисленными серверами имен для рассматриваемого домена, каждый с авторитетным файлом зоны, который содержит одну запись A, указывающую на локальный сервер для имени хоста, на котором работает ваша служба HTTPS.
Если это верно, то да, я ожидал бы, что это будет работать на основе циклического / стохастического характера запросов к серверам имен. Если один сервер выйдет из строя, он не сможет отвечать на запросы со своим адресом, поэтому клиенты должны довольно быстро переключиться на другой. для поиска DNS.
Вы говорите, что понимаете и принимаете, что кэширование DNS означает, что отказавший сервер может нарушить работу клиентов, которые кэшировали поиск, указывающий на этот сервер, возможно, на длительные периоды времени из-за того, что интернет-провайдеры не соблюдают короткие TTL. Если это все так, то я не вижу явных дыр в вашем предложении.
Я просто не стал бы делать это сам по воскресеньям.
Балансировка нагрузки DNS раньше была «вещью», но с кешированием, которое широко используется сегодня, это не так практично.
В Windows у вас есть «Балансировщик сетевой нагрузки», который может помочь вам с тем, что вы хотите сделать, используя многоадресную рассылку по частной сети. Вы по-прежнему можете делать это через провайдеров с помощью VPN между ними.
В Linux вам нужно будет использовать что-то вроде haproxy
или другой пакет для балансировки нагрузки. Однако это создает проблемы сами по себе.
Посмотрите на свои варианты и решите, какой из них будет наиболее рентабельным для ваших нужд. Я не могу рассуждать, кроме очень популярных вариантов.