Примечательно, что многие из участников помогают предоставлять информацию о DNS Round Robin как о механизме распределения нагрузки и устойчивости. Обычно это работает, но вы должны понимать, как это работает, и избегать ошибок, вызванных всей этой дезинформацией.
1) TTL на записях DNS, используемых для циклического перебора, должен быть коротким, но НЕ НОЛЬ. Наличие нулевого TTL нарушает основной способ обеспечения устойчивости.
2) DNS RR распределяет, но не балансирует нагрузку, а распределяет ее, потому что на большой клиентской базе они, как правило, запрашивают DNS-сервер независимо и в результате получают разные записи DNS первого выбора. Эти разные варианты выбора означают, что клиенты обслуживаются разными серверами, а нагрузка распределяется. Но все зависит от того, какое устройство выполняет DNS-запрос и как долго он удерживает результат. Типичным примером является то, что все клиенты за корпоративным прокси-сервером (который выполняет DNS-запрос для них) все будут в конечном итоге нацелены на один сервер. Нагрузка распределена - но она не сбалансирована равномерно.
3) DNS RR обеспечивает устойчивость до тех пор, пока клиентское программное обеспечение правильно ее реализует (и TTL, и диапазон внимания пользователей не слишком малы). Это связано с тем, что циклический перебор DNS предоставляет упорядоченный список IP-адресов сервера, и клиентское программное обеспечение должно пытаться связаться с каждым из них по очереди, пока не найдет сервер, который принимает соединение.
Таким образом, если сервер первого выбора не работает, время ожидания клиентского TCP / IP-соединения истекает, и при условии, что ни TTL, ни интервал внимания не истекли, тогда клиентское программное обеспечение делает еще одну попытку подключения ко второй записи в списке - и так до тех пор, пока Срок действия TTL истекает, или он попадает в конец списка (или пользователь с отвращением сдается).
Длинный список сломанных серверов (ваша ошибка) и большие пределы попыток соединения TCP / IP (ошибочная конфигурация клиента) могут составлять в течение длительного периода, прежде чем клиент действительно найдет работающий сервер. Слишком короткий TTL означает, что он никогда не добирается до конца списка, а вместо этого выдает новый DNS-запрос и получает новый список (надеюсь, в другом порядке).
Иногда клиенту не везет, и новый список по-прежнему начинается с неработающих серверов. Чтобы дать системе наилучшие шансы на обеспечение устойчивости клиента, вы должны убедиться, что TTL длиннее, чем типичный интервал внимания, и чтобы клиент добрался до конца списка.
Как только клиент обнаружил работающий сервер, он должен запомнить его, а когда ему нужно установить следующее соединение, он не должен повторять поиск (если не истек срок действия TTL). Более длинный TTL уменьшает частоту, с которой пользователи испытывают задержку, в то время как клиент ищет работающий сервер - предоставляя лучший опыт.
4) DNS TTL вступает в свои права, когда вы хотите вручную изменить записи DNS (например, чтобы удалить долговременный сломанный сервер), тогда короткий TTL позволяет этому изменению быстро распространяться (как только вы это сделаете), поэтому рассмотрите баланс между тем, сколько времени потребуется, прежде чем вы узнаете о проблеме, и внесите это ручное изменение - и тот факт, что обычным клиентам потребуется только выполнить новый поиск работающего сервера только после истечения срока действия TTL.
DNS round robin имеет две выдающиеся функции, которые делают его очень экономически эффективным в широком диапазоне сценариев - во-первых, он бесплатный, а во-вторых, он почти так же географически рассредоточен, как и ваша клиентская база.
Он не вводит новую «единицу отказа», которую делают все другие «умные» системы. Нет добавленных компонентов, которые могут испытывать общий и одновременный сбой в течение всей нагрузки взаимосвязанных элементов.
«Умные» системы великолепны и представляют замечательные механизмы для координации и обеспечения бесперебойного механизма балансировки и отработки отказа, но в конечном итоге именно те методы, которые они используют для обеспечения бесперебойного взаимодействия, являются их ахиллесовой пятой - дополнительной сложной вещью, которая может пойти не так, и когда это произойдет, обеспечит беспроблемный опыт отказа всей системы.
Так что ДА, DNS round robin определенно "достаточно хорош" для вашего первого шага за один сервер, на котором размещен весь ваш статический контент в одном месте.