AIX и DNS


В этой теме 10 ответов, 5 участников, последнее обновление  Alex 5 года/лет назад.

  • Автор
    Сообщения
  • #17240

    Alexey Isaev
    Участник

    Столкнулся с интересной проблемой, возможно кто-то подскажет.
    В какой-то момент на системе начались тормоза прикладного софта(Netbackup) — загружается и отрабатывает раз в 5 дольше.
    Путем чтения док пришел к выводу, что проблема поидее в определении ip-адресов, НО в /etc/resolv.conf прописаны работающие dns-сервера
    bash-3.2# cat /etc/netsvc.conf | grep -v «#»
    hosts = local, bind
    bash-3.2# cat /etc/resolv.conf
    nameserver 172.16.0.2
    nameserver 172.16.0.4
    nameserver 172.16.0.5

    bash-3.2# nslookup http://www.ru
    Server: 172.16.0.2
    Address: 172.16.0.2#53

    Non-authoritative answer:
    Name: http://www.ru
    Address: 194.87.0.50

    В какой-то момент после двухдневных мучений выяснил что третий dns-сервер(172.16.0.5) выключен и после того как я убрал его из resolv.conf все нормализовалось.

    Как я понимаю, при определении адреса система сначала обращается к первой записи, ресолвит с неё и если днс-сервер не отвечает, уже тогда обращается в следующему серверу.

    Отсюда вопрос — как правильно работает ресолвинг в aix и это бага или фича?
    поиск по докам ничего не дал (

    bash-3.2# oslevel -s 6100-07-01-1141

    буду благодарен за помощь

  • #17242

    Michael
    Участник

    У Вас вообще-то система лезет сначала в /etc/hosts, а только потом в resolv.conf

    Не вижу в resolv.conf строки domain хотя, может быть, она Вам и не сильно нужна.

  • #17243

    andrewk
    Участник

    во-первых, пишите bind4 вместо bind. я думаю, что IPv6 Вам пока не особо нужен.
    во-вторых, покопайте в сторону netcd.conf и netcd.
    в-третьих, добавьте теперь уже документированную опцию timeout — options timeout:1
    в-четвертых, AIX должен запрашивать DNS-сервера в порядке, который указан в /etc/resolv.conf, до тех пор, пока ему не ответит какой-либо из них сервер. Т.е. в Вашем случае, он должен сначала запросить 172.16.0.2 2 раза (дефолтное значение attempts) с таймаутом 5 секунд каждый раз, потом также 172.16.0.4, потом 172.16.0.5, после чего выдать ошибку, если ничего не разрезолвлено. Итого, максимальная задержка в вашем случае — 2 x 5 x 3 = 30 секунд на каждый DNS-запрос.

  • #17244

    Alexey Isaev
    Участник

    /etc/hosts тоже заполнен по самое небалуйся, там прописаны основные хосты, но при этом тормоза-то наблюдались! Хотя в том-же hosts были прописаны и master и media сервера от netbackup — то есть ему и не нужно было обращаться к днс-серверам
    вот в этом и непонятка

  • #17245

    Alexey Isaev
    Участник

    по 4-му пункту — так должно работать, но не работает — иначе приложения на запросах не тормозили-бы. да, за время изучения проблемы Lpar два раза перезагружался(тестирование было) — поэтому про какие-то кэши врядли можно говорить
    по netcd- сейчас ознакомлюсь, спасибо

  • #17246

    andrewk
    Участник

    то, что у Вас в /etc/netsvc.conf стоит hosts=local,bind, на самом деле еще не означает, что конкретное приложение будет работать именно в данном порядке. Во-первых, переменная NSORDER имеет более высокий приоритет, чем netsvc.conf, во-вторых, приложение может использовать свой libresolv, а не тот, который идет с AIX — и тогда вообще никто ничего сказать не может.

    Что конкретно в Вашем случае происходило, проверить очень просто — добавьте обратно третий сервер в /etc/resolv.conf, после это запускайте:

    RES_OPTIONS=debug host http://www.ru

    и сравнивайте с выводом той же команды без 3го сервера в /etc/resolv.conf

  • #17247

    Alexey Isaev
    Участник

    bash-3.2# RES_OPTIONS=debug host http://www.ru
    ;; res_setoptions(«debug», «env»)..
    ;; debug
    ;; calling process id = 12648530
    ;; res_nquerydomain(www.ru, , 1, 1)
    ;; res_query(www.ru, 1, 1)
    ;; res_nmkquery(QUERY, http://www.ru, IN, A)
    ответы идентичные и логичные — запрашивается сначала первый сервер
    По поводу приложений — оба приложения начинают тормозить(oracle agent, netbackup) из чего можно сделать вывод что они обращаются к одной библиотеке- стандартной.

    ;; res_send()
    ;; ->>HEADER<>HEADER<<- opcode: QUERY, status: NOERROR, id: 31752
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; http://www.ru, type = A, class = IN
    http://www.ru. 2m18s IN A 194.87.0.50
    http://www.ru is 194.87.0.50
    bash-3.2# vi /etc/resolv.conf
    bash-3.2# RES_OPTIONS=debug host http://www.ru
    ;; res_setoptions("debug", "env")..
    ;; debug
    ;; calling process id = 12648546
    ;; res_nquerydomain(www.ru, , 1, 1)
    ;; res_query(www.ru, 1, 1)
    ;; res_nmkquery(QUERY, http://www.ru, IN, A)
    ;; res_send()
    ;; ->>HEADER<>HEADER<<- opcode: QUERY, status: NOERROR, id: 653
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; http://www.ru, type = A, class = IN
    http://www.ru. 1m39s IN A 194.87.0.50
    http://www.ru is 194.87.0.50

  • #17248

    andrewk
    Участник

    так он и в том, и в другом случае ответил правильно, насколько я вижу.
    У меня есть большое подозрение, что Oracle Agent и NetBackup пытаются отрезолвить какой-то один им известный адрес, который должен быть прописан в /etc/hosts, но там не прописан. Они лезут в DNS, первые 2 сервера не отвечают им ни success, ни failure, а что-то другое (может они так настроены?), AIX лезет на 3й сервер, который сейчас не доступен. На нем AIX зависает в соответствии с дефолтными настройками на 10 секунд, потом возвращает NOT FOUND Oracle’у. Когда 3й сервер не прописан в конфиге, исчезает 10-секундная задержка на резолвинг, Oracle быстрее получает свой NOT FOUND и сам решает, что ему делать дальше.
    Я бы поставил tcpdump -s 1500 -X -w /tmp/tcpdump.out port 53 на пару часов повесеть, а потом бы еще пару часиков потратил бы на анализ вывода — может что-нибудь да и найдется интересное… Но делать это придется Вам 😉

  • #17249

    Alexey Isaev
    Участник

    попробую, но мне кажется маловероятным такой вариант. Все что нужно прописано в /etc/hosts, да и dns, хоть и микрософтовский, но вроде стандартно настроен и отвечает правильно

  • #17250

    uxTuaHgp
    Участник

    мы в resolv.conf
    добавили
    options rotate
    options timeout:1
    options attempts:1

    Немного лучше стало при отказе одного из серверов имен.

  • #17270

    Alex
    Участник

    попробую, но мне кажется маловероятным такой вариант

    Да нет, именно так всё и происходит. Вторгаюсь в область предположений: майкрософтовские name-сервера обычно отличаются тем, что отвечают SERVFAIL, если вы резолвите не FQDN. Что вынуждает перейти к следующему name-серверу (в отличие от NXDOMAIN, скажем).

    А уж в оракле масса укромных мест для того, чтобы прописать имена хостов, которые потом придётся резолвить. Вот навскидку TCP_NODES в sqlnet.ora, например.

Для ответа в этой теме необходимо авторизоваться.