О DNS-опросе - PullRequest
       26

О DNS-опросе

0 голосов
/ 10 мая 2009

В настоящее время мы используем опрос DNS для четырех веб-серверов.

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

Таким образом, наилучшее решение должно состоять в том, чтобы пользователь все еще находился на том же веб-сервере, когда он обновляется. Есть ли выход?

Ответы [ 6 ]

2 голосов
/ 10 мая 2009

Хорошо, я полагаю, вы имеете в виду "Round Robin DNS". Итак, вы описываете очень распространенную проблему , и для нее не существует «правильного» решения, поскольку возможные ответы зависят от многих переменных: пытаетесь ли вы обеспечить автоматическое переключение при сбое или просто балансировку нагрузки? Готовы ли вы тратить время и / или деньги на балансировщик нагрузки? Какие технологии вы используете? Java EE? PHP? Apache? IIS?

Сказав, что, если вы только после балансировки нагрузки и отказоустойчивости не является большой проблемой, вы можете использовать разные имена для каждого сервера (www1, www2, www3 и т. Д.) И перенаправить их с вашего Главный веб-сервер (www) при первом доступе. Это просто (и упрощенно), но практично в нескольких настройках.

1 голос
/ 10 мая 2009

У вас есть довольно много вариантов.

  • Вы можете хранить сеансы в ключе: хранилище значений, например. memcached (мой личный фаворит)
  • Вы можете хранить сеансы в базе данных
  • Вы можете разместить балансировщики нагрузки обратного прокси, как в DNS, и ваши серверы сзади. Затем установите его так, чтобы все запросы с одного и того же IP-адреса направлялись на одни и те же серверы независимо от того, через какой распределитель нагрузки они проходят. В HAProxy эта опция называется balance source. Осторожно: если количество узлов меняется, сеансы могут быть потеряны. Вы можете использовать функции cookie или url_param, чтобы избежать этого.

См. Документацию HAProxy . Это действительно стоит прочитать.

1 голос
/ 10 мая 2009

Я знаю, что некоторые аппаратные балансировщики нагрузки будут создавать «липкие» отношения между пользователем и сервером, чтобы избежать подобных проблем.

1 голос
/ 10 мая 2009

Могут ли веб-серверы использовать общий сервер базы данных для хранения информации о сеансе?

0 голосов
/ 10 мая 2009

DNS-сервер, который может ответить на основании местоположения клиента, может решить эту проблему. PowerDNS с модулем geoip или GeoIPdns являются некоторыми примерами. Вам необходимо убедиться, что наборы IP-адресов не перекрываются, чтобы клиент всегда получал один и тот же ответ.

Это само по себе не обеспечит отказоустойчивость.

0 голосов
/ 10 мая 2009

Все четыре веб-сервера находятся на одном сайте и в одной сети или они распределены?

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

...