a-zazell Опубликовано 12 декабря, 2013 · Жалоба Здравствуйте, так происходит в нашем олимпийском городе, что точки в разных концах города, где расположены DNS сервера, на длительное время остаются без питания. Периоды восстановления сервиса (время на установку генератора и переключение) не большой, но он есть, и у бОльшей части клиентов не работает интеренет. Думаю на VDS'ках поднять bind'ы + zebra, а IP DNS сервиса на loopback вешать и делиться маршрутами с Core Router (схема во вложении). Может быть есть более простой вариант или другая логика, подскажите, кто сталкивался? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Painter Опубликовано 12 декабря, 2013 (изменено) · Жалоба Мы добавили DNS сервера в кластер с помощью heartbeat. Сервера общаются между собой, один основной, второй на подхвате (конфиги синхронизируются с помощью rsync). Как только резервный сервер перестает видеть сообщения основного, он прописывает себе IP и запускает сервис DNS. При восстановлении связности срабатывает защита от split-brain и днс перезапускается снова на основном сервере. Еще можно использовать Pacemaker для создания кластера, это намного более крутая штука чем heartbeat, но и более трудная в конфигурировании. Еще есть Anycast DNS, DNS запросы будут приходить ближайшему доступному серверу. У вас примерно тоже самое получилось. Изменено 12 декабря, 2013 пользователем Painter Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a-zazell Опубликовано 12 декабря, 2013 (изменено) · Жалоба Еще есть Anycast DNS, DNS запросы будут приходить ближайшему доступному серверу. У вас примерно тоже самое получилось. Ох, с кластерами не работал пока, вот почитаю про anycast. Изменено 12 декабря, 2013 пользователем a-zazell Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Painter Опубликовано 12 декабря, 2013 · Жалоба Heartbeat на самом деле легко настраивается. Вот пример: 10.10.10.1 и 10.10.10.2 - ip адреса, на которые сервера будут посылать keep-alive сообщения 10.10.10.99 - ip адреc, который должен переезжать на другие сервера в случае фейла ns1 и ns2 - хостнеймы предпочтительный сервер для старта - ns1 apt-get install heartbeat touch /etc/ha.d/authkeys touch /etc/ha.d/ha.cf touch /etc/ha.d/haresources chmod 0600 /etc/ha.d/authkeys -/etc/ha.d/authkeys auth 1 1 md5 your-cool-password -/etc/ha.d/ha.cf use_logd yes autojoin none crm off udpport 694 keepalive 2 deadtime 15 warntime 20 initdead 20 ucast eth1 10.10.10.1 ucast eth1 10.10.10.2 auto_failback off node ns1 node ns2 - /etc/ha.d/haresources ns1 IPaddr2::10.10.10.99/24/eth1 bind9 Попробуйте, посмотрите. Только обязательно протестируйте на тестовом стенде, а то может случиться фейл. Так же убедитесь, что ваши роутеры нормально обрабатывают gratuitous arp пакеты, а то они будут продолжать слать пакеты на другой мак-адрес. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a-zazell Опубликовано 12 декабря, 2013 · Жалоба Попробуйте, посмотрите. Только обязательно протестируйте на тестовом стенде, а то может случиться фейл. Так же убедитесь, что ваши роутеры нормально обрабатывают gratuitous arp пакеты, а то они будут продолжать слать пакеты на другой мак-адрес. Спасибо, попробую. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EDA_SPB Опубликовано 12 декабря, 2013 · Жалоба А нельзя пользователям сразу 3 днс отдавать и все? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 декабря, 2013 · Жалоба На самом деле, можно с разных DNS анонсить один и тот же IP. Даже если где-то и будет 2 маршрута в FIB, то всё равно сейчас всё балансируется per-flow, а не per-packet, поэтому никаких проблем не будет. Для связи с внешним миром у каждого DNS-а должен быть свой уникальный IP. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a-zazell Опубликовано 12 декабря, 2013 · Жалоба Я решил делать по своей схеме во вложении, т.к. для heartbeat нужен общий VLAN (насколько я понял), а гонять его по всей сети не удобно. Пока настроил zebra+ospfd, /32 на lo:1 отдается. По данной схеме будут подниматься, пока, только кэширующие сервера для клиентов. Авторитарные плавное съедут на другие IP. По ходу дела возникли вопросы: С каким IP будут отдаваться пакеты ответа DNS сервиса (lo:1 или смотрящего в сеть), и будут ли они восприниматься клиентом (Хотя query refused видел ...) IPv6 ... Пока тянутся vlan по сети, без маршрутизации На вопрос: "почему не добавить еще DNS?" - схема Master (primary) + Slave (secondary) живет давно, очень менять параметры на существующую базу клиентов нет смысла. В ситуации сбоя обоих серверов, попытка "донести" настройку доп. публичного DNS 8.8.8.8 встречает непонимание вопроса в 95% случаев. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 12 декабря, 2013 · Жалоба Когда я решал подобную задачу, то просто установил необходимое количество DNS серверов и указал на них одинаковые IP адреса, по OSPF они разлетелись с разными метриками, заодно получилась равномерная загрузка всего оборудования. При выходе из строя одного, на него перестает идти пинг, и тут же пропадает статический маршрут, по которому его адрес и анонсируется. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 13 декабря, 2013 · Жалоба С каким IP будут отдаваться пакеты ответа DNS сервиса (lo:1 или смотрящего в сеть) На какой IP придёт запрос, с такого же и вернётся, по крайней мере это дефолтный бихейвор для bind и pdns_recursor и для всех приложений, которые используют стандартные сокеты. Исходящий для осуществления рекурсии можно задать явно (или он будет выбран исходя из src по таблице роутинга) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a-zazell Опубликовано 13 декабря, 2013 · Жалоба При выходе из строя одного, на него перестает идти пинг, и тут же пропадает статический маршрут, по которому его адрес и анонсируется. Ммм, а вы статику куда направляли? У вас на RB статика с ping check? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 16 декабря, 2013 · Жалоба При выходе из строя одного, на него перестает идти пинг, и тут же пропадает статический маршрут, по которому его адрес и анонсируется. Ммм, а вы статику куда направляли? У вас на RB статика с ping check? На адрес DNS сервера, если пинг отправляется с ближайшего, то у него самая маленькая метрика и пинг только от его адреса пойдет, если сервак завис, или с него атаку сделали=) и он блокируется, то пинг перестает идти, маршрут делается неактивный и он пропадает из анонсов. Но для этого требуется прописывать подсеть например /30 на каждом устройстве, к которому ДНС сервер подключен. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a-zazell Опубликовано 16 декабря, 2013 · Жалоба Запускал схему с ospfd+lo, работает (=. VDS 5G ROM, 256M RAM, 1CPU - вполне достаточно ... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a-zazell Опубликовано 21 декабря, 2013 · Жалоба Запустил по схеме во вложении. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vlad11 Опубликовано 21 декабря, 2013 (изменено) · Жалоба Схема anycast DNS и синхронизацией по ssh. Еще желательно добавить маршрут к 1.1.1.1/32 по OSPF между switch L3 и ns1-[1,2] Вместо синхронизации соорудите мастер и два слейва ДНС. 1) Ресолвинг внутренних зон через slave зоны 2) Ресолвинг внешних зон (PTR, свои домены) через slave зоны. (можно еще их вынести на внешние секондари ДНС) 3) Все остальное - напрямую. Изменено 21 декабря, 2013 пользователем vlad11 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a-zazell Опубликовано 25 декабря, 2013 · Жалоба Столкнулся с проблемой, на одном из серверов не резолвится внешняя зона. Решено запуском bind9 на всех интерфейсах, а не только на lo (пакеты из вне не доходили до lo). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...