LINUX.ORG.RU
ФорумAdmin

про DNS


0

0

здравствуйте.

ситуация: нужен ресольвинг одного имени на (например) 4 адреса.

странное: хочется, чтобы адреса при ресольвинге отдавались неравномерно, 40% - адрес 1, 30% - адрес 2, 20% - адрес 3 и оставшиеся 10% - адрес 4. возможно ли такое, и, если да, то как?

в named'е проверял -- если накидать записей вида

node IN A 1.2.3.1 IN A 1.2.3.1 IN A 1.2.3.1 IN A 1.2.3.2 IN A 1.2.3.2 IN A 1.2.3.3

то он одинаковые a-записи сжимает в одну, и частота получается 100/(кол.-во уникальных адресов) %.

marco@raip:~$ host google.com dns

google.com A 64.233.187.99

google.com A 72.14.207.99

google.com A 64.233.167.99

marco@raip:~$ host google.com dns

google.com A 64.233.167.99

google.com A 64.233.187.99

google.com A 72.14.207.99

marco@raip:~$ host google.com dns

google.com A 72.14.207.99

google.com A 64.233.167.99

google.com A 64.233.187.99

marco@raip:~$ host google.com dns

google.com A 64.233.187.99

google.com A 72.14.207.99

google.com A 64.233.167.99

Наверное, нельзя. Как понимаю, выхотите распределить нагрузку? Какое приложение так грузит систему? Возможно, есть более высокоуровневое решение.

markevichus ★★★
()

то, что вы хотите, называется weighted round robin и имхо бинд такого не умеет. попробуйте погуглить.

sasha999 ★★★★
()

Что приходит в голову (правда, это немного костыль):

node IN CNAME n1
node IN CNAME n2
...
node IN CNAME n10

n1 IN A 1.2.3.1
...
n4 IN A 1.2.3.1
n5 IN A 1.2.3.2
...
n7 IN A 1.2.3.2
n8 IN A 1.2.3.3
n9 IN A 1.2.3.3
n10 IN A 1.2.3.4

CNAME-ы отдаются по обычному rr с равной вероятностью, а им уже ставятся в соответствие конкретные узлы с нужной вероятностью.

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

slav ★★
()
Ответ на: комментарий от sasha999

да, вот, powerdns, изучаю, вроде приятная вещь...

berrywizard ★★★★★
() автор топика
Ответ на: комментарий от markevichus

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

berrywizard ★★★★★
() автор топика
Ответ на: комментарий от slav

про cname не подумал, интересно.

а про кэширование -- ну будет балансировка "по провайдерам", сойдёт для сельской местности...

berrywizard ★★★★★
() автор топика
Ответ на: комментарий от slav

round robin в bind8 строится на CNAME, а в bind9 на А-записях, как можно это объединить в рамках одного bind'a я себе не представляю.

sdio ★★★★★
()
Ответ на: комментарий от sdio

> round robin в bind8 строится на CNAME, а в bind9 на А-записях, как можно это объединить в рамках одного bind'a я себе не представляю.

А разве в бинде нельзя сделать несколько записей одного типа (хоть A, хоть CNAME, хоть MX какой-нибудь), чтобы он отдавал их в случайном порядке? В документации вроде не сказано что это работает только для A или CNAME.

По теме: ИМХО балансировку лучше сделать прозрачным прокси каким-нибудь или даже на уровне tcp - так будет более правильное распределение. Это, конечно, возможно только если все сервера в одной сети находятся.

slav ★★
()

>хочется, чтобы адреса при ресольвинге отдавались неравномерно,
Если не менять dns (bind), то

>40% - адрес 1,
повесить на сетвеуху 4-ре IP-адреса

>30% - адрес 2,
повесить на сетвеуху 3-и IP-адреса

>20% - адрес 3
повесить на сетвеуху 2-а IP-адреса

>и оставшиеся 10% - адрес 4.
на сетвеухе 1 IP-адрес

Полученные 10 адресов внести в dns под одно имя (получим желаемый round robin)

sdio ★★★★★
()
Ответ на: комментарий от sdio

>>40% - адрес 1, >повесить на сетвеуху 4-ре IP-адреса

там сетка -- /28, так что "ай-пи налево, ай-пи направо" не покатит. только с вариантом 192.168./172.16./10., но тогда проксю поднимать. хотя, проксю, похоже, поднимать в любом случае... а, кстати, как впроксях такое настроить? squid + самописный редиректор?

berrywizard ★★★★★
() автор топика
Ответ на: комментарий от berrywizard

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

А не проще для этих целей реверс прокси использовать? Например - http://www.apsis.ch/pound/

qwe ★★★
()
Ответ на: комментарий от qwe

короче, сделал, но до ужаса криво. запинка в каталоге uploads -- туда пихается весь мусор, что зальют пользователи. я сначала приделал обработчик 404-й ошибки, который шерстил другие серверы на предмет отсутствующего файла, и, если находил, скачивал к себе и отдавал клиенту (вариация на тему http://www.linux.org.ru/view-message.jsp?msgid=2404293 :-), но оказалось, что это недостаточно -- так отдаются только тумбы картинок, само файло отдаётся похапой, и, если файла нет, показывается страница с ошибкой. пришлось сделать одну машину основной и с неё раздать этот каталог, а на монтировать его. лезть в потроха борды нет никакого энтузиазма...

berrywizard ★★★★★
() автор топика
Ответ на: комментарий от qwe

Реплицировать можно примерно так:

---------------------------------
#!/bin/bash

# Отрываемся от терминала
exec >/dev/null
exec 2>/dev/null
exec </dev/null

# Уходим в фон
(
  inotifywait -mre create,modify,delete /path/uploads | \
    while read dir event file
    do
      case $event in
        DELETE)
          # Действия для удаления файла "$dir/$file" с других хостов
          ................
        ;;
        *)
          # Действия для вдувания файла "$dir/$file" на другие хосты
          ................
        ;;
      esac
    done
) &
----------------------------

qwe ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.