Один псевдоним для указания на несколько IP-адресов

Один псевдоним для указания на несколько IP-адресов

Проблема у меня следующая: у меня есть распределенное приложение (3 географически распределенных узла), которое по запросу возвращает большие наборы данных. Чтобы уменьшить сетевой трафик, мне нужно направить запрос клиента в ближайший экземпляр распределенного приложения. Я думал о нескольких вариантах, но по каждому из них у меня есть вопросы, на которые я был бы признателен за ваши мнения:

Вариант 1: использовать DNS для преобразования в несколько IP-адресов. Например: - Если я делаю звонок с машины в Великобритании на server.copmany.com - DNS для преобразования его в IP-адрес системы в Великобритании. - Если я делаю звонок с машины в США на server.copmany.com - DNS для преобразования его в IP-адрес системы в США.

Вопрос: Возможно ли настроить DNS для чего-то подобного?

Вариант 2: использовать балансировщик нагрузки, который может преобразовать IP-адрес в ближайший сервер.

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

Вариант 3: Сталкивались ли вы с какими-либо другими решениями подобного рода проблем?

Спасибо, Майк.

решение1

Я бы выбрал вариант №1.

Не знаю, какой DNS-сервер вы используете, но это можно сделать с помощью BIND с поддержкой GeoIP и несколькими представлениями для разных пользователей из разных стран. Погуглив "BIND GeoIP", вы найдете кучу руководств по настройке.

В противном случае существуют сторонние сервисы (ключевые слова: «управляемый DNS, геолокация»), которые предлагают эту услугу.

решение2

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

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

решение3

Через DNS

  1. Я точно знаю, что Bind поддерживает представления, потому что я использовал их раньше. Другие серверы тоже могут. С представлением вы обслуживаете любую информацию о зоне, которая вам нравится, основываясь на запрашиваемом IP-адресе -http://www.zytrax.com/books/dns/ch7/view.html

  2. Использовать циклический DNS для разрешения одного из трех IPS. Это не будет иметь значения, откуда пришел запрос, однако

Я нашел это в гугле (http://www.dnsmadeeasy.com/services/global-traffic-director/) - Может быть, вам это покажется интересным

Связанный контент