- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF143:DrBrown2
Материал из Linuxformat.
Удаленное управление
- Доктор находит замену своей кочерге для управления сервером.
Раньше я полагал, что когда я выключаю свои серверы, они... кхе... выключаются. Но не тут-то было. Оказывается, маленькая микросхемка, контроллер управления базовой платой (BMC), продолжает работать – как тусклая свечка в окне сторожки у ворот замка, погруженного в ночную мглу. BMC – часть интеллектуального интерфейса управления платформой (IPMI), через который мы получаем информацию о состоянии устройств: температуру, напряжения, скорости вращения вентиляторов, открытости корпуса, состоянии питания и т. д. С помощью IPМI также можно получать информацию об устройствах, передавать предупреждения и даже удаленно включать и отключать питание сервера.
Изначально оговоренный Intel, HP, Nec и Dell, стандарт IPМI определяет общие интерфейсы управления системой, которые значительно облегчают управление гетерогенным набором серверов. Собственно стандарт – 644 страницы текста, не для слабых духом. Прочесть его можно по ссылке http://www.intel.com/design/servers/ipmi.
В архитектуре IPMI определяется устрашающее количество вариантов подключений к BМС. Есть «Шина управления интеллектуальной платформой» для подключения дочерних контроллеров, интерфейс для подключения к главной системной шине и подключения к датчикам и управляющим цепям, хранилище журнала событий внутри сеанса подключения и записей данных датчиков, а также внешние подключения к локальной сети через локальный порт и/или сетевую карту. Доступ к BMC через сетевое соединение, физически разделяемое с главным сетевым соединением компьютера – это удобное решение, не требующее дополнительных разъемов и кабелей, и этот подход используется в моем сервере Dell PowerEdge.
Linux, конечно, располагает утилитами для работы с IPMI. Они могут отслеживать и управлять системой на локальном компьютере, взаимодействуя с BMC через драйвер ядра и интерфейс системной шины. Есть также вариант «IPMI через локальную сеть». Я приведу примеры обоих подходов. И сразу же проясним: работа BMC совершенно не зависит от BIOS или любой локальной ОС. На самом деле, BMC будет работать даже при отключенном основном процессоре.
Чтобы опробовать локальное управление сервером, я установил Fedora 14 и пакет ipmiutil. В нем есть утилита Ipmiutil – по сути это командная обертка протокола IPMI, позволяющая отправлять IPMI-команды и получать результаты. Например, скорость вращения вентилятора можно узнать таким образом:
# ipmiutil sensor -c -g fan ipmiutil ver 2.68 isensor: version 2.68 -- BMC version 1.30, IPMI version 2.0 supports device sdrs Full sensor [000f] | snum 30 | FAN 1 RPM | OK* | 2280.00 RPM isensor completed successfully
Для приведения в действие «IPMI через локальную сеть» на целевом компьютере нужно кое-что настроить. В BIOS я могу установить MAC-адрес и IP-адрес интерфейса LAN, которые не совпадают с сетевыми настройками компьютера. Там также можно задать имя пользователя, пароль и уровень привилегий, как объясняется в разделе «Управление доступом». Также обязательно включите «IPMI по локальной сети» [IPMI-over-LAN]. После этого вы сможете пообщаться с удаленным компьютером через IPMI, для чего я решил применить другой набор утилит (ipmitool) на удаленном компьютере с Ubuntu. На сей раз мне нужно указать IP-адрес удаленного компьютера, а также имя пользователя и пароль для аутентификации. В следующем примере я включаю сервер:
$ ipmitool -I lan -H 192.168.1.120 -U root -P mysecret chassis power on Chassis Power Control: Up/On
Наконец, можно также прочитать журнал событий датчика, который лежит во постоянном хранилище в BMC, командой:
$ ipmitool -I lan -H 192.168.1.120 -U root -P farkle sel list 1 | 03/03/2010 | 14:06:32 | Event Logging Disabled #0x72 | Log area reset/cleared | Asserted 2 | Pre-Init Time-stamp | Physical Security #0x73 | General Chassis intrusion | Asserted 3 | Pre-Init Time-stamp | Physical Security #0x73 | General Chassis intrusion | Deasserted
Управление доступом
Вы можете поинтересоваться, как обстоит дело с безопасностью. Если какой-нибудь болван через Интернет узнает температуру моего процессора, горе тут невелико, но давать ему возможность удаленно выключить сервер – это уж будет квалифицироваться как атака типа отказ сервиса [DoS].
К счастью, протокол IPMI позволяет ввести в сеанс IPMI принудительную аутентификацию. Поддерживается несколько типов аутентификации, включая ее отсутствие [None] и аутентификацию с паролем [Straight Password], а также методы с шифрованием MD2 и MD5. Сам IPMI-трафик тоже можно зашифровать, и это возлагает большую вычислительную работу на скромный процессор BMC. Вдобавок пользователям назначаются уровни привилегий – Ответ [Callback], Пользователь [User], Оператор [Operator] и Администратор [Administrator]. Каждая команда IPMI требует определенного уровня привилегий. В общих чертах, Пользователи могут только читать информацию о состоянии системы. Операторы могут менять настройки типа порогов срабатывания датчиков и управлять системой (включать и отключать питание). Администратор может также настраивать сам IPMI, например, задавать имена пользователей и пароли. По сути это жесткая схема управления доступом на основе ролей.