alibek Posted October 31, 2014 Допустим у меня есть три сервера, 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 Но мне почему-то вспоминается, что делать несколько A-записей для одного IP-адреса не рекомендуется. Как минимум, будут проблемы с проверкой обратной зоны. Никаких проблем не будет. А вот делать NS как CNAME - не рекомендуется, поскольку глюков огрести с этим можно много и довольно вероятно. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted October 31, 2014 Это я указал для примера. Я раньше так однажды сделал, с глюками столкнулся и больше так не делаю. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted October 31, 2014 ОК, я бы еще не рекомендовал писать 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 Кстати, по обратной зоне тоже пара вопросов. Разве может на один 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 У меня получилось, смотрите: 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 Понятно, спасибо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted November 2, 2014 anycast + ospf. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted November 2, 2014 Anycast и ospf? Шутить изволите? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted November 3, 2014 Anycast и ospf? Шутить изволите? Нет. А Вы первый раз слышите эти два слова? или вместе? :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ipaddr.ru Posted November 4, 2014 :) нет. Просто выбор инструментов для меня кажется необычным. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted November 4, 2014 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 Допустим у меня есть три сервера, 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 У меня прекрасно крутит. Только в конфиге в секции server нужно явно указать, чтобы использовать round-robin. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sirmax Posted November 6, 2014 Есть мнение что в случае с раундробином надо заставить ДНС отдавать одну запись из списка а не весь список и потом клиент выбирает что использовать. Клиенты могут "любить" младьшие адреса, в результате отдавая список мы надеемся на клиента - а это уже не гуд. Я в пауэрднсе это делал процедуркой в MySQL, может есть другие пути. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted November 6, 2014 Есть мнение что в случае с раундробином надо заставить ДНС отдавать одну запись из списка а не весь список и потом клиент выбирает что использовать. Клиент подключается к кому может, по очереди из всего списка. Если вам нужно балансировать то это не к ДНС. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted November 7, 2014 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...