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

Настройка DNS для обслуживания страниц с нескольких серверов для одного домена

У меня есть контент веб-страницы с действительно высокой доступностью, который должен быть в сети круглосуточно. Поэтому вместо того, чтобы полагаться на один сервер, мне было интересно, смогу ли я обрабатывать одно доменное имя с несколькими серверами?

Могу я просто установить разные серверы имен для этого домена? Будут ли запросы автоматически распределяться между этими серверами? Это так просто?

Вы совершенно не хотите использовать Round Robin DNS. Основная проблема заключается в том, что он не может сбалансировать нагрузку с помощью какого-либо интеллекта и не принимает во внимание кеширование DNS на стороне клиента. DNS просто не предназначен для балансировки нагрузки. Эта технология устарела, и вы действительно хотите использовать Server Load Balancer (либо устройство, либо программное обеспечение, но я действительно рекомендую устройство, если вы заботитесь о производительности).

Происходит вот что:

  • Вы настраиваете доменное имя и привязываете его IP-адрес к общедоступному IP-адресу Server Load Balancer (SLB), который называется VIP (виртуальный IP-адрес).
  • Когда SLB получает запрос на соединение, он устанавливает соединение между клиентом и самим собой. Затем ваши клиенты будут отправлять данные внутри этого соединения (в вашем случае это HTTP-запрос). Некоторые SLB могут перенаправлять поток данных на конкретный сервер в зависимости от типа запроса, но пока это немного продвинуто.
  • Затем SLB установит другое соединение между собой и другим сервером. Он выберет сервер из указанного вами пула. Здесь вы указываете IP-адреса всех ваших серверов. В зависимости от заданных вами правил балансировки нагрузки он выберет тот или иной сервер. Некоторые возможные правила: Round Robin (он отправит первого пользователя на первый сервер, второго пользователя на второй сервер и так далее), Weight (если сервер 1 в два раза мощнее, чем сервер 2, он отправит в два раза больше пользователей к первому серверу), Load (если сервер 2 загружен больше, чем сервер 3, SLB отправит серверу 3 приоритет) и некоторые другие.
  • Популярным способом повышения производительности является использование SLB для завершения SSL-соединения между собой и клиентом, а затем использование открытого текста между ним и сервером. Таким образом, вам не понадобится SSL на вашем сервере (что сэкономит массу времени), что в большинстве случаев нормально, потому что вы находитесь в частной, надежной сети; при сохранении необходимого уровня безопасности в общедоступной (Интернет) сети.

Некоторые популярные производители SLB - это F5 (мой личный фаворит, но это только я, и они, как правило, дороже - по уважительным причинам, но это тоже мое мнение), RadWare, Cisco и Juniper.

У вас действительно есть четыре варианта:

  1. Настройте кластер и укажите в домене виртуальный IP-адрес кластера.
  2. Купить устройство балансировки нагрузки
  3. Поместите кластер за устройством балансировки нагрузки
  4. Настройте несколько записей со всеми IP-адресами разных серверов (DNS Round Robbin)

Проблема с DNS round robbin заключается в том, что если один из ваших серверов выходит из строя, каждые N запросов будут терпеть неудачу при попытке использовать этот IP-адрес.

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

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

Да, это основной способ обеспечить балансировку нагрузки между разными серверами (веб-серверы) ... это называется Циклический DNS.

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