Серверы
  • Готовые серверы
  • Конфигуратор
  • Серверы с 1CPU
  • Серверы с 2CPU
  • 4 поколение AMD EPYC и Intel Xeоn
  • Серверы с AMD Ryzen и Intel Core i9
  • Серверы для хранения данных
  • Cерверы с портом 10 Гбит/c
  • GPU
  • Распродажа
  • VPS
    GPU
  • Выделенные серверы с GPU
  • Виртуальные серверы с GPU
  • Распродажа
    Маркетплейс
    Colocation
  • Размещение серверов в дата-центре в Москве
  • Размещение серверов в дата-центре в Амстердаме
  • Обслуживание серверов в других ЦОД
  • Кластеры
    Прокат
    Услуги
  • Аренда сетевого оборудования
  • Защита от DDoS атак
  • IPV4 и IPV6 адреса
  • Администрирование серверов
  • Уровни технической поддержки
  • Мониторинг сервера
  • Программное обеспечение
  • BYOIP
  • USB диск
  • IP-KVM
  • Трафик
  • Коммутация серверов
  • Поставки оборудования за рубежом
  • О нас
  • Работа в 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 в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

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

    17.04.2024

    Как выбрать правильный сервер c подходящими для ваших нейросетей CPU/GPU

    Рассказываем о наиболее важных компонентах, которые влияют на выбор сервера для искусственного интеллекта

    05.04.2024

    VPS, хостинг сайтов или конструктор? Где разместить сайт бизнесу?

    Давайте сравним размещение сайта на VPS, хостингах сайтов (общих хостингах) и в популярных конструкторах сайтов.

    21.03.2024

    Есть ли жизнь после Microsoft Teams и OneDrive?

    Ищем альтернативу облачным сервисам Microsoft. Чем заменить Microsoft Teams, OneDrive, Excel, Microsoft 365 и Azure

    07.03.2024

    Как AI помогает побороть монополию в спортивной рекламе и при чем тут GPU и выделенные серверы

    ИИ и AR-технологии позволяют адаптировать рекламу на спортивных соревнованиях под разные аудитории в реальном времени, используя облачные GPU-решения.

    14.02.2024

    От xWiki к static-HTML. Как мы документацию «переезжали»

    Выбор платформы для создания портала с внешней и внутренней документацией. Перенос документов с cWiki на Material for MkDocs

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