Как же удобно пользоваться персональным компьютером или ноутбуком, ведь монитор и клавиатура всегда под рукой. Но что делать, если оборудование расположено далеко и получить непосредственный доступ для подключения затруднительно? Сложно представить такое ограничение? Для инженеров дата-центров это стандартная проблема. Настолько стандартная, что уже и не проблема, а специфика работы.
Конечно, никто «жонглировать вслепую» не собирается — поэтому и выработался уже целый пул решений для работы с оборудованием. Один из вариантов — использовать IP-KVM.
Меня зовут Макс, я системный инженер в Selectel. В этой небольшой статье расскажу, как мы пришли к нынешнему виду наших IP-KVM и какие трудности нам пришлось пройти. Наша история — под катом!
Тысяча и один вопрос об управлении серверами
Допустим, нам нужен монитор, чтобы получать информацию с сервера. А еще — клавиатура с мышкой, чтобы передавать все необходимые команды. Мысленно переносимся в дата-центр и видим десятки тысяч серверов. Как получить ко всем ним доступ?
Неужели придется закупить тысячи клавиатур, мышек и мониторов? Или по очереди подключаться одними монитором с клавиатурой к каждому серверу…
Использовать SSH, RDP или VNC? А если сервер завис и без ручного пинка никак?
Использовать встроенные модули enterprise-материнских плат для удаленного управления сервером — например, IPMI или iDRAC? А если такой роскоши нет?

Решение — использовать IP-KVM
Для подобных ситуаций существует IP-KVM (IP-based Keyboard, Video, Mouse). Проще говоря, это специальный миникомпьютер для внешнего подключения к I/O интерфейсам сервера и эмуляции монитора, мышки и клавиатуры.
Таким образом, управление сервером не зависит от сбоев ОС или от физической доступности железа. Подключайся к миникомпьютеру-эмулятору и управляй сервером так, будто стоишь перед ним.
В Selectel мы используем различные IP-KVM. Один из самых частых вариантов — Lantronix Spider KVM Over IP Switch.


Как-то мне сказали, что IP-KVM больше напоминает power bank. Но глядя на провода и порты понимаешь, что это гораздо более продвинутое устройство. Здесь и VGA для видео, и USB или PS/2 для клавиатуры и мыши. Для начала работы достаточно подключить IP-KVM в сервер. С другой стороны патч-корд в интернет — и вот сервер доступен из любой точки мира. Все ведь так просто! Или нет?
Дополнительные фишки IP-KVM Lantronix
Так просто в дата-центрах не бывает, ведь один из главных наших принципов — резервирование. Поэтому оно в KVM есть! IP-KVM Lantronix имеют два ввода питания — с I/O-интерфейса сервера через USB-A и дополнительный с miniUSB-B.
Резервирование — это круто, но надо еще подключиться к IP-KVM. Берем обычный медный патч-корд и тянем к ближайшему коммутатору. Один патч потратить на IP-KVM не страшно, но в рамках ДЦ мы умножаем этот патч на тысячи IP-KVM — и это уже неприятно.
Поэтому инженеры придумали технологию Cascade — последовательное подключение IP-KVM друг к другу. Первая-вторая-третья… и вот у вас уже целая «гирлянда». Ограничиваемся только пропускной способностью в 1 Гбит/с, чтобы всем было комфортно работать.
Для обеспечения стабильности и резервирования каждая KVM в гирлянде при потере ведущего соединения (отвале KVM или повреждении патча) проверяет cascade-порт на подключение к свитчу. И при положительном ответе автоматически меняет роли ethernet с cascade-портов между собой. Таким образом, вся цепь сразу работает в другую сторону. Если вдруг отвалилась первая IP-KVM или повредился патч где-то в середине, то гирлянда буквально делится на две части и продолжает работать.
Иногда еще хочется консольником подключиться к serial-порту — и даже тут нас выручает IP-KVM. Специально для таких целей в устройство встроили отдельный порт с автополярностью, чтобы не обжимать rollover-патч. Настройка свитчей и специфичного оборудования упрощается в разы.
Наверное, вы уже поняли, что подключить KVM к серверу — значит, буквально встать перед ним и подключиться монитором с клавиатурой. Осталось только придумать, как бы флешку вставить для установки ОС. Вдруг сервер только собрали, он полностью пустой, а флешку подключать — не вариант. Или ОС полностью крашнулась и нужно срочно накатывать новую…
Специально для таких аварий у Lantronix есть режим работы в Java, который позволяет загружать любые ISO-образы с вашего компьютера. К сожалению, такой режим имеет очень плохой user experience. Нужно устанавливать стороннее ПО и ставить Java определенной версии… Да и, если честно, сам визуал хромает.

Но это нужно же не только нам. Клиентам тоже хочется арендовать сервер и пользоваться им не только через SSH. Специально для них мы поработали над настройками KVM, создав немного скриптов.
И вот инженеры могут легко подключить устройство к серверу клиента — достаточно нажать кнопку автонастройки, тогда KVM получает статический белый IP и новый пароль для клиента, а на указанный порт свитча выставляется специальный VLAN для доступа к IP-KVM из интернета.
Неужели есть минусы?
А куда без них. Самое неприятное — это стоимость подобных решений. Цена в 300 000 ₽ за один Lantronix — довольно высокая даже для крупного провайдера IT-инфраструктуры. Конечно, есть и аналоги вроде ATEN CN800, но даже они стоят от 60 000 ₽, а функционал в разы скромнее.
Отсутствует возможность cascade-подключений.
Нет резервирования питания, все идет по I/O-портам от сервера.
Один RJ-45 на все задачи, а значит нет консольного подключения.
При этом количество IP-KVM пропорционально зависит от количества серверов в дата-центре. И, как вы понимаете, с каждым годом нам необходимо все больше и больше устройств.
Мы посчитали траты и решили найти достойную альтернативу нынешним IP-KVM. Нужно было интересное по функционалу устройство с возможность масштабирования и простотой в эксплуатации. И вот мы нашли BLIKVM-CM4.
BLIKVM-CM4, или как мы пришли к своей KVM
Один из наших инженеров случайно наткнулся на интересный проект — IP-KVM на базе Raspberry Pi. Изучив всю доступную информацию в интернете, он решил заказать эту «игрушку». И каково же было его удивление, что приехала самая настоящая KVM на open source-платформе.

В небольшой коробочке собрана вся прелесть DIY-подхода с ноткой открытого исходного кода. На базе Raspberry Pi мы получаем новую, удобную, дешевую и полностью настраиваемую под себя IP-KVM.
По сути, это обычная Raspberry Pi 4 в красивой коробочке и разными портами. Но суть кроется в деталях, ведь можно легко собрать прошивку под свои нужды. Например, добавить аутентификацию логин/пароль, включить эмуляцию флеш-накопителя и выделить объем памяти под загрузочные iso-образы ОС. А еще — задать видеокодеки и настроить ему битрейт с FPS, выделить сочетания клавиш для HID, поменять интерфейс под свой стиль и добавить динозаврика. Спойлер: именно так мы и сделали.
Все эти функции уже входят в стандартную прошивку PiKVM OS, которую можно легко разобрать и сшить под свой вкус — обширная документация идет в придачу. Open source – это круто!

Проектирование корпуса под PCI-e KVM
В скором времени линейка BLIKVM стала расширятся. Появилась PCI-e модель:

Теперь даже коробочки нет — только сплошная плата с максимальным функционалом за 20 000 ₽.
Мы решили попробовать изготовить свой корпус — от проектирования модели в Blender до 3D-печати. По сути, нам нужен был небольшой защитный «коробок» с перфорацией и портами:
Type-C, RJ-45 и HDMI;
место для срочной замены SD-карты, на которой установлена прошивка IP-KVM;
«окно» под небольшой экран;
перфорация у радиатора CPU, чтобы в монолитном кейсе не случилось перегрева;
Также для удобства нужно было разделить корпус на две части: крышку и основание. В результате получился первый вариант кейса для IP-KVM:

Специально для таких задумок у нас стоят 3D-принтеры с разными типами пластика. Выбор конкретного в нашем случае не был критично важным, поэтому сначала мы использовали PLA. А для устойчивости конструкции выставляли заполнение хотя бы на 10-15% и уже после отправляли в печать. На создание одного комплекта (основа + крышка) потребовалось около четырех часов.
Не забыли и откалибровать 3D-принтер на испытуемом:

Спустя с десяток попыток и исправления неточностей получили почти идеальную модель. И вот наш DIY-набор готов к крафту.
Сборка устройства
Итого, для сборки нужны Blicube CM4 PCI (комплект: плата, Raspberry Pi CM4, дисплейный модуль с кабелем, microSD), наш спроектированный и напечатанный корпус, впаиваемые закладные гайки M2.5x3mm (4 шт), винты M2.5x6mm (4 шт), отвертка и паяльник.

Сборка состоит всего из нескольких действий.
Впаиваем латунные закладные в пластиковый корпус.
Устанавливаем плату, выводим порты в пазы.
Прикручиваем дисплей и закрываем корпус.


Наконец, получаем такой результат:

Первый продовый экземпляр под кодовым названием Pi-KVM_V12. Именно таких моделей у нас большинство. Их чаще всего используют в проектах типа Chipcore из-за HDMI-порта и быстрого подключения. Вот только условия эксплуатации бывают разными, а значит надо адаптироваться.
Улучшение устройства
Нет предела совершенству. Через пару недель мы добавили в корпусе выемки и стали устанавливать неодимовые магниты для крепления KVM к стойкам. А через месяц кто-то начал клеить на корпус резиновые вкладки, чтобы улучшить сцепление с окрашенным металлом стоек.

Спустя время наши инженеры подумали наперед и для предотвращения возможных проблем с перегревом в жарких стойках создали улучшенную версию с маленьким вентилятором и гравировкой динозаврика!
Вот первые наброски:


Новые модели получили название TSNP Edition (Throttling shall not pass). Да, такой маленький вентилятор не меняет картину кардинально, но градусов 10 сбрасывает — ощутимый результат в условиях обдува 70 градусным ветерком.

Особенности устройства
Главным минусом, как и плюсом, является полностью открытая архитектура. Для работы этих маленьких коробочек нужно тратить время инженеров на создание образов прошивок, на 3D-модели и просто на сборку. Lantronix предоставляет готовый продукт, который из коробки идет в продакшен, а BLIKVM дает простор для творчества и подгонки.
Любые нововведения требуют масштабных обновлений всех собранных коробочек. Даже добавление одного скрипта может потратить целый день работы инженера.
Но это же и плюсы! Например, в отличии от Lantronix у наших IP-KVM нет cascade-режима. Каждая KVM нуждается в личном патч-корде. Это не очень удобно, поэтому сейчас мы хотим модернизировать BLIKVM и добавить Ethernet-порт для cascade-подключения.

Довольны ли мы решением
Да, довольны. Мы прошли длинный путь к финальной реализации проекта на BLIKVM. А самое интересное, что это все — благодаря энтузиазму инженеров. Кому-то захотелось придумать свое решение — он подготовил базу и описал свой подход. Инженер из другого дата-центра вдохновился и продолжил разработку, внося свое видение. А инженер третьего дата-центра создал полноценную прошивку, инженер четвертого — модернизировал 3D-модель и оптимизировал их печать. И вот — вы читаете эту статью.

А какие IP-KVM предпочитаете вы? Поделитесь своим опытом и мнением о нашей разработке в комментариях!