Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Несколько ip на хосте, как избежать Round-Robin в Bind  (Прочитано 2669 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн arma

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Добрый день.
Интересует очень насущный порос. Когда мы в бинде создаем 2 а-записи на хост, они выдаются рулеткой. Хотелось бы достич эффекта, когда если одни ip не доступен, сайт открывался бы со второго. То есть выдавался бы не случайный ip, а сразу 2. Как это реализовать? Одна а-запись с айпишниками через запятую? :) И работает ли это вообще?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28464
    • Просмотр профиля
Не путайте DNS и HTTP.
Что там выдаёт DNS, имеет левое отношение к тому, куда коннектится HTTP клиент.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн arma

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Не путайте DNS и HTTP.
Что там выдаёт DNS, имеет левое отношение к тому, куда коннектится HTTP клиент.
Я не путаю. http клиент перед конектом разрешает имя. Был где-то вброс, что если ему отдавать 2 ip, и первый не доступен - он будет стучатся на следующий. Хотелось бы, чтобы хотя бы кто-нибудь подтвердил/опроверг это утверждение, чтоб я не думал о легких путях :)

ПС я понимаю, что "http клиент перед конектом разрешает имя" это не совсем верно, или совсем не верно, не суть
« Последнее редактирование: 18 Ноября 2015, 13:32:08 от arma »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28464
    • Просмотр профиля
Это не вброс, это стандарт.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн arma

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Это не вброс, это стандарт.
То есть это так и есть? Можно таким образом добиться отказоустойчивости?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28464
    • Просмотр профиля
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн kobaltd

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
все очень просто
нужно создать 2 одинаковые зоны, но с разными ВНЕШНИМИ ip привязанными к одному и тому же имени
допустим есть 2 ip а.а.а.а и b.b.b.b в одной настройке www.my.ru = a.a.a.a в другой www.my.ru = b.b.b.b дальше в бинде сказать что для запросов пришедших на a.a.a.a для зоны my.ru брать данные из первого конфига, для запросов на b.b.b.b отдавать из второго. Где делегируете зону прописать и a.a.a.a и b.b.b.b в зоне прописать кеширование на таймоут который вы готовы увидеть в виде простоя. Логика проста - если клиент "разрешит" имя с адреса а.а.а.а - то этот канал жив и он бегает по нему, если "разрешит" с адреса b.b.b.b - то и бегать будет по этому каналу.
По другому никак.

view "canal1" {
 recursion no;
 match-destinations { a.a.a.a; };

zone "." {
type hint;
file "/etc/bind/Forward/root";
};

zone "my.ru" {
type master;
allow-query {0/0;};
file "/etc/bind/Forward/my.ru.canal1";
};
};

view "canal2" {
 recursion no;
 match-destinations { b.b.b.b; };

zone "." {
type hint;
file "/etc/bind/Forward/root";
};

zone "my.ru" {
type master;
allow-query {0/0;};
file "/etc/bind/Forward/my.ru.canal2";
};
};

/etc/bind/Forward/my.ru.canal1
$TTL 300
@ IN SOA ns.my.ru. root.my.ru. (
201210181350 ; Serial
900 ; Refresh
600 ; Retry
86400 ; Expire
3600);
IN NS ns
IN NS ns1
IN A a.a.a.a
ns A a.a.a.a
ns1 A b.b.b.b
server A a.a.a.a
www CNAME server

/etc/bind/Forward/my.ru.canal2
$TTL 300
@ IN SOA ns.my.ru. root.my.ru. (
201210181350 ; Serial
900 ; Refresh
600 ; Retry
86400 ; Expire
3600);
IN NS ns
IN NS ns1
IN A b.b.b.b
ns A b.b.b.b
ns1 A a.a.a.a
server A b.b.b.b
www CNAME server



как то так (по памяти - когда делал)
« Последнее редактирование: 19 Ноября 2015, 17:57:43 от kobaltd »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28464
    • Просмотр профиля
kobaltd, это вот к чему было написано?… Какие две зоны?… Кому надо это настраивать? Посетителям сайта? Каждому?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн kobaltd

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
причем тут посетители. Держатель сервера это должен настроить на своем бинде и отделегировать свой домен на свой настроенный бинд.
« Последнее редактирование: 20 Ноября 2015, 00:19:02 от kobaltd »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28464
    • Просмотр профиля
kobaltd, вы топик вообще читали?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн kobaltd

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
да читал - человек спрашивает как добиться отказоустойчивой схемы разрешения доменного имени при двухи и более каналах связи (реальных ip) на сервере. Я ответил. Может Ваш способ и работает - подсовывания двух "А" записей в БИНД, двух ip на А. Но на других днс серверах, к примеру мелкомягком, это не сработает. + Не любой софт в принципе отработает 2 ip на имя. Мной же предложенный способ принципе позволяет это реализовать на любом ДНС сервере (софте) да и + еще в том что можно "играться" с доступностью других имен и их ip в зависимости от канала с которо приходит запрос.

сейчас дополнительно проверил работу с броузерами, а не "мануалами"
1) две А записи - крутятся по кругу
2) 2 ip на A - вообще не перевариваются
3) через - srv - так же не перевариваются (из tcpdump видно что дергается только А)

Так что я не знаю что там написано в Вашем мануале. А в реальности это или днс балансировка, или EGP, или отдавать на каждом канале свой вариант зоны  - я других вариантов не знаю. Если Вы знаете поделитесь конкретным примером рабочей настройки - тоже решал подобную задачу, для себя остановился на последнем способе - поэтому его и описал. 
« Последнее редактирование: 20 Ноября 2015, 01:14:01 от kobaltd »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28464
    • Просмотр профиля
Вы, конечно, в курсе, что DNS балансировка имеет левое отношение к разрешению имён?
Ваш вариант будет давать тот же самый round-robin, только с задержкой до нескольких часов.
То есть сайт будет несколько часов лежать, пока все сервера до меня(клиента) не переключатся на второй DNS.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн kobaltd

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
Вы, конечно, в курсе, что DNS балансировка имеет левое отношение к разрешению имён?
Ваш вариант будет давать тот же самый round-robin, только с задержкой до нескольких часов.
То есть сайт будет несколько часов лежать, пока все сервера до меня(клиента) не переключатся на второй DNS.

Вот тут Вы абсолютно не правы
1) есть понятие TTL сделайте его хоть 5 секунд для зоны, и ваш dns не будет хранить его в кэше - т.е. клиенты будут каждые 5 секунд занового разрешать адрес.
2) второе - вы знакомы в понятием первичного и вторичного днс? у Вас что их крутит по кругу постоянно? Нет так и тут - когды Вы отделегируете свою зону на свои ДВА ip другие DNS и клиенты будут пытаться разрешать имя с ПЕРВОГО доступного DNS и только при не возможности со второго и так далее.

И в конце концов - Вы тут теории разводите и манулы выкладывайте - пусть у Вас и не работает. А у меня данная схема работала 4 года на лине и счас уже почти 2 года на мелкомягких.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28464
    • Просмотр профиля
TTL 5 секунд будет создавать лишнюю нагрузку на все сервера.
Многие сервера имеют минимальный TTL кеша, и чихать хотели на ваши извращения.
И, да, представьте себе! Сюрприз!
$ dig NS rootdir.org.

;; ANSWER SECTION:
rootdir.org.            749     IN      NS      ns1.ht-systems.ru.
rootdir.org.            749     IN      NS      ns2.ht-systems.ru.

$ dig NS rootdir.org.

;; ANSWER SECTION:
rootdir.org.            748     IN      NS      ns2.ht-systems.ru.
rootdir.org.            748     IN      NS      ns1.ht-systems.ru.

Понятия "первичный" и "вторичный" NS чисто умозрительные.
В стандарте их просто нет.
« Последнее редактирование: 20 Ноября 2015, 11:26:11 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн kobaltd

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
Во первых если кто то для себя родимого, настроил игнор TTL зоны - то он сам "умный" - этот параметр придуман не просто так и не красного словца. Второе если вы дергаете nslookup то у вас всегда будут крутить вывод, только nslookup и dns forward for zone это абсолютно разные вещи - и если вы считаете что регистратор отдает выши зоны по nslookup, а не dns forward - то вы сильно заблуждаетесь.

Все спорить больше не будут - сидете со своей неработающей "теорией и стандартом", а со своим работающим решение, а автор темы пусть сам решает за себя чем ему пользоваться.
« Последнее редактирование: 20 Ноября 2015, 11:33:33 от kobaltd »

 

Страница сгенерирована за 0.081 секунд. Запросов: 25.