Перейти к содержанию

Настройка 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

image

Подключение с использованием NAT

Схема с NAT используется, если предполагается осуществлять подключение к инфраструктуре из Интернета.

В этом случае на маршрутизаторе должна быть выполнена трансляция Публичного IP-адреса на Виртуальный IP-адрес.

Схема с использованием NAT

image

Публичный IP-адрес

Публичный IP-адрес - это адрес шлюза. Он прописывается в настройках диспетчера Настройки - Система - Шлюз в поле Адрес шлюза.

Настройка со стороны диспетчера

img


Подготовка

Виртуальный IP-адрес назначается на сетевой интерфейс с помощью программы Keepalived. Конфигурирование (настройка) Keepalived выполняется шлюзом автоматически. В этой конфигурации всегда будет использован первый сетевой интерфейс в системе.

Сетевой интерфейс

image

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

Несколько сетевых интерфейсов

image


Настройка

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 приведена в качестве примера, она может отличаться.

Версия Space Gateway

image

8. Вывод лога в реальном времени

Для мониторинга работы шлюза можно запустить вывод лога в реальном времени командой:

sudo journalctl -u vdi-gateway --follow