Приложение B. Дополнительная информация об аппаратном обеспечении

В следующих разделах представлена дополнительная информация по настройке оборудования, используемого в кластерной системе.

B.1. Настройка контроллеров питания

В этом разделе рассматриваются контроллеры питания. За дополнительной информацией о контроллерах питания и их роли в кластерном окружении обратитесь к разделу 1.1.3 Выбор типа контроллера питания.

B.1.1. Переключатели питания

Список переключателей питания с последовательным и сетевым интерфейсом, проверенных и/или поддерживаемых компанией Red Hat, Inc. при работе в кластере, вы найдёте в Списке совместимого оборудования Red Hat, размещённого по следующему адресу:

http://hardware.redhat.com/hcl/

B.1.2. Настройка сторожевых переключателей питания

Описание модели использования сторожевых таймеров как средства обеспечения целостности данных приводилось в разделе 1.1.3 Выбор типа контроллера питания. Как упоминалось в том разделе, существует две разновидности сторожевых таймеров: аппаратные и программные.

В этом разделе подробно описаны действия, необходимые для настройки сторожевого таймера в конфигурации кластера.

В зависимости от типа используемого сторожевого таймера, для этого таймера может потребоваться создать специальный файл устройства. Это можно сделать, выполнив следующие команды:

cd /dev
./MAKEDEV watchdog

Если вы используете Cluster Configuration Tool, на каждом новом узле, добавляемом в кластер, программный сторожевой таймер по умолчанию включён.

B.1.2.1. Настройка программного сторожевого таймера

В любой кластерной системе можно использовать программный сторожевой таймер, как средство обеспечения целостности данных, так как никакое дополнительное оборудование для этого не требуется. Программное обеспечение кластера автоматически загружает соответствующий подгружаемый модуль ядра softdog.

Если кластер настроен на использование программного сторожевого таймера, кластерный демон членства (clumembd) периодически сбрасывает таймер. Если демон clumembd не смог сбросить таймер, отказавший узел кластера перегружается самостоятельно.

При использовании программных сторожевых таймеров остаётся небольшой риск повисания системы, когда поток программного сторожевого таймера не выполняется. В таком случае, другой узел кластера может перенести службы этого повисшего узла. Чаще всего это безопасная операция, но если работа повисшего узла неожиданно продолжится, может произойти разрушение данных. Чтобы уменьшить вероятность этой уязвимости, администраторы могут использовать другой вариант программного таймера – сторожевой таймер c NMI, а также внешний переключатель питания (если таковой имеется).

B.1.2.2. Включение сторожевого таймера c NMI

Если вы применяете программный сторожевой таймер как средство сохранения целостности данных, рекомендуется включить сторожевой таймер, использующий немаскируемое прерывание (Non-Maskable Interrupt (NMI)) для большей гарантии сохранности целостности данных. Сторожевой таймер с NMI выполняет перезагрузку системы даже в случае заблокированных прерываний. Сторожевой таймер с NMI может использоваться вместе с программным сторожевым таймером.

В отличие от сторожевого таймера, который сбрасывается кластерным демоном кворума (cluquorumd), сторожевой таймер NMI учитывает системные прерывания. Обычно, работающая нормально система получает сотни прерываний от устройств и таймеров. Если в течении 5 секунд не происходит ни одного прерывания, что означает "повисание" системы, срабатывает сторожевой таймер NMI и выполняет перезагрузку.

Надёжная защита целостности данных может быть реализована в сочетании мониторинга рабочего состояния кластерным демоном кворума с программным сторожевым таймером, а также с проверкой на низком системном уровне сторожевого таймера NMI.

Для корректной работы механизма сторожевого таймера NMI требуется, чтобы на материнской плате узла кластера находилась микросхема APIC.

Сторожевой таймер NMI в системах, где он поддерживается, включается добавлением параметра nmi_watchdog=1 в командную строку ядра. Ниже приведён пример файла /etc/grub.conf:

ЗамечаниеЗамечание
 

Следующие примеры конфигурации загрузчиков GRUB и LILO относятся только к Red Hat Enterprise Linux на платформе x86.

# grub.conf
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title HA Test Kernel (2.4.9-10smp)
        root (hd0,0)
        # This is the kernel's command line.
        kernel /vmlinuz-2.4.9-10smp ro root=/dev/hda2 nmi_watchdog=1

# end of grub.conf

В системах, использующих загрузчик LILO, добавьте строку "nmi_watchdog=1" в разделе append файла /etc/lilo.conf. Например:

# lilo.conf
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
lba32

image=/boot/vmlinuz-2.4.9-10smp
        label=linux
        read-only
        root=/dev/hda2
        append="nmi_watchdog=1"

# end of lilo.conf

Запустите /sbin/lilo, отредактировав /etc/lilo.conf, чтобы изменения вступили в силу.

Чтобы определить, поддерживает ли сервер сторожевой таймер NMI, попытайтесь сначала добавить параметр "nmi_watchdog=1" в командную строку ядра, как показано выше. Загрузив систему, зарегистрируйтесь под именем root и введите:

cat /proc/interrupts

При этом на экране должно отображаться примерно следующее:

           CPU0       
  0:    5623100          XT-PIC  timer
  1:         13          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  7:          0          XT-PIC  usb-ohci
  8:          1          XT-PIC  rtc
  9:     794332          XT-PIC  aic7xxx, aic7xxx
 10:     569498          XT-PIC  eth0
 12:         24          XT-PIC  PS/2 Mouse
 14:          0          XT-PIC  ide0
NMI:    5620998       
LOC:    5623358 
ERR:          0
MIS:          0

Обратите внимание, в левом столбце отображается метка NMI. Если значение переменной NMI больше нуля (0), сервер поддерживает сторожевой таймер NMI.

Если это не так, то есть NMI равен нулю, попробуйте передать ядру nmi_watchdog=2 вместо параметра nmi_watchdog=1, как было показано ранее. Выполнив это, также проверьте /proc/interrupts после загрузки системы. Если значение NMI больше нуля, сторожевой таймер NMI настроен правильно. Если значение NMI и в этом случае равно нулю, сторожевой таймер NMI в вашей системе не поддерживается.

B.1.2.3. Настройка аппаратного сторожевого таймера

Ядро системы поддерживает драйверы для различных типов аппаратных сторожевых таймеров. Некоторые из таких таймеров интегрированы на материнской плате, тогда как выпускаются и специальные PCI-платы. Аппаратные сторожевые таймеры представляют собой прекрасные средства обеспечения целостности данных в кластере, потому что они не зависят от работы системного процессора и таким образом, способны перегрузить компьютер даже в случае повисания системы.

По причине отсутствия единых стандартов низкоуровневых сторожевых таймеров, сложно дать какие-либо общие рекомендации по использованию таких компонентов в системе. Многие низкоуровневые сторожевые таймеры не определяются автоматически.

Чтобы настроить в ядре один из поддерживаемых сторожевых таймеров, необходимо добавить соответствующую запись в файл /etc/modules.conf. Например, если используется сторожевой таймер Intel-810 TCO WDT, в файл /etc/modules.conf нужно добавить следующую строку:

alias wdt i810-tco