alibek Posted October 31, 2014 · Report post Допустим у меня есть три сервера, srv1, srv2, srv3. На этих серверах поднят одинаковый набор сервисов. Допустим DNS, FTP и NTP. Я хочу распределить нагрузку и заодно настроить отказоустойчивость. Для первого я использую RR, для второго обеспечиваю синхронизацию данных (либо настройками самого ПО, если оно это умеет, либо самописными скриптами). Как должна быть задана зона, чтобы RR работал правильно? Допустим я делаю так: ;base srv1 A x.y.z.1 srv2 A x.y.z.2 srv3 A x.y.z.3 ns1 CNAME srv1 ns2 CNAME srv2 ns3 CNAME srv3 ftp1 CNAME srv1 ftp2 CNAME srv2 ftp3 CNAME srv3 ntp1 CNAME srv1 ntp2 CNAME srv2 ntp3 CNAME srv3 ;round-robin ns CNAME srv1 CNAME srv2 CNAME srv3 ntp CNAME srv1 CNAME srv2 CNAME srv3 ftp CNAME srv1 CNAME srv2 CNAME srv3 Но так не работает, DNS-сервер (что BIND, что NSD) сообщает, что для одного имени нельзя задавать несколько CNAME. Если сделать так: ;round-robin ns A x.y.z.1 A x.y.z.2 A x.y.z.3 ntp A x.y.z.1 A x.y.z.2 A x.y.z.3 ftp A x.y.z.1 A x.y.z.2 A x.y.z.3 то в этом случае ошибок не выдается и DNS нормально запускается. Но мне почему-то вспоминается, что делать несколько A-записей для одного IP-адреса не рекомендуется. Как минимум, будут проблемы с проверкой обратной зоны. Посоветуйте, как правильно такое сделать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted October 31, 2014 · Report post Но мне почему-то вспоминается, что делать несколько A-записей для одного IP-адреса не рекомендуется. Как минимум, будут проблемы с проверкой обратной зоны. Никаких проблем не будет. А вот делать NS как CNAME - не рекомендуется, поскольку глюков огрести с этим можно много и довольно вероятно. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted October 31, 2014 · Report post Это я указал для примера. Я раньше так однажды сделал, с глюками столкнулся и больше так не делаю. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted October 31, 2014 · Report post ОК, я бы еще не рекомендовал писать round-robin как RR, поскольку для DNS RR - это почти всегда resource record :) А обратную зону мало кто проверяет, да никто и не мешает нескольким адресам поставить в соответствие одно имя. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted October 31, 2014 · Report post Кстати, по обратной зоне тоже пара вопросов. Разве может на один IP-адрес ссылаться несколько записей? То есть можно ли написать так? 10 PTR www.domain.ru. 10 PTR mail.domain.ru. В BIND у меня это не получалось. И как в обратную зону добавляют большие объемы записей? Допустим у меня есть пул динамических адресов /16 (x.y.0.0-x.y.255.255). И я хочу, чтобы для этого пула автоматически создавались A и PTR записи в формате x.y.a.b<>pool-a-b.domain.ru. В BIND можно использовать макрос $GENERATE. Но это именно что макрос, он на самом деле генерирует огромную зону на 64к записей и это прекрасно видно на slave-серверах, которые загружают ее целиком. А можно ли настроить DNS-сервер таким образом, чтобы он автоматически формировал ответ, если запись напрямую не описана в зоне? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted October 31, 2014 · Report post У меня получилось, смотрите: 6.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.6.4.1.1.0.0.2.ip6.arpa. 3600 IN PTR test1.record.6.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.6.4.1.1.0.0.2.ip6.arpa. 3600 IN PTR test.record. А можно ли настроить DNS-сервер таким образом, чтобы он автоматически формировал ответ, если запись напрямую не описана в зоне? В BIND10 такое, насколько я помню, обещали. Но с тех пор утекло много воды, сменились разработчики, руководство, поменяли вообще весь проект и я как-то за ним следить перестал. Думаю, что для реверсного DNS нужна поддержка DNSSEC, а без подписанной большой зоны DNSSEC нормально не работает, разве что с opt-out (как в .com, например. но чего это им стоило!). В конце концов, 64к записей - это довольно-таки скромная зона. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted October 31, 2014 · Report post Понятно, спасибо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted November 2, 2014 · Report post anycast + ospf. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted November 2, 2014 · Report post Anycast и ospf? Шутить изволите? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted November 3, 2014 · Report post Anycast и ospf? Шутить изволите? Нет. А Вы первый раз слышите эти два слова? или вместе? :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted November 4, 2014 · Report post :) нет. Просто выбор инструментов для меня кажется необычным. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted November 4, 2014 · Report post anycast + ospf. А какая связь с DNS? Или имеется ввиду отказоустойчивость и распределение нагрузки делать с помощью таких способов, а не DNS Round-Robin? Помоему это только для контролируемой сети подходит. А запросы извне таким образом не распределить. А round-robin это дешево и сердито. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MATPOC Posted November 5, 2014 · Report post Допустим у меня есть три сервера, srv1, srv2, srv3. На этих серверах поднят одинаковый набор сервисов. Допустим DNS, FTP и NTP. Я хочу распределить нагрузку и заодно настроить отказоустойчивость. Для первого я использую RR Если сделать так: ;round-robin ntp A x.y.z.1 A x.y.z.2 A x.y.z.3 то в этом случае ошибок не выдается и DNS нормально запускается. Но мне почему-то вспоминается, что делать несколько A-записей для одного IP-адреса не рекомендуется. Посоветуйте, как правильно такое сделать? При внедрении у себя unbound обнаружил, что unbound требует расширенную форму указания нескольких адресов, иначе просто не крутит: ntp 0 A 1.2.3.4 0 A 1.2.3.5 0 A 1.2.3.6 0 A 1.2.3.7 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted November 5, 2014 · Report post У меня прекрасно крутит. Только в конфиге в секции server нужно явно указать, чтобы использовать round-robin. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sirmax Posted November 6, 2014 · Report post Есть мнение что в случае с раундробином надо заставить ДНС отдавать одну запись из списка а не весь список и потом клиент выбирает что использовать. Клиенты могут "любить" младьшие адреса, в результате отдавая список мы надеемся на клиента - а это уже не гуд. Я в пауэрднсе это делал процедуркой в MySQL, может есть другие пути. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted November 6, 2014 · Report post Есть мнение что в случае с раундробином надо заставить ДНС отдавать одну запись из списка а не весь список и потом клиент выбирает что использовать. Клиент подключается к кому может, по очереди из всего списка. Если вам нужно балансировать то это не к ДНС. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted November 7, 2014 · Report post anycast + ospf. А какая связь с DNS? Или имеется ввиду отказоустойчивость и распределение нагрузки делать с помощью таких способов, а не DNS Round-Robin? Помоему это только для контролируемой сети подходит. А запросы извне таким образом не распределить. А round-robin это дешево и сердито. Чуть-чуть расширьте кругозор. Round-Robin - имеет несколько недостатков: 1) сервис ДНС как точка отказа 2) один неработающий IP из списка будет давать ошибку клиенту. При 3-х IP - ошибка будет для трети запросов. Так как в большинстве случаев, у провайдера только одна точка терминации абонентского траффика, то Round-Robin здесь вообще бесполезен. У оставшихся - уже несколько точек терминации абонентского траффика. У кого-то есть автоматизазация переключения сбойнувшего оборудования, а у кого-то нет. Вот тут предлагаю использовать anycast сеть для размещения на локалхост интерфейсах этих точек терминации абонентского траффика. Если какой-то сервис выходит со строя, то достаточно удалить IP с локалхоста и по OSPF получить живой маршрут к этому IP с соседней точки и перенаправлять туда запросы. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...