DNS Load Balancing (Round Robin). Возможно?

Все что связано с доменными именами

Модераторы: Art.i, garry

DNS Load Balancing (Round Robin). Возможно?

Сообщение Pavel M. » Чт ноя 27, 2008 4:54 am

Возникла острая необходимость в распределении нагрузки.

Возможно ли как-то через панель (ISPmanager 4.3 Light) установить несоклько IP для домена?

Если установить вручную прописав в файлах named - не перезапишутся ли эти записи при изменении доменов из панели? Подхватятся ли эти записи вторым NS?

Оба NS - ваши, на моем домене. В смысле, ns1.mydomain.tld, ns2,..
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Сообщение Pavel M. » Чт ноя 27, 2008 5:16 am

На добавление A-записей — никакой реакции. BIND перезапускал.

В /etc/named/master/mydomain.tld добавились строки:

mydomain.tld. IN A 257.258.259.260
www IN A 257.258.259.260

Что я не так делаю? И возможно ли это на ваших серверах?
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Re: DNS Load Balancing (Round Robin). Возможно?

Сообщение swg » Чт ноя 27, 2008 8:53 am

Pavel M. писал(а):Возможно ли как-то через панель (ISPmanager 4.3 Light) установить несоклько IP для домена?

Конечно. Добавьте несколько записей А. Вообще не понял какая может быть проблема.
swg
флудит форум
 
Сообщений: 2386
Зарегистрирован: Сб окт 07, 2006 9:09 am
Откуда: NNov

Сообщение Pavel M. » Чт ноя 27, 2008 10:32 am

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

Но возник другой вопрос. Я так понял, что через панель нельзя установить время кэширования записи. Тогда, если я ее пропишу в файле — она затрется в случае: а) при изменении записи для этого домена; б) при изменении любой записи любого домена; в) умная система учтет ttl и запишет его в новой версии :)
?

Просто немного побаиваюсь устанавливать это опытным путем. А необходимо, чтоб пользователь раз зашедший на сайт1, не попал на сайт2 в течение дня. Т.е. чтоб у него закешировался выданый ему айпи на день, но такой большой ttl не применялся к другим доменам.
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Сообщение swg » Чт ноя 27, 2008 11:33 am

Pavel M. писал(а):Локально nslookup показывал только один айпи

Заинтересовало. Проверил.
Даже винда показывает все :-) Удаленно:
C:\>nslookup loop.uunn.ru
Server: ssa.ukfd.local
Address: 192.168.111.111
Non-authoritative answer:
Name: loop.uunn.ru
Addresses: 127.0.0.127, 127.0.0.172, 127.0.0.217
Локально
up# nslookup loop.uunn.ru
Server: 82.146.47.7
Address: 82.146.47.7#53
Non-authoritative answer:
Name: loop.uunn.ru
Address: 127.0.0.172
Name: loop.uunn.ru
Address: 127.0.0.217
Name: loop.uunn.ru
Address: 127.0.0.127
swg
флудит форум
 
Сообщений: 2386
Зарегистрирован: Сб окт 07, 2006 9:09 am
Откуда: NNov

Сообщение swg » Чт ноя 27, 2008 11:35 am

Pavel M. писал(а):Просто немного побаиваюсь устанавливать это опытным путем.

А чего боятся ? DNS же не упадет. Проверьте. Делов на 5 минут. Ставлю на вариант в). :-)
swg
флудит форум
 
Сообщений: 2386
Зарегистрирован: Сб окт 07, 2006 9:09 am
Откуда: NNov

Сообщение Pavel M. » Сб ноя 29, 2008 7:35 pm

Тогда локальный nslookup показывал только один айпи, несколько раз проверял. Сечас все ок.

Поставил в конфиге TTL, пока не стал пробовать через панель изменять.

Все отлично работает, раздается нагрузка поровну. Но вследствие неравых конфигураций серверов — на втором загрузка на 75% больше. Не могу найти документацию по возможности расстановки приоритетов для айпи. Неужели так нельзя сделать?

Видимо, придется вешать на крон скрипт, меняющий конфиг, но возникает другой вопрос. Во время 'killall -HUP named' — запросы, пришедшие на 53 порт сохранятся где-то там в стеке и передадутся как только он оживет (он же фактически не выгружается), или таки клиенты не получат ответа?

Я не сисадмин, в этом плохо разбираюсь.
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Сообщение John_Lepikhin » Сб ноя 29, 2008 9:17 pm

1. ISPmanager учтёт ваши изменения TTL и перетирать их не будет.

2. Выставить приоритеты для записей нельзя. Это и невозможно по одной причине: запись кэшируется на всех DNS-серверах мира, у которых о ней спрашивали. Соответственно, никакой DNS-сервер в мире, включая ваши головные NS'ы, не знает, сколько запросов было отправлено на каждый из NS'ов. И тем более, какого типа были эти запросы (или хотели просто попинговать, или отправили запрос на генерацию сложного отчёта).
Поставленная вами задача решается обычно балансировщиком нагрузки внутри датацентра. Т.е. есть какой-то очень лёгкий HTTP-прокси, который знает, насколько нагружен каждый из серверов. И в соответствии с этим, направляет вновь пришедшие запросы на самую мало нагруженную машину.
John_Lepikhin
Консультант
 
Сообщений: 63
Зарегистрирован: Вс май 29, 2005 6:43 am

Сообщение Pavel M. » Сб ноя 29, 2008 9:46 pm

Спасибо за ответ.

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

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

Я сделал для первого айпи TTL — 5h, а для второго ничего не писал, думал, что первый айпи закешируется везде, но нагрузка не меняется.
Трафик там на 70% состоит из новых посетителей, и было замечено, что при изменении записей NS — практически мгновенно все новые посетители получают новый айпи (TTL там по умолчанию 3600).

Я так понимаю, мне остается только вариант со скриптом на кроне, который будет менять айпи в конфиге в соотношении: 2 раза первый сервер / 1 раз второй. Но боюсь потери запросов при частых перезапусках Бинда.
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Сообщение Pavel M. » Вс ноя 30, 2008 12:03 am

Кажется, я таки придумал решение. Нужно просто на первый сервер повесить еще один айпи, который добавить в ротацию :)

По-моему, очень даже элегантное решение :))
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Сообщение swg » Вс ноя 30, 2008 11:08 am

1 сервер, 2 IP... интересно и на какие сервера поделится нагрузка :-)
Я че-то не понял, что получится должно, объясните а?
swg
флудит форум
 
Сообщений: 2386
Зарегистрирован: Сб окт 07, 2006 9:09 am
Откуда: NNov

Сообщение Pavel M. » Вс ноя 30, 2008 12:55 pm

Не, сервера два. Первый — 100.1.1.1, и второй, который перегруженный — 200.1.1.1.

Я думал взять еще один айпи 100.1.1.2, повесить его на первый сервер. Получится, просто nginx для одного сайта будет слушать два айпи.
Добавить в ДНС запись для этого третьего айпи.
Теперь в ротации будет три айпи (100.1.1.1, 100.1.1.2 и 200.1.1.1), два из которых ведут на один (первый) сервер. Т.е. балансировка теперь не 50/50, а 66/33.

И чем больше айпи на каждом сервере - тем точнее можно регулировать нагрузку на каждый :))
Только вот с доп. айпи пока сложности.
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Сообщение swg » Вс ноя 30, 2008 11:38 pm

<?php
$r = mt_rand ( 0 , 100 ) ;
if ( $r < 33 )
header('Location: mirror1.site.ru') ;
else
header('Location: mirror2.site.ru') ;
?>
И контролировать удобнее и проблем с ДНС нет и можно вообще по всякому нагрузку распределить...
swg
флудит форум
 
Сообщений: 2386
Зарегистрирован: Сб окт 07, 2006 9:09 am
Откуда: NNov

Сообщение Pavel M. » Пн дек 01, 2008 12:27 am

Ну, это да, самый простой вариант.
Просто на сайт дают много ссылок, возникнет путаница, да и для SEO не очень хорошо. Потому и хочется сделать красиво — через один домен.
Ладно, подожду пока решения о второй айпи.

Спасибо за советы!
Pavel M.
 
Сообщений: 18
Зарегистрирован: Чт ноя 27, 2008 4:41 am

Сообщение John_Lepikhin » Пн дек 01, 2008 2:41 am

С какой целью вы держите серверы в разных странах? Обычно, это подразумевает, что посетители на эти два сервера приходят тоже с разных стран. В этом случае, DNS-сервер (опять же, специально подготовленный) раскидывает запросы в соответствии с географическим положением клиентов.
Во всех иных случаях, гораздо проще балансировать нагрузку в пределах одного датацентра.
John_Lepikhin
Консультант
 
Сообщений: 63
Зарегистрирован: Вс май 29, 2005 6:43 am

След.

Вернуться в DNS

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron