AIX и DNS

Просмотр 10 веток ответов
  • Автор
    Сообщения
    • #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, например.

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