RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Я давно слышал про IPMI,
но использовать его на практике раньше не приходилось - поддержка IPMI
есть только на серверных мамках (а бюджетные сервера часто работают на
десктопных), и то на многих модуль IPMI не распаян на плате, а
подключается в виде отдельного модуля (который продается за отдельные деньги).
Среди прочих полезных (и не очень) функций IPMI позволяет:
удаленно выключить/включить сервер, даже если ОС "зависла"
Использовать
Serial-over-LAN - позволяет по сети подключиться к серверу и работать с
ОС через serial console, например что то сделать в single mode. С точки
зрения ОС на управляемого сервера это выглядит как подключение к
обычному COM-порту (и настраивать нужно так же)
Но
недавно совершенно случайно выяснилось, что в нашей конторе есть
сервера с Intel-овским матерями, где есть встроенная поддержка IPMI (я
увидел в tcpdump странные gratious arp и решил выяснить откуда они
берутся - оказалось их отправляет IPMI-контроллер). И я решил посмотреть как это работает:
загружаем драйвер (в GENERIC его нету):
# kldload ipmi # dmesg | tail ipmi0: on isa0 ipmi0: KCS mode found at io 0xca2 alignment 0x1 on isa ipmi0: IPMI device rev. 1, firmware rev. 0.2, version 2.0 ipmi0: Number of channels 2 ipmi0: Attached watchdog
Если в dmesg ничего нет, то значит на данной мамке нет модуля IPMI и дальше можно не продолжать.
Для настройки локального контроллера и работы по сети с удаленным контроллером можно использовать ipmitool:
# portinstall ipmitool
Для проверки того, что ipmitool работает с данным контроллером, можно посмотреть, например
# ipmitool chassis status System Power : on Power Overload : false Power Interlock : inactive Main Power Fault : false Power Control Fault : false Power Restore Policy : always-on Last Power Event : command ...
Для настройки сетевого управления надо выяснить каким каналом
является сетевой интерфейс, для этого по очереди запускаются команды
вида ipmitool channel info 0, ipmitool channel info 1, ipmitool channel
info 2 и т. д. В моем случае сетевой интерфейс оказался 1-м каналом:
# ipmitool channel info 1 Channel 0x1 info: Channel Medium Type : 802.3 LAN Channel Protocol Type : IPMB-1.0 Session Support : multi-session Active Session Count : 4 Protocol Vendor ID : 7154 Volatile(active) Settings Alerting : enabled Per-message Auth : enabled User Level Auth : enabled Access Mode : always available Non-Volatile Settings Alerting : enabled Per-message Auth : enabled User Level Auth : enabled Access Mode : always available
Собственно настройка:
# ipmitool sol set force-encryption true # ipmitool sol set force-authentication true # ipmitool lan set 1 snmp some_random_string # ipmitool lan set 1 ipaddr 192.168.223.6 # ipmitool lan set 1 netmask 255.255.255.0 # ipmitool lan set 1 password remember_the_string
Если доступ нужен не только из данной подсети, то надо задать шлюз по умолчанию.
На удаленной машине пароль можно сохранить в файле:
И можно удаленно смотреть разную информацию о состоянии сервера:
> ipmitool -f ipmi_passfile -I lanplus -H 192.168.223.6 power status Chassis Power is on > ipmitool -f ipmi_passfile -I lanplus -H 192.168.223.6 sdr BB +1.8V SM | 1.79 Volts | ok BB +3.3V | 3.30 Volts | ok BB +3.3V STBY | 3.24 Volts | ok BB +5.0V | 5.01 Volts | ok Processor Vcc | 1.21 Volts | ok BB Ambient Temp | 35 degrees C | ok CPU Fan | 0 RPM | ok System Fan 3 | 3726 RPM | ok P1 Therm Margin | no reading | ns Power Unit | 0x00 | ok IPMI Watchdog | 0x00 | ok Processor Status | 0x00 | ok
Или перезагрузить сервер - power soft, далее смотреть power
status. Если сам не выключится можно сделать power off. После этого
включить его обратно - power on.
Для того, чтобы можно было
подключиться к сервере через Serial-over-LAN его нужно настроить так же
как и при подключении консоли в COM-порт: В /boot.config нужно написать -PD В /etc/ttys найти строчку с ttyd0 и заменить off на on и сделать kill -HUP 1
После этого на удаленном сервере можно запустить
> ipmitool -f ipmi_passfile -I lanplus -H 192.168.223.6 sol activate
и увидеть консоль управляемого сервера.
Т.
е. в целом IPMI очень полезный инструмент. Жаль что в большинстве наших
серверов используются материнки, в которые IPMI нужно втыкать в виде
отдельной платы.
Из того, что мне в IPMI не понравилось хочется отметить: