Настройка Space Gateway
Общие сведения
Space Gateway (шлюз подключения внешних пользователей) - это решение, позволяющее обеспечить удаленный доступ для пользователей виртуальных рабочих столов.
Подробнее о Space Gateway в архитектуре системы VDI и рекомендуемых схемах инсталляции для систем различного масштаба.
Установка Space Gateway
Установку Space Gateway необходимо выполнить в соответствии с инструкцией:
Технические требования к ВМ/ФМ для установки Space Gateway:
-
Оперативная память – не менее 4 Гб.
-
Количество ядер процессора – не менее 4.
-
Объем дискового пространства - не менее 30 ГБ.
-
Сетевой интерфейс – не менее 10 Гбит Ethernet, в количестве не менее одного.
Данная ВМ/ФМ с установленным шлюзом обеспечивает 1000 подключений.
Установка Space Gateway в режиме ЗПС
Для работы Space Gateway в режиме ЗПС перед установкой Space Gateway необходимо добавить публичный ключ в систему. Для этого необходимо подключить в систему установочный диск Space Dispatcher и выполнить копирование ключа с помощью команд:
-
Примонтировать ISO-образ:
sudo mount /media/cdrom
-
Скопировать публичный ключ dakom_m_pub.key с установочного ISO-образа в каталог /etc/digsig/keys/:
sudo cp /media/cdrom/dakom_m_pub.key /etc/digsig/keys/
-
Выполнить команду для применения настроек:
sudo update-initramfs -uk all
-
Размонтировать ISO-образ:
sudo umount /media/cdrom
-
Выполнить перезагрузку.
-
Выполнить установку Space Gateway согласно инструкции.
-
Включить режим ЗПС и выполнить перезагрузку.
Схемы работы шлюза
Возможны 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