Cluster (кластер). Прошу помочь разобраться.

Started by Anth0ny, June 17, 2008, 12:09:22 PM

Previous topic - Next topic

Anth0ny

возникло непонимание с отдаваемыми кластерами значениями:

при использовании макросов так: МЕСТО ВОЗНИКНОВЕНИЯ:\t%n[%a]
ответ получается такой: МЕСТО ВОЗНИКНОВЕНИЯ:    MYCLUSTER[0.0.0.0]

от обычных хостов ответ получаем правильный: МЕСТО ВОЗНИКНОВЕНИЯ:    MONITORING.mynet.ru[10.10.1.1]

эээ...баг?

Victor Kirhenshtein

U ob'ekta klastera net IP adresa. Mozno konechno cht-nibud' podstavljat', vopros tol'ko - chto?


Anth0ny

хмм...

я думаю что будет правильно при запросе отдавать IP, ассоциированный с ClusterGroup.
ведь именно по этому адресу кластер отвечает по сети.

Victor Kirhenshtein

Voobschem soglasen, sdelaju. Edinstvenno chto pri konfiguracii ob'ekta klastera nado budet ukazivat', kakoj iz virtual'nih adresov eto adres Cluster Group.

Anth0ny


Anth0ny

напоминаю про наш предыдущий разговор (на всякий случай) и новая порция данных для размышления...

обнаружил странную вещь.

объект мониторинга: двухузловой актив-актив кластер с MSSQL. на его обеих нодах крутятся по одному SQL-инстансу, в случае обвала одной из нод оба инстанса начинают работать на одной ноде.

мы отслеживаем, что:

1) инстансы вообще живы.
2) оба инстанса не запущены на одной ноде одновременно, если так- слать аларм оператору.
3) состояние кластерных ресурсных групп в норме.

с 3) нет проблем, всё отслеживается отлично. получаю сообщения о переезде ресурсных групп с ноды на ноду.
с 2) возникает периодически проблема. я не знаю, почему оно так, но Condition, созданный для слежения за расположением инстансов, постоянно "залипает". т.е. реакция на нормальное расположение инстансов (один инстанс-одна нода) происходит либо с ооочень большим замедлением (могут сутки пройти, прежде чем монитр чухнется, что всё уже ок, что выполняется условие "один истанс-одна нода"), либо не происходит вообще. приходится руками передёргивать мониторинг.

вот скрипт используемый в Condition: (($1 == 0) && ($2 ==  0)) || (($3 == 0) && ($4 ==  0))

... где $1-$4 это:

на ноде NODE1

1 - System.ServiceState(MSSQL$INST1) - Associate with cluster resource "INST1 Cluster Group"
2 - System.ServiceState(MSSQL$INST2) - Associate with cluster resource "INST2 Cluster Group"

на ноде NODE2

3 - System.ServiceState(MSSQL$INST2) - Associate with cluster resource "INST2 Cluster Group"
4 - System.ServiceState(MSSQL$INST1) - Associate with cluster resource "INST1 Cluster Group"

может и я чтото напутал при создании DCI, но что-то как-то странно всё...

очень подозрительно выглядит вот что: при использовании в указанной ситуации двух DCI типа System.ServiceState(MSSQL$INST1) и System.ServiceState(MSSQL$INST2), когда оба MSSQL$INSTN приписаны каждый к своей кластерной группе (Asociate with cluster resource) на обих нодах нормально работает только по одному DCI.

на каждой ноде работает (регулярно опрашивает) только тот DCI, который связан с кластерной группой, которая, в свою очередь, в данный момент находится именно на ЭТОЙ ноде. второй же ... второй же может сутками, неделями и месяцами не проверяться (я не уловил закономерности). и это не смотря на то, что в случае перемещения инстанса со своей ноды на соседнюю, Condition помечает весь кластер как сбойный.

и получается что при ручном перемещении инстанса обратно на починеную ноду, повторного ПОЛНОГО переопроса кластера не производится. и статус Warning так и висит на Condition'е и кластере.

и вот ещё один вопрос: (по пункту 1)) - можно ли мониторить состояние кластерных ИМЕННО СЕРВИСОВ? и помечать СЕРВИСЫ типа ...

на ноде NODE1

1 - System.ServiceState(MSSQL$INST1) - Associate with cluster resource "INST1 Cluster Group"
2 - System.ServiceState(MSSQL$INST2) - Associate with cluster resource "INST2 Cluster Group"

на ноде NODE2

3 - System.ServiceState(MSSQL$INST2) - Associate with cluster resource "INST2 Cluster Group"
4 - System.ServiceState(MSSQL$INST1) - Associate with cluster resource "INST1 Cluster Group"

... сбойными, как любой стандартный DCI, через трешолды?

Иди это не возможно, потому что каждый такой сервис приписан в DCI к кластерной группе?


ЕСЛИ КОРОЧЕ =)

1. при использовании Condition, отслеживающего расположение инстансов так (($1 == 0) && ($2 ==  0)) || (($3 == 0) && ($4 ==  0)), для кластера с двумя нодами на каждой из которых запущено по одному инстансу, ЕСЛИ указанное условие перестаёт выполняться (расположение приходит в норму), Кластер может очень долго возвращаться в нормальное состояние, поскольку не происходит полного переопроса всех связанных с кластером DCI.

2. не удаётся мониторить состояние инстансов НАПРЯМУЮ, поскольку они могут находиться на любой из нод кластера. и соответственно, нельзя использовать прямой мониторинг через DCI с конкретным указанием на инстансы.

правильное положение:

(($1 == 0) && ($2 !==  0)) || (($3 == 0) && ($4 !==  0))

неправильное положение:

(($1 == 0) && ($2 ==  0)) || (($3 == 0) && ($4 ==  0))

но положение типа (($1 == 0) && ($2 ==  0)) || (($3 == 0) && ($4 ==  0)) хоть и считается не правильным для кластера, но оно может быть необходимо на время реанимации упавшей ноды. но при этом КАК в это время мониторить здоровье инстансов $1 и $2 или $3 и $4, когда они на одной ноде?

может эти DCI всё же можно вынести на уровень КЛАСТЕРА?