Серверы
  • Готовые серверы
  • Конфигуратор
  • Серверы с 1CPU
  • Серверы с 2CPU
  • 4 поколение AMD EPYC и Intel Xeоn
  • Серверы с AMD Ryzen и Intel Core i9
  • Серверы для хранения данных
  • Cерверы с портом 10 Гбит/c
  • GPU
  • Распродажа
  • VPS
    GPU
  • Выделенные серверы с GPU
  • Виртуальные серверы с GPU
  • Распродажа
    Маркетплейс
    Colocation
  • Размещение серверов в дата-центре в Москве
  • Обслуживание серверов в других ЦОД
  • Кластеры
    Прокат
    Услуги
  • Аренда сетевого оборудования
  • Защита L3-L4 от DDoS атак
  • IPV4 и IPV6 адреса
  • Администрирование серверов
  • Уровни технической поддержки
  • Мониторинг сервера
  • BYOIP
  • USB диск
  • IP-KVM
  • Трафик
  • Коммутация серверов
  • AI-чат-бот Lite
  • О нас
  • Работа в HOSTKEY
  • Панель управления серверами и API
  • Дата-центры
  • Сеть
  • Тест скорости
  • Специальные предложения
  • Отдел продаж
  • Для реселлеров
  • Гранты для специалистов по Data Science
  • Гранты для научных проектов и стартапов
  • Документация и Частые вопросы
  • Новости
  • Блог
  • Оплата
  • Документы
  • Сообщите о нарушении
  • Looking Glass
  • 11.05.2022

    Apache Guacamole и взаимодействие с API: реальный кейс использования oVirt

    server one

    Производители оборудования предлагают заказчикам разные методы удаленного управления серверами, не зависящие от операционной системы. Мы уже писали о разработанной специалистами HOSTKEY веб-консоли для материнских плат Supermicro, которая не требует локальной установки Java. Оборудованием Dell тоже можно управлять удаленно с помощью встроенной в DRAC консоли VNC. Рассказываем, как это делать.

    Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.
    HOSTKEY

    VNC (Virtual Network Computing) — система, обеспечивающая подключение к удаленному компьютеру по протоколу RFB (Remote FrameBuffer). Этот протокол позволяет обслуживать несколько одновременных пользовательских сессий.

    Почему Apache Guacamole?

    В первой реализации нашего решения требовалось активировать проброс порта удаленного управления и открыть консоль DARC через VNC с помощью специальной кнопки. Потом нужно было дождаться загрузки файла console.vv и открыть его, предварительно установив Virtual Machine Manager tools на локальном компьютере. Метод несложный, но он доставлял пользователям неудобства и приводил к дополнительным ошибкам при работе с арендованным оборудованием.

    Access VNC console

    Пример файла: console.vv

    [virt-viewer]
    type=vnc
    host=HOST_IP
    port=5906
    password=3dB2h1Ey/gTb
    # Password is valid for 120 seconds.
    delete-this-file=1
    fullscreen=0
    toggle-fullscreen=shift+f11
    release-cursor=shift+f12
    secure-attention=ctrl+alt+end
    versions=rhev-win64:2.0-160;rhev-win32:2.0-160;rhel7:2.0-6;rhel6:99.0-1
    newer-version-url=http://www.ovirt.org/documentation/admin-guide/virt/console-client-resources
    
    [ovirt]
    host=localhost.localdomain:443
    vm-guid=0ecc8183-b0a9-4a95-b045-1967acf2dab7
    sso-token=sG6zUyrXT0X8qOkCWoVL_vWLcYTPQfo2hqHrH1AHvXPz4G9PofFlqarEFXcH9bizILPufhF_2KghkD-o5Qxktw
    admin=1

    Чтобы упростить пользователям жизнь, пришлось реализовать прямой вызов веб-консоли HTML5 из личного кабинета без локальной установки Virtual Machine Manager tools. Для этого мы выбрали Apache Guacamole — свободно распространяемый кроссплатформенный шлюз для удаленных рабочих столов, который поддерживает все популярные протоколы и технологии: Telnet, SSH/SFTP, RDP, Kubernetes, а также VNC (RFB). Важное преимущество Apache Guacamole — он не требует установки клиентских программ или специальных плагинов. Пользователь получает доступ к управлению оборудованием из браузера, нажав одну кнопку в личном кабинете:

    Access HTML5 console

    Как это работает?

    Активировать консоль можно не только в браузере, но и с помощью curl-запроса напрямую к нашему API:

    curl -s "https://invapi.hostkey.com/eq.php" -X POST \
    --data "action=novnc" \
    --data "token=SESSION_TOKEN" \
    --data "id=SERVER_ID" \
    --data "pin=PIN_CODE"

    Пример ответа:

    {
    "result":"OK",
    "scope":"https://rcnl1.hostkey.com:8443/guacamole/#/?username=USER_NAME&password=PASSWORD",
    "context":{"action":"novnc","id":"14494","location":"NL"},
    "Debug":"debug",
    "Key":"36ecafa60a13fd8000dcca73fd9528f5"
    }

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

    Общая схема вызова VNC-консоли в браузере из личного кабинета клиента:

    Общая схема вызова VNC-консоли

    При запросе через Invapi дается команда в API на открытие консоли определенного сервера через кластер брокера сообщений (RabbitMQ). Для этого достаточно передать в брокер сообщений номер сервера.

    RabbitMQ передает данные сервера и задачу на созданный нашими специалистами вспомогательный сервис-ресивер. Ресивер забирает данные в RabbitMQ, преобразует всю необходимую информацию, разделяет задачи (например, oVirt, Cisco, IPMI и т. д.) и отправляет их агенту (fence agent).

    Чтобы управлять виртуальными машинами через API или через web-интерфейс, мы выбрали oVirt. Система использует гипервизор KVM и основана на нескольких проектах, в том числе libvirt, Gluster, PatternFly и Ansible. Она достаточно проста в эксплуатации и отличается высокой надежностью. Подробнее о нашем опыте интеграции oVirt в рабочую инфраструктуру речь пойдет в отдельной статье.

    Структура oVirt fence agent:

    inputRawURLConsole := inputRawURL + "/vms" + "/" + vm.MustId() + "/graphicsconsoles" + "/" + Vnc
    //
    ……..
    //
    url := noVncURL + url + "/skey/" + *key + "/id/" + *name + "/ovirt/pass/" + passwd_encode + "/port/" + port + "/location/" + *location1
    
    item := APICallBack{Result: "OK", Debug: "debug"}
    item.Message = string(body)
    jitem, err := json.Marshal(item)
    if err != nil {
    	fmt.Println(err.Error())
    	return
    }
    
    fmt.Println(string(jitem))

    Fence agents соответствуют типам используемого в нашей инфраструктуре оборудования. Они обращаются на сервер с docker-novnc, у которого есть доступ в сеть oVirt. Агент загружает консоль и забирает необходимые параметры хоста (IP и пароль), после чего декодирует полученные данные и отправляет запрос к API noVnc на роутер oVirt, откуда происходит обмен данными с API Guacamole. Агент передает на сервер запрос GET, в котором содержится IP-адрес и ID сервера, а также сессионный токен для сервера.

    Структура запроса:

    r.Get("/{id}/skey/{key}/id/{uid}/ovirt/pass/{upass}/port/{uport}/location/{uloc}", StageHandler)

    После завершения обработки запроса клиент получает доступ к управлению оборудованием через консоль VNC.

    Пример открытой консоли для Windows:

    Пример открытой консоли для Windows

    Пример открытой консоли для CentOS:

    Пример открытой консоли для CentOS

    Проблема горячих клавиш

    Определенные комбинации клавиш невозможно нажать в веб-приложении, поскольку они зарезервированы ОС (например, Ctrl-Alt-Del или Alt-Tab) или браузером. Эту проблему можно решить с помощью вызова меню навигации Apache Guacamole с помощью комбинации клавиш Ctrl-Alt-Shift (скрыть меню позволяет повторное нажатие этой комбинации). В нем можно выбрать метод ввода (текст, экранная клавиатура), включить режим эмуляции мыши, выбрать язык и часовой пояс, а также закрыть рабочую сессию.

    Англоязычная версия меню навигации:

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

    Заключение

    Использование Apache Guacamole упрощает управление серверным оборудованием различных производителей. В будущем мы планируем разработать решение, позволяющее избежать автоматического закрытия консоли спустя два часа.

    Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

    Другие статьи

    16.12.2024

    Как посмотреть запущенные контейнеры в Docker?

    Хотите узнать, какие контейнеры запущены в вашем Docker? В этой статье мы расскажем о простых командах, которые помогут это сделать.

    28.11.2024

    OpenWebUI обновился. Что нового привнесла версия 0.4.5?

    OpenWebUI обновился до версии 0.4.5! Новые функции для RAG, групп пользователей, аутентификации, улучшенная производительность и многое другое. Узнайте, как обновиться и использовать его возможности на максимум.

    18.11.2024

    Настройка Nginx на сервере

    Как правильно установить и настроить Nginx на сервере для повышения производительности вашего сайта. Пошаговая инструкция поможет вам настроить Nginx быстро и без ошибок.

    18.11.2024

    Рейтинг быстрых VPS и VDS-серверов

    Топ-10 самых быстрых VPS и VDS-серверов: узнайте, какие серверы обеспечат максимальную производительность и скорость для ваших проектов.

    25.10.2024

    TS3 Manager: что происходит, когда додумываешь документацию

    Есть проблемы с подключением к TS3 Manager после установки на VPS? Управление сервером TeamSpeak через TS3 Manager не такое уж и простое, как кажется. Давайте решим проблемы вместе!

    HOSTKEY Выделенные серверы в Европе, России и США Готовые решения и индивидуальные конфигурации серверов на базе процессоров AMD, Intel, карт GPU, Бесплатной защитой от DDoS-атак и безлимитный соединением на скорости 1 Гбит/с 30
    4.3 48 48
    Upload