Application Start Script не работает.


Главная Форумы POWER Systems AIX/Hardware Application Start Script не работает.

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

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

    DanGer
    Участник

    Здравствуйте!

    Помогите понять кое-что относительно работы HACMP.

    [code]AIX 5.3 5300-07, HACMP 5.4[/code]

    Настроили двунодовый кластер. Были неровности, но в целом все работает.
    Меня беспокоит одно обстоятельство. При настройке кластера указывается стартовый сценарий для приложения. Этот же сценарий указывается в секции настройки мониторинга (Cleanup Method & Restart Method). Так вот, судя по логам старта кластера (/var/hacmp/log/hacmp.out), и по внешнему наблюдению, приложение стартует не из-за события «старт» (START), а посредством скрипта в мониторинге (событие RESTART). В то же время, при останове кластера, событие STOP работает корректно.

    [code]-bash-3.00# grep sv.start.sh /var/hacmp/log/hacmp.out
    RESTART=/usr/local/hacmp/sv.start.sh
    :server_restart_complete[+166] echo /usr/local/hacmp/sv.start.sh
    RESTART_SCRIPT=/usr/local/hacmp/sv.start.sh
    :server_restart_complete[+166] [[ -n /usr/local/hacmp/sv.start.sh ]]
    :server_restart_complete[+166] [[ -x /usr/local/hacmp/sv.start.sh ]]
    :server_restart_complete[+172] dspmsg scripts.cat 9335 server_restart_complete: Calling user specified restart method /usr/local/hacmp/sv.start.shn server_restart_complete /usr/local/hacmp/sv.start.sh
    server_restart_complete: Calling user specified restart method /usr/local/hacmp/sv.start.sh
    :server_restart_complete[+174] /usr/local/hacmp/sv.start.sh
    [/code]

    Объясните мне, пожалуйста, куда мне копать? Уже дня 3 убил.

  • #1812

    Дмитрий
    Участник

    Надо посмотреть hacmp.out и cluster.log раньше, когда стартует приложение.
    А по этому куску ничего не понятно.

  • #1813

    DanGer
    Участник

    А не подскажете, что именно искать в cluster.log? А то файл просто громадный.

  • #1814

    DanGer
    Участник

    А что надо искать в файле cluster.log?

  • #1815

    _KIRill
    Хранитель

    Общая логика такая: смотрите время на сервере. Запускаете кластер. Затем
    открываете cluster.log и ищете интересующее вас сообщение. Смотрите во сколько
    событие было зафиксировано. Затем, открываете hacmp.out. Ищете записи время начало которых
    соответсвует времени в cluster.log. Проматываете hacmp.out на пару-тройку экранов наверх
    и начинаете вдумчиво читать.

    ---As If, But Not---

  • #1819

    DanGer
    Участник

    А если я приложу куски логов, можете мне помочь? [file name=logs.txt size=16560]http://www.aixportal.ru/joom/media/kunena/attachments/legacy/files/logs.txt[/file]

    Attachments:
  • #1823

    Дмитрий
    Участник

    Хм. Видно, что приложение действительно рестартует. А почему,непонятно…

  • #1825

    DanGer
    Участник

    Где я только не искал ответов?! Можно сказать, все перерыл. Помогите, пожалуйста с данной проблемой!

  • #1829

    DanGer
    Участник

    Сегодня сделал эксперимент: вместо двух разных скриптов для запуска и оставнова, сделал один, с ключами запуска start и stop. И что бы вы думали? Опять работает рестарт монитора, нормальный стоп, а старт так и не запускается. Я в шоке!

  • #1830

    _KIRill
    Хранитель

    Попробуйте выключить мониторинг. В качестве стартового скрипта прописать что-нибудь простое. Например:
    [code]
    banner TEST > /dev/ttyX
    [/code]
    Где ttyX — ваш терминал.
    Если нормально отработает, то значит проблема ливо в стартовом скрипте, либо в готовности окружения OC для запуска приложения.

    ---As If, But Not---

  • #1832

    DanGer
    Участник

    KIRill писал(а):

    Попробуйте выключить мониторинг. В качестве стартового скрипта прописать что-нибудь простое. Например:
    [code]
    banner TEST > /dev/ttyX
    [/code]
    Где ttyX — ваш терминал.
    Если нормально отработает, то значит проблема ливо в стартовом скрипте, либо в готовности окружения OC для запуска приложения.

    По Вашему совету, прописал banner. Увы, он тоже не сработал. Похоже, hacmp не хочет стартовать приложение, ему больше нравится рестартовать :).

  • #1833

    _KIRill
    Хранитель

    Стартовый скрипт с banner на обоих узлах лежит? Бит исполнения в правах установлен?
    номер терминала правильно указан? (имя и номер своего терминала можно узнать с помощью
    команды #tty)

    ---As If, But Not---

  • #1834

    DanGer
    Участник

    Конечно! Все это я сделал с наибольшей аккуратностью, на какую способен. Но все равно, стоп — работает, старт — не работает.
    Кстати, забыл упамянуть: когда работает второй узел (когда первый в «дауне»), то наоборот — стоп не работает, а старт работает.
    Мистика какая-то.

  • #1835

    _KIRill
    Хранитель

    А если остановить кластер gracefully, и запустить verification/synchronization ? Какие-нибудь проблемы наблюдаются?

    ---As If, But Not---

  • #1836

    DanGer
    Участник

    Нет. Синхронизация и верификация на ОК.

  • #1842

    Дмитрий
    Участник

    Фиксы на кластер ставили?
    Даже в голову прийти не может, в чём проблема.

  • #1857

    DanGer
    Участник

    А как посмотреть (правильно), какие НЕОБХОДИМЫЕ фиксы установлены?
    Я вот сделал кое-какую выборку:

    instfix -ic|grep hacmp
    IY88005:devices.fcp.disk.rte:5.3.0.51:5.3.7.1:+:DSI node crash during hacmp/xd cluster node join
    IZ04076:bos.net.nfs.client:5.3.7.0:5.3.7.1:+:rpc.lockd fails to start on hacmp failover
    5300-01_AIX_ML:rsct.basic.hacmp:2.4.1.0:2.4.8.0:+:AIX 5300-01 Update
    5300-01_AIX_ML:rsct.compat.basic.hacmp:2.4.1.0:2.4.8.0:+:AIX 5300-01 Update
    5300-01_AIX_ML:rsct.compat.clients.hacmp:2.4.1.0:2.4.8.0:+:AIX 5300-01 Update
    5300-02_AIX_ML:rsct.basic.hacmp:2.4.2.0:2.4.8.0:+:AIX 5300-02 Update
    5300-02_AIX_ML:rsct.compat.basic.hacmp:2.4.2.0:2.4.8.0:+:AIX 5300-02 Update
    5300-02_AIX_ML:rsct.compat.clients.hacmp:2.4.2.0:2.4.8.0:+:AIX 5300-02 Update
    5300-03_AIX_ML:rsct.basic.hacmp:2.4.3.0:2.4.8.0:+:AIX 5300-03 Update
    5300-03_AIX_ML:rsct.compat.basic.hacmp:2.4.3.0:2.4.8.0:+:AIX 5300-03 Update
    5300-03_AIX_ML:rsct.compat.clients.hacmp:2.4.3.0:2.4.8.0:+:AIX 5300-03 Update
    5300-05_AIX_ML:rsct.basic.hacmp:2.4.5.0:2.4.8.0:+:AIX 5300-05 Update
    5300-05_AIX_ML:rsct.compat.basic.hacmp:2.4.5.0:2.4.8.0:+:AIX 5300-05 Update
    5300-05_AIX_ML:rsct.compat.clients.hacmp:2.4.5.0:2.4.8.0:+:AIX 5300-05 Update
    5300-06_AIX_ML:rsct.basic.hacmp:2.4.7.0:2.4.8.0:+:AIX 5300-06 Update
    5300-06_AIX_ML:rsct.compat.basic.hacmp:2.4.7.0:2.4.8.0:+:AIX 5300-06 Update
    5300-06_AIX_ML:rsct.compat.clients.hacmp:2.4.7.0:2.4.8.0:+:AIX 5300-06 Update
    5300-07_AIX_ML:rsct.basic.hacmp:2.4.8.0:2.4.8.0:=:AIX 5300-07 Update
    5300-07_AIX_ML:rsct.compat.basic.hacmp:2.4.8.0:2.4.8.0:=:AIX 5300-07 Update
    5300-07_AIX_ML:rsct.compat.clients.hacmp:2.4.8.0:2.4.8.0:=:AIX 5300-07 Update

    Так сойдет?

  • #1868

    Pit
    Участник

    Покажите стартстоп скрипты.

  • #1888

    DanGer
    Участник

    Вот примерно то, что сделано с HACMP:

    hnode1fe [15:28:46]# cldump

    Obtaining information via SNMP from Node: hnode1fe…

    _____________________________________________________________________________
    Cluster Name: fecluster
    Cluster State: UP
    Cluster Substate: STABLE
    _____________________________________________________________________________

    Node Name: hnode1fe State: UP

    Network Name: net_diskhb_01 State: UP

    Address: Label: hnode1fe_hdisk5_01 State: UP

    Network Name: net_ether_01 State: UP

    Address: 10.159.19.11 Label: hnode1fesip State: UP
    Address: 10.159.19.131 Label: hnode1fe State: UP
    Address: 10.159.19.211 Label: hnode1feb2 State: UP

    Network Name: net_rs232_01 State: UP

    Address: Label: hnode1fe_tty0_01 State: UP

    Node Name: hnode2fe State: UP

    Network Name: net_diskhb_01 State: UP

    Address: Label: hnode2fe_hdisk5_01 State: UP

    Network Name: net_ether_01 State: UP

    Address: 10.159.19.132 Label: hnode2fe State: UP
    Address: 10.159.19.212 Label: hnode2feb2 State: UP

    Network Name: net_rs232_01 State: UP

    Address: Label: hnode2fe_tty0_01 State: UP

    Cluster Name: fecluster

    Resource Group Name: FERG
    Startup Policy: Online On First Available Node
    Fallover Policy: Fallover To Next Priority Node In The List
    Fallback Policy: Fallback To Higher Priority Node In The List
    Site Policy: ignore
    Primary instance(s):
    The following node temporarily has the highest priority for this instance:
    hnode1fe, user-requested rg_move performed on Mon Jan 5 12:10:35 2009

    Node Group State
    —————————- —————
    hnode1fe ONLINE
    hnode2fe OFFLINE

    И сами скрипты: [file name=scripts.zip size=1384]http://www.aixportal.ru/media/kunena/attachments/legacy/files/scripts.zip[/file]

    Attachments:
  • #1893

    Pit
    Участник

    Первое что бы сделал
    Убрал бы (exit 0) из старт скрипта (startora.sh)
    — ваш HACMP не знает запустил он базу или нет
    — потом запускается монитор и как результат выполняет cleanup&start.

    Если будет возможность проверить пришлите свежий cluster.log

  • #1897

    Дмитрий
    Участник

    Мне ещё не нравится, что они из-под bash запускаются. Иногда бывают с ним проблемы.
    Вроде, синтаксис нормальный — попробуйте поменять bash на ksh.

    И, действительно, стартовый скрипт всегда выдаёт exit 0, реально не проверяя, стартован-ли oracle, а startup-монитора нет, прикручен, как я понимаю, только long-running.

    Можно ещё попробовать написать в начале скриптов:
    set +x
    (по-крайней-мере, в ksh это работает).
    Тогда они будут писать на stdout (в нашем случае — в hacmp.out) построчно, что они действительно делают.

  • #1900

    DanGer
    Участник

    В общем, сделал так, как вы подсказали. Спасибо большое. Но по прежнему база стартует не по событию «START», а по эвенту «RESTART» :(.

    Вот, собственно, и лог: [file name=hacmp.zip size=24579]http://www.aixportal.ru/media/kunena/attachments/legacy/files/hacmp.zip[/file]

    P.S. На изменение названия скрипта «sv.start.sh —> festart» можно не обращать внимания. Просто экспериментировали.

    Attachments:
  • #1901

    Дмитрий
    Участник

    Может, я куда-то не туда смотрю, но я не увидел, чтобы стартовый скрипт отрабатывал.
    Мониторинг запускается.
    Кстати, в логе при старте приложения выдаются строки:
    Monitor [appfemon] is detecting whether the application is running
    Application monitor [appfemon] exited with code (0)
    Application monitor[appfemon] exited with code (0) — returning success
    +FERG:start_server[start_and_monitor_server+26] RETURN_STATUS=0
    +FERG:start_server[start_and_monitor_server+26] [[ 0 == 0 ]]
    +FERG:start_server[start_and_monitor_server+30] dspmsg scripts.cat 99999 The application monitor detected a running instance of appfe. HACMP will not start another instance of appfe on this node. n appfe appfe
    The application monitor detected a running instance of appfe. HACMP will not start another instance of appfe on this node.

    Но вот упоминания самого стартового скрипта я не нашёл.

    Полистал историю вопроса, но предложить могу то-же самое, что и раньше…
    OK.
    Проверим Ваш кластер на глюкавость.
    Создаёте ресурсную группу. В ней будет только один ресурс — Application Server.
    Стартовый скрипт:
    #!/usr/bin/ksh
    /usr/sbin/wall APPLICATION START…
    echo `date`» Start» >>/tmp/app.log
    exit 0

    Стоповый скрипт:
    #!/usr/bin/ksh
    /usr/sbin/wall APPLICATION STOP…
    echo `date`» Stop» >>/tmp/app.log
    exit 0

    Проверяем. Это должно работать.
    Пока не заработает, дальше не двигаемся.

    Если это сразу-же работает, ищем ошибку в настройках ресурсов Вашей «рабочей» ресурсной группы и/или в скриптах.

  • #1903

    DanGer
    Участник

    Кстати, я немного запамятовал. Недавно в качестве очередного «эксперимента» я подставил Апач в качестве аппликейшн сервера. Старт/стоп скрипты содержат только одну строчку:

    /usr/sbin/apachectl start/stop

    В качестве монитора, для чистоты эксперимента подставил скрипт apachemon, почти идентичный «oramon» (который, кстати, с первого и «срисован»). Привязал сервер к той же ресурсной группе, что и нужная нам Оракля использует. При этом и старт, и стоп корректно работали.

    P.S. На втором узле кластера, при переезде на него приложения, старт/стоп эвент работает. При этом на первом эвент STOP тоже работает корректно.

  • #1904

    andrewk
    Участник

    я, конечно, полный ноль в насморках и прочих заболеваниях, но перепишите свой скрипт мониторинга хотя бы так:

    CMD=`ps -ef | grep ora_lgwr_smartfe | grep -v grep`
    if [ «x${CMD}» = «x» ] ; then
    echo «stopped»
    exit 1
    else
    echo «running»
    exit 0
    fi

    иначе у вас есть риск всегда получать код возврата 0 из скрипта — grep будет находить сам себя, а кластер говорить:
    Application monitor[appfemon] exited with code (0) — returning success
    и т.д.

  • #1905

    andrewk
    Участник

    хм. а почему сообщение задублировалось?

  • #1906

    DanGer
    Участник

    Спасибо за совет. Сделаю.

    Но меня больше интересует вопрос: почему HACMP стартует мониторинг сервера приложений, но не стартует само приложение?
    Оракл стартует из-за того, что монитор не находит запущенный процесс оракла. Осечек монитора пока не было.

  • #1909

    andrewk
    Участник

    сам я Пастернака^W логи не читал, но то, что написано у Dmitry в сообщении — именно монитор не дал запустить приложение при старте HACMP.

  • #1911

    DanGer
    Участник

    Спасибо всем!

    Прогнал пару запусков — все пучком.

    Я примерно понял, в чем я СИЛЬНО ошибался. Я посчитал, что первым должен запускаться само приложение, и только потом монитор, а не наоборот :). Теперь буду знать. И буду внимательнее со скриптами ;).

    И на последок, если не затруднит, подскажите пожалуйста, где можно подробнее узнать про «Process Monitor» в HACMP? Потому как, текущий скрипт мониторинга можно было бы и не импользовать, доверившись на указанный выше «встроенный» монитор HACMP. Но он не хочет видеть процесс «ora_lgwr_smartfe». Как побороть? (Не критично, но хотелось бы).

  • #1941

    Pit
    Участник

    90% HCMP проблем это скрипты

  • #1948

    Дмитрий
    Участник

    Да, в скрипте глюка я не заметил 🙁

    Process Monitor не видит процесс?
    Вы точно указали название процесса, владельца и прочие параметры?
    Читать в админ. гайде или в Redbook «HACMP Cookbook», есть на русском языке — см. ссылку со старого портала.

  • #1969

    DanGer
    Участник

    Мы точно указали правильное название, владельца процесса. К сожалению, прочитав книгу рецептов осмыслили, что процесс не виден по команде

    ps -el|grep smartfe

    .

    Я так думаю, система считает его процессом ядра (ключ -е), потому и пропускает «мимо ушей». Если это так, то возникает другой вопрос, почему оракловый процесс «сделался» ядерным? Потому как первичную настройку приложения + HACMP сдела специалист, который уже не один десяток подобных систем конфигурил.

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