Настройка Space Gateway
Общие сведения
Space Gateway (шлюз подключения внешних пользователей) - это решение, позволяющее обеспечить удаленный доступ для пользователей виртуальных рабочих столов.
Схема сетевого взаимодействия
Поддержка протокола Loudplay шлюзом подключений внешних пользователей запланирована на 3Q 2025 года.
Установку Space Gateway необходимо выполнить в соответствии с инструкцией:
Технические требования к ВМ/ФМ для установки Space Gateway:
-
Оперативная память – не менее 4 Гб.
-
Количество ядер процессора – не менее 4.
-
Объем дискового пространства - не менее 30 ГБ.
-
Сетевой интерфейс – не менее 10 Гбит Ethernet, в количестве не менее одного.
Данная ВМ/ФМ с установленным шлюзом обеспечивает 1000 подключений.
Схемы работы шлюза
Возможны 2 схемы работы шлюза:
- Без NAT.
- С использованием NAT.
Подключение без NAT
Cхема непосредственного подключения к шлюзу (без NAT) используется при развёртывании всей инфраструктуры внутри локальной сети, если не предполагается доступ из Интернета.
В этом случае Публичный IP-адрес шлюза
будет соответствовать Виртуальному IP-адресу
.
В настройках диспетчера для полей Адрес шлюза
и Виртуальный IP
указывается одинаковый адрес.
Подключение с использованием NAT
Схема с NAT используется, если предполагается осуществлять подключение к инфраструктуре из Интернета.
В этом случае на маршрутизаторе должна быть выполнена трансляция Публичного IP-адреса
на Виртуальный IP-адрес
.
Публичный IP-адрес
Публичный IP-адрес - это адрес шлюза. Он прописывается в настройках диспетчера Настройки - Система - Шлюз в поле Адрес шлюза.
Подготовка
Виртуальный IP-адрес
назначается на сетевой интерфейс с помощью программы Keepalived.
Конфигурирование (настройка) Keepalived выполняется шлюзом автоматически.
В этой конфигурации всегда будет использован первый сетевой интерфейс в системе.
Возможно добавление нескольких сетевых интерфейсов хосту шлюза. В этом случае также в качестве основного управляющего сетевого интерфейса будет использован первый сетевой интерфейс в системе.
Настройка
1. Проверка, запущены ли необходимые службы
sudo systemctl status vdi-gateway
sudo systemctl status haproxy
sudo systemctl status keepalived
2. Просмотр настроек
-
Настройки хранятся в файле
/opt/vdi-gateway/app/settings.db
. Это файл базы данных SQLite. Чтобы прочитать его, необходимо установить программуsqlite3
:sudo apt install sqlite3
-
Открыть файл настроек:
sqlite3 settings.db
-
Получить настройки, выполнив запрос:
select * from settings
Настройки представляют собой строку json
:
{"is_enabled":true,"internal_addrs":["10.254.150.132"],"ssl":false,"disp_addrs":["10.244.32.32"],"disp_port
":4200,"public_addr":"10.254.150.136","virtual_addr":"10.254.150.136","api_port":8000,"balancer_api_port":8002
,"port_range_start":5900,"port_range_stop":5999,"api_key":"IVNGbmpzZGtmdWV3","cli_key":"U0ZuanNka2Z1ZXch"}
3. Проверка настроек Haproxy и Keepalived
-
Настройки Haproxy хранятся в файле
/etc/haproxy/haproxy.cfg
.Пример конфигурации HAProxy
listen stats bind 10.254.150.136:8003 mode http stats enable stats uri / http-request use-service prometheus-exporter if { path /metrics } peers sticktables bind :10000 server gw table sticky-sessions type ip size 1m frontend service_tunnel bind 10.254.150.136:443 default_backend service_tunnel backend service_tunnel balance roundrobin server gateway_0 10.254.150.132:4300 check frontend client bind 10.254.150.136:8002 default_backend client backend client balance roundrobin stick match src table sticktables/sticky-sessions stick store-request src table sticktables/sticky-sessions server gateway_0 10.254.150.132:8000 check frontend tunnels bind 10.254.150.136:5900-5999, default_backend tunnels backend tunnels balance roundrobin stick match src table sticktables/sticky-sessions stick store-request src table sticktables/sticky-sessions server gateway_0 10.254.150.132
-
Настройки Keepalived хранятся в файле
/etc/keepalived/keepalived.conf
.Пример конфигурации Keepalived
global_defs { router_id gw } vrrp_script check_haproxy { script "/usr/bin/systemctl is-active --quiet haproxy" } vrrp_script check_gateway { script "/usr/bin/systemctl is-active --quiet vdi-gateway" } vrrp_instance gateway { state BACKUP interface eth0 virtual_router_id 1 virtual_ipaddress { 10.254.150.136 } track_script { check_haproxy check_gateway } }
4. Работа с API
Интерфейс API шлюза доступен на порте 8000. Дополнительная информация о портах.
В шлюзе есть эндпоинты. Одни предназначены для получения запросов от диспетчера, другие - от клиента.
Для выполнения http-запросов необходимо авторизоваться с помощью токена, который передается в заголовке запроса.
Для этого нажать кнопку Authorize
и ввести ключ авторизации api_key
(для диспетчера) или cli_key
(для клиента), значение которого можно получить из настроек:
-
api_key
требуется для выполнения http-запросов от диспетчера:/v3/get_settings/
/v3/change_settings/
/v3/get_connections/
/v3/disconnect/
/v3/health/
-
cli_key
требуется для выполнения http-запросов от клиента:/v3/open_connection/
/v3/connect/
5. Проверка работоспособности туннеля
На хосте шлюза в API выполнить запрос /v3/get_connections/
.
В ответе запроса будет список всех соединений, запущенных на данном хосте.
6. Сброс всех запущенных соединений
Закрыть все запущенные соединения на хосте можно перезапуском службы шлюза:
sudo systemctl restart vdi-gateway.service
7. Версия Space Gateway
В интерфейсе работы с API рядом с заголовком Space Gateway отображается номер версии.
Версия 1.6.3
приведена в качестве примера, она может отличаться.
8. Вывод лога в реальном времени
Для мониторинга работы шлюза можно запустить вывод лога в реальном времени командой:
sudo journalctl -u vdi-gateway --follow