Перейти к содержимому
Калькуляторы

Балансировка между серверами ДНС

Добрый день.

Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS.

Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>> все будут ломиться на примари DNS.

Разок не получат ответ и перейдут на второй сервер. К стати, в DHCP нет примари/не примари. ДНС отдаются списком без выделения какой либо роли. По RFC, после получения адреса, ДНС, к которому пойдёт первый запрос, должен выбираться случайно, если ДНС серверов пришло более одного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS.

Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу.

Какой DHCP?

Почему сегментировать не можете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS.

Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу.

Какой DHCP?

Почему сегментировать не можете?

 

DHCP на рутере Cisco. Клиент поставил задачу, что все абоненты (несколько тысяч человек) должны быть в одной сети.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поставьте несколько DNS серверов с одинаковыми IP адресами в разных участках сети - если терминация всей подсети будет происходить не в одном месте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Клиент поставил задачу, что все абоненты (несколько тысяч человек) должны быть в одной сети.

ссзб

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Клиент поставил задачу, что все абоненты (несколько тысяч человек) должны быть в одной сети.

ссзб

Это понятно, но головняк-то мой получится...

 

Поставьте несколько DNS серверов с одинаковыми IP адресами в разных участках сети - если терминация всей подсети будет происходить не в одном месте.

 

В одном. Грубо говоря, громадная площадка с толпой людей:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В одном. Грубо говоря, громадная площадка с толпой людей:)

Как вариант можно настроить средствами anycast-маршрутизации.

Настройте на лупбеках серверов одинаковые адреса, добавьте эти интерфейсы в DNS-сервер (в смысле разрешите отвечать на запросы с адреса лупбека), на маршрутизаторе прописывайте маршруты на адрес лупбека на два эти сервера, и выдаете клиентам адреса лупбеков в качестве DNS сервера. Можно вместо статики настроить динамическую маршрутизацию, принцип не меняется.

Маршрутизатор должен уметь ECMP load-balancing и балансировку на /32 сети (последний пункт поддерживают не все L3-свитчи). Из недостатков - нет связи между маршрутом на сервере и статусом DNS сервера: при остановке DNS на одном из серверов трафик все равно будет направляться к нему.

 

Разок не получат ответ и перейдут на второй сервер.

В разных ОС по-разному, Windows вроде бы посылает запросы на оба сервера одновременно. А FreeBSD для определения недоступности DNS-сервера требуется несколько минут, правда в некоторых приложениях своя реализация резолвинга, более шустрая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Windows вроде бы посылает запросы на оба сервера одновременно.

Это не так. WireShark в руки.

 

А FreeBSD для определения недоступности DNS-сервера

Это не в ОС. Это в glibc.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

днс сервера в этой сети будут не самым слабым местом. Где-то на последнем месте

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8.

в одном бродкасте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS.

Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу.

Я в дхцп делаю роундробин выдачу двух днс по dhcprequest.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я в дхцп делаю роундробин выдачу двух днс по dhcprequest.

 

Как?

 

По теме, поднимите unbound, кеш побольше, чем по-умолчанию и, собственно, всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как?

Меняю местами первичный и вторичный сервера в строке опции днс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поставьте несколько DNS серверов с одинаковыми IP адресами в разных участках сети - если терминация всей подсети будет происходить не в одном месте.

Совет курильщика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS.

Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу.

 

top - 11:00:18 up 8 days, 20:48,  1 user,  load average: 0.18, 0.16, 0.14
Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.1 us,  2.7 sy,  0.0 ni, 91.2 id,  0.0 wa,  0.0 hi,  1.0 si,  0.0 st
KiB Mem:   1018248 total,   646148 used,   372100 free,   138300 buffers
KiB Swap:     8188 total,      140 used,     8048 free.    83220 cached Mem

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
10554 named     20   0  256244 121176   3036 S  7.6 11.9   3:11.12 named
  11 root      20   0       0      0      0 S  0.7  0.0  39:43.11 rcuos/0
 841 root      20   0  452744   9928   6900 S  0.7  1.0  76:29.90 NetworkManager
  10 root      20   0       0      0      0 S  0.3  0.0  35:16.52 rcu_sched
 822 root      20   0  186916   4576   3664 S  0.3  0.4   9:29.94 vmtoolsd
2462 mysql     20   0  907468  91436   7748 S  0.3  9.0   4:58.56 mysqld
10590 root      20   0  123676   1608   1112 R  0.3  0.2   0:00.09 top
   1 root      20   0  129484   3928   2308 S  0.0  0.4   0:23.76 systemd
   2 root      20   0       0      0      0 S  0.0  0.0   0:00.10 kthreadd
   3 root      20   0       0      0      0 S  0.0  0.0   2:23.89 ksoftirqd/0
...

Полторы тысячи абонентов живут в интернете. Виртуалка под VMWare ESXi. RPZ с блеклистом на список роскомнадзора.

Короче, проблема, судя по всему, вымышленная. Для отказоустойчивости можно держать два сервера. Балансировать есть смысл при десятках тысячах абонентов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2ShyLion реализацию rpz покажите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2ShyLion реализацию rpz покажите?

 

Там все просто как 3 кпейки.

 

У меня хост, запрашивающий данные из РКН и DNS сервер разные, поэтому на первом мастер зоны, а на DNS сервере-слейв.

Скрипт после парсинга пинает мастера: rndc reload zapret, а дальше все само. Серийник только не забудь увеличивать ( уменя тупо time() ).

 

Мастер:

zone "zapret" IN {
       type master;
       file "zapret.zone";
       allow-transfer {
               slave_ip;
       };
       also-notify { slave_ip; };
       //это важно, там есть имена с подчеркиванием
       check-names ignore;
};

 

Файл зоны:

# head /var/named/zapret.zone
$ORIGIN zapret.
$TTL 1H
@       SOA     localhost.      root (1490176736 1h 15m 30d 2h)
       NS      localhost.
cannabay.org    A       127.0.0.1
*.cannabay.org  A       127.0.0.1
eoliaseeds.com  A       127.0.0.1
*.eoliaseeds.com        A       127.0.0.1
www.weedy.be    A       127.0.0.1
*.www.weedy.be  A       127.0.0.1
и т.д.

 

Сам сервер DNS:

options {
       вся обычная фигня...

       response-policy {zone "zapret"; };
};

zone "zapret" IN {
       type slave;
       masters { master_ip; };
       check-names ignore;
};

 

named ванильный из стандартного репозитория CentOS 7

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, а то у меня зонами обычными сделано, пухнет сильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Логирование:

logging {
       channel rpz {
               file "data/rpz.log" versions 7 size 1m;
               severity info;
               print-time yes;
       };
       category rpz { rpz; };
}

 

22-Mar-2017 15:57:22.707 client x.x.x.72#39667 (f-slots.org): rpz QNAME Local-Data rewrite f-slots.org via f-slots.org.zapret
22-Mar-2017 15:57:22.708 client x.x.x.72#39667 (casino-automats.com): rpz QNAME Local-Data rewrite casino-automats.com via casino-automats.com.zapret
22-Mar-2017 15:57:22.711 client x.x.x.72#39667 (slotosfera.com): rpz QNAME Local-Data rewrite slotosfera.com via slotosfera.com.zapret

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.