15 мар. 2011 г.

IPMI, KVM-over-LAN, virtual media в серверах Supermicro - удаленное управление и мониторинг

Часто задаваемые вопросы о IPMI в материнских платах Supermicro: зачем он нужен, особенности, наглядная демонстрация, подводные камни.

1) Самый популярный миф о KVM-over-LAN - это то, что он "не нужен". Почему-то многие путают его с обычным удаленным доступом к текстовой/графической консоли ОС, т.е. "зачем нам KVM-over-LAN, если есть SSH, VNC, RDP и Radmin?"
Разница принципиальная: KVM-over-LAN - это не просто доступ к консоли ОС, он никак от ОС не зависит, это доступ к консоли непосредственно самого сервера (и не только к консоли, подробности будут ниже), т.е. мы можем, например: зайти в BIOS системной платы или доп. контроллера, установить ОС, настроить мониторинг сенсоров (что, опять-таки, очень важно - независимый от ОС) через SNMP и т.д.
2) Как это работает? Работает достаточно просто, вот структурная схема (Supermicro последнее время использует, как правило Winbond или Nuvoton WPCM450:
Всю работу выполняет процессор BMC (Baseboard management controller) - он имеет собственную память и специализированную ОС (обычно на базе Linux). BMC использует USB шину для подключения виртуальных клавиатуры, мыши и приводов CD/DVD/FDD. Через другие шины осуществляется сбор показаний датчиков вращения вентиляторов, температуры, управление питанием, доступ к COM-порту (для удаленного доступа к последовательной консоли). BMC также занимается захватом и перенаправлением содержимого видеобуфера - в современных BMC уже интегрировано видеоядро, когда-то, в первых реализациях, BMC занимался оцифровкой аналогового сигнала с отдельного VGA-контроллера. Обмен данными с "внешним миром" происходит через ethernet (выделенный порт или один из портов размещенного на системной плате контроллера ethernet).
Собственно, WPCM450 в продуктах Supermicro представляет собой систему на базе процессора ARM 926EJ-S, работающей под управлением ОС Linux на ядре 2.6.
В целях диагностики можно зайти через SSH, где вас будет ждать busybox.

3) Сколько это стоит?
В настоящее время Supermicro интегрирует IPMI BMC непосредственно на системные платы. Раньше использовались дополнительные модули (например - AOC-SIMSO+). Наличие IPMI BMC на плате Supermicro обозначает буквой F, например: X8DTi и X8DTi-F, и разница в цене не превышает $50, что уже является очевидным ответом на вопрос "нужно или нет", ведь внешний IP-KVM обойдется вам гораздо дороже. Ставить обычный KVM и каждый раз при необходимости что-нибудь переустановить или перепрошить идти в серверную - тоже не выход, это потеря времени, ведь ваш сервер может находится за десятки и сотни километров, да и, в конце концов - это просто неудобно.
4) Как это выглядит на практике?
Доступ к IPMI можно получить либо через IPMIView (специализированная утилита на Java, есть сборки под Windows и Linux) или через обычный браузер (при подключении к графической консоли запустится дополнительное java-приложение).
Рассмотрим IPMIView. Для начала в BIOS можно настроить ethernet-порт IPMI: по умолчанию стоит DHCP, но можно вручную выставить нужные IP/маску/шлюз, тэг VLAN (весь ужаленный менеджмент лучше выделить в отдельную подсеть из соображений безопасности и удобства).
Запускаем IPMIView и находим нужный сервер (можно просканировать диапазон адресов на предмет наличия IPMI), логин/пароль по умолчанию - ADMIN/ADMIN.
Дальше сервер можно включить, если он еще не включен - управление питанием есть на вкладке IPM Device (дежурное питание на IPMI BMC подается всегда):
  • Graceful shutdown - имитируется быстрое нажатие кнопки Power, для того чтобы ОС могла корректно выключить питание самостоятельно.
  • Power Cycle - это Graceful shutdown с последующим включением питания
  • Reset и Power Up говорят сами за себя
  • Power Down - жесткое выключение, с длительным нажатием кнопки Power
За здоровьем сервера можно наблюдать на вкладке Sensors (показания температурных и вентиляторных датчиков вы увидите только при включенном сервере):


Сетевые настройки можно поменять при необходимости на вкладке BMC Setting (помните, что можно по ошибке потерять удаленный доступ к серверу). Кстати, об удаленном доступе: используются следующие порты (их нужно будет пробросить через NAT или обеспечить способ доступа в менеджмент-сеть, например, через VPN):
TCP:
  • HTTP: 80
  • HTTPS: 443
  • 5901 - нужен для графической консоли
  • 5900 - HID, трафик виртуальной клавиатуры/мыши
  • 5120 - трафик виртуального привода CD/DVD
  • 5123 - трафик виртуального FDD
UDP:
  • IPMI: 623
На вкладке KVM Console можно увидеть самую полезную вещь - графическую консоль сервера. Там же находятся кнопки снятия скриншота, управления виртуальными носителями (Virtual Media), перехода в полноэкранный режим и дополнительная софт-клавиатура. Зачем она нужна, если есть аппаратная? Для различных комбинаций клавиш, которые по каким-то причинам не удается отправить на сервер с аппаратной клавиатуры, например классический Ctrl+Alt+Delete.

Вот несколько особенностей:
  1. Если у вас есть контроллер от LSI, то вам знаком ориентированный на использование мыши интерфейс LSI Webbios. Так вот: мышь в Webbios через IPMI в современных  платах Supermicro не работает, связано это с тем, что Webbios расчитан на мышь PS/2, а IPMI эмулирует мышь USB. В FAQ разделе технической поддержки Supermicro этот вопрос рассматривается, но рекомендации не помогают. Приходится пользоваться исключительно клавиатурой, что не совсем удобно, т.к. не через все пункты можно перемещаться при помощи Tab - нужны комбинации с Alt, которые отрабатываются только через Soft Keyboard.

  2. Переключение раскладки в WinPE 3.0 не работает. Так что собирайте WinPE с английской раскладкой, для этого нужно добавить в скрипт сборки после монтирования Wim-образа следующую команду:
    Dism /image:C:\winpe64\mount /Set-InputLocale:1033:00000409
    "C:\winpe64\mount" - точка монтирования образа.
    При желании можно заодно сменить локаль и язык интерфейса - смотрите документацию к WinPE.
  3. Для не Windows ОС измените режим синхронизации курсора с абсолютного на относительный.

И заключительный абзац - использование виртуальных носителей.
Можно либо перенаправить локальный привод, либо подключить образ, что гораздо удобнее. Для появления соответствующего устройства в загрузочном меню BIOS может потребоваться перезагрузка.
P.S. Как сбросить пароль IPMI? Только при помощи консольной утилиты ipmicfg. Существует в версиях под DOS, Windows и Linux. Запуск ipmicfg -fd обнуляет все настройки и устанавливает логин/пароль пользователя с администраторскими правами в стандартные ADMIN/ADMIN.
Обновление от 18.04.2010. В какой-то момент, после очередного обновления Java, попытка смонтировать iso образ в IPMIView начала приводить к его падению (Windows 7 64бит с последними обновлениями).Вышел новый релиз IPMIView (build 110412 от 12 апреля). Пока еще не проверял, исправлен ли там этот баг, так как можно пользоваться запуском консоли через web-интерфейс.
Переходим на вкладку Remote Control, жмем Launch Console и получаем в отдельном окне Redirection Viewer, аналогичный по функционалу консоли в IPMIView. Стоит добавить, что web-интерфейс не облегчает задачу доступа к консоли из внешней сети - Redirection Viewer - это не Java-апплет, а отдельное Java приложение и использует те же порты для трафика видео, HID и виртуальных приводов: 5900, 5901, 5120, 5123.
P.S. от 01.12.2011. Дополнительная статья: FreeIPMI.
P.S. от 06.10.2013. Похожая статья на нашем сайте.
P.S. от 10.11.2013. IPMI и безопасность.
P.S. от 20.06.2014. Опять IPMI и безопасность.

15 комментариев:

  1. отличная статья!
    особенно понравились ссылки на фтп супермикры, местами очень полезно :)

    ОтветитьУдалить
  2. Спасибо! Скоро будет добавка - возможные проблемы с прошивками 1.x в некоторых MB.

    ОтветитьУдалить
  3. большое спасибо. ко мне как раз едут 2 сервера

    ОтветитьУдалить
  4. Спасибо за статью! Внезапно оказалось, что у нас на серверах эта примочка есть. Мелочь, а приятно!

    ОтветитьУдалить
  5. Спасибо за статью. Наткнулся на нее в поисках ответа на вопрос - как инсталлировать win7 x64 через IPMI (web доступ) с виртуального носителя. Инсталяция стартует, файлы копируются, но когда запускается сам установщик windows, он начинает спрашивать драйвера для виртуального cd/dvd привода почему-то, хотя его читает (?) - пытался через него подсунуть диск с драйверами. В конце-концов плюнул и вставил диск с windows в dvd привод на самом серваке, благо он там был. А если бы не было? Возможно полностью установить windows c виртуального носителя? Нужны какие-то драйвера для него?

    ОтветитьУдалить
  6. А какая плата у вас? Полностью Win Server 2008 R2 с iso ставил только один раз на X8DTU - все проходит гладко, хоть и медленно. В основном ставлю так: по IPMI загружаю WinPE (порядка 250МБ), а уже из него при помощи imagex с сетевого ресурса развертываю нужный образ.
    BMC презентует хосту привод в качестве DVD-ROM подключенного по USB, тут не должно быть проблем.

    ОтветитьУдалить
  7. hooke:
    Это наверняка баг прошивки. У меня были аналогичные проблемы с HP iLO. Обновление прошивки ipmi помогло.

    ОтветитьУдалить
  8. отличная статья!

    ОтветитьУдалить
  9. А у меня нет вкладки "KVM Console" в "IPMI View"
    Java последней версии.
    Версия "IPMI View": 2.8.0
    Подскажите, пожалуйста, что нужно сделать, чтобы эта вкладка появилась.

    ОтветитьУдалить
    Ответы
    1. А что за плата? Работает ли все через web-интерфейс? Поставьте свежий ipmiview 2.9.10, старые версии некорректно работают с платами X9xx

      Удалить
  10. А я вот не могу подключить ISO образ для загрузки

    Device 1 :Can not connect to Server!!
    Device 2 :Can not connect to Server!!
    CDROM&ISO :Can not connect to Server!!

    Все порты открыл.

    ОтветитьУдалить
  11. ipmiview 2.9 так вообще не может подключиться, а по IP адресу заходить, но Virtual storage не работает... Кто знает как сие решать ?

    ОтветитьУдалить
  12. Не подскажите, сервер X9SCA-F C204, можно ли как то зайти в IPMI View через public ip, на роутере проброшен порт 623, при коннекте утилита выдает Ivalid IP Fprmat.

    А если я пытаюсь подключится через веб браузер, так же через public ip, то когда захожу в Console Redirection, запускаю консоль launch.jnlp он открывается и потом выдает сначала Downloading application, а потом выдает Application Error - Unable to launch application. Если я нажимаю кнопку Details, то там что то типа:
    om.sun.deploy.net.FailedDownloadException: Unable to load resource: (https://mypublicip:443/iKVM.jar?version-id=1.69.13.0x0, 1.69.13.0x0)
    at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
    at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    f
    Если в локальной сети все нормально!

    ОтветитьУдалить
  13. Все разобрался, на 443 порту у меня висел другой сервис, поменял на ssl на другой порт и все получилось!:)

    ОтветитьУдалить
    Ответы
    1. Это хорошо, а то как раз хотел попросить порты просканировать все.

      Удалить