Предоставление доступа к TRS машине

Модуль RSserver предоставляет следующие способы доступа к TRS машине:

  1. Веб-интерфейс TRS: для доступа к TRS машине перейдите по адресу <IP-адрес>:8888/trs/.
  2. Клиент RSclient: для доступа к TRS машине через клиент укажите <IP-адрес> в поле адрес сервера в настройках клиента.

Мьютекс

Мьютекс - механизм, служащий в программировании для синхронизации одновременно выполняющихся потоков. Мьютексы могут находиться в одном из двух состояний — отмеченном или неотмеченном (открыт и закрыт соответственно). Когда какой-либо поток, принадлежащий любому процессу, становится владельцем объекта мьютекс, последний переводится в неотмеченное состояние. Если задача освобождает мьютекс, его состояние становится отмеченным. Задача мьютекса — защита объекта от доступа к нему других потоков, отличных от того, который завладел мьютексом. В каждый конкретный момент только один поток может владеть объектом, защищённым мьютексом. Если другому потоку будет нужен доступ к переменной, защищённой мьютексом, то этот поток блокируется до тех пор, пока мьютекс не будет освобождён.

Тот же принцип применен в RSserver: при подключении к виртуальной машине одного проекта устанавливается мьютекс на данный проект, который запрещает в текущей момент времени доступ к проекту, пока задача не освободит мьютекс. Если на пользователя уже была назначена виртуальная машина, то механизм мьютекса не будет задействован, поскольку в этом случае синхронизация не нужна.

Особенности подключения

  1. Если при подключении не указывается TRS проект пользователя, то сначала выполняется проверка на то, имеется ли назначенная на пользователя TRS машина, и если такая машина имеется, то подключение осуществляется к ней. Если назначенная на пользователя TRS машина отсутствует, то выполняется поиск TRS проекта пользователя, в котором будет произведен запуск новой TRS машины или назначение на пользователя имеющейся свободной машины.

  2. Подключение по умолчанию осуществляется к произвольной активной TRS машине выбранного TRS проекта, которая назначена данному пользователю или группе пользователей, в которую включен данный пользователь.

  3. В случае, если пользователь не имеет назначенной TRS машины в проекте, к которому подключается, но имеет назначенный TRS диск, то диск автоматически подключится к свободной TRS машине, затем машина будет назначена пользователю. При удалении TRS машины с подключенным TRS диском, диск не будет удален.

  4. В случае если пользователь подключается к домену или TRS проекту типа Standard, где нет назначенных ему TRS машин, но есть не назначенные никому, он автоматически получает назначение, в этом случае всегда взамен назначенной запускается резервная TRS машина в том же проекте (если в проекте не исчерпаны квоты).

  5. Если в проекте типа Standard указан параметр min_reserve_vm (количество резервных виртуальных машин/дисков), то при получении незанятой TRS машины или незанятого TRS диска будет создана новая запасная машина/диск в том случае, если не осталось достаточное количество свободных машин/дисков, равное min_reserv_vm. Если параметр min_reserve_vm не указан, то резервные TRS машины/диски будут создаваться всегда при получении свободной виртуальной машины.

  6. Если в проекте типа Standard указан параметр min_reserve_vm, то при получении назначенной пользователю TRS машины/диска ничего не меняется вне зависимости от параметра min_reserve_vm.

  7. Если в проекте типа Standard нет свободных TRS машин/дисков, и создается новая TRS машина/диск, то будет создана резервная TRS машина/диск, если для параметра min_reserve_vm указано значение. Если значение параметра min_reserve_vm отсутствует, резервная машина создаваться не будет.

  8. Если в домене или TRS проекте типа Simultaneous, к которому осуществляется подключение пользователя, нет доступных TRS машин (со статусами Активна, На паузе, Отключена), назначенных на пользователя, то подключение не будет произведено. Подключение осуществляется только к TRS машине, назначенной на данного пользователя.

  9. Если в домене или TRS проекте любого типа, к которому осуществляется подключение пользователя, нет активных TRS машин, но есть назначенная на пользователя TRS машина в статусе На паузе, клиент отправляет запрос на снятие TRS машины с паузы.

  10. Если в домене или TRS проекте любого типа, к которому осуществляется подключение пользователя, нет активных TRS машин, но есть назначенная на пользователя TRS машина в статусе Отключена, клиент отправляет запрос на включение TRS машины.

  11. Если в TRS проекте, к которому осуществляется подключение пользователя с правами user, по умолчанию выбран тип инстанса с нулевым корневым диском и отсутствуют свободные TRS машины, то новая TRS машина запущена не будет. Согласно политики OpenStack запуск новых машин с типом инстанса, который имеет нулевой корневой диск, доступен только для администратора, данная политика настраивается в файле /etc/nova/policy.json.

  12. Для ограничения доступа пользователей к TRS машине, при подключении к TRS проекту типа Standard создается группа безопасности, в которую включаются правила, позволяющие обеспечить доступ пользователя к назначенной ему TRS машине:

    Направление Тип Ethernet IP протокол Диапазон портов Префикс удаленного IP-адреса Удаленная группа безопасности
    Ingress IPv4 ICMP Any <source_ip>/32
    Ingress IPv4 TCP 1 - 65535 <source_ip>/32
    Ingress IPv4 UDP 1 - 65535 <source_ip>/32
    Egress IPv4 ICMP Any <source_ip>/32
    Egress IPv4 TCP 1 - 65535 <source_ip>/32
    Egress IPv4 UDP 1 - 65535 <source_ip>/32

Важно

Согласно политикам безопасности в OpenStack Train только Администратор имеет права на создание и запуск виртуальных машин без диска и с корневым диском равным 0.