Предоставление доступа к TRS машине¶
Модуль RSserver предоставляет следующие способы доступа к TRS машине:
- Веб-интерфейс TRS: для доступа к TRS машине перейдите по адресу
<IP-адрес>:8888/trs/
. - Клиент RSclient: для доступа к TRS машине через клиент укажите
<IP-адрес>
в поле адрес сервера в настройках клиента.
Мьютекс¶
Мьютекс - механизм, служащий в программировании для синхронизации одновременно выполняющихся потоков. Мьютексы могут находиться в одном из двух состояний — отмеченном или неотмеченном (открыт и закрыт соответственно). Когда какой-либо поток, принадлежащий любому процессу, становится владельцем объекта мьютекс, последний переводится в неотмеченное состояние. Если задача освобождает мьютекс, его состояние становится отмеченным. Задача мьютекса — защита объекта от доступа к нему других потоков, отличных от того, который завладел мьютексом. В каждый конкретный момент только один поток может владеть объектом, защищённым мьютексом. Если другому потоку будет нужен доступ к переменной, защищённой мьютексом, то этот поток блокируется до тех пор, пока мьютекс не будет освобождён.
Тот же принцип применен в RSserver: при подключении к виртуальной машине одного проекта устанавливается мьютекс на данный проект, который запрещает в текущей момент времени доступ к проекту, пока задача не освободит мьютекс. Если на пользователя уже была назначена виртуальная машина, то механизм мьютекса не будет задействован, поскольку в этом случае синхронизация не нужна.
Особенности подключения¶
Если при подключении не указывается TRS проект пользователя, то сначала выполняется проверка на то, имеется ли назначенная на пользователя TRS машина, и если такая машина имеется, то подключение осуществляется к ней. Если назначенная на пользователя TRS машина отсутствует, то выполняется поиск TRS проекта пользователя, в котором будет произведен запуск новой TRS машины или назначение на пользователя имеющейся свободной машины.
Подключение по умолчанию осуществляется к произвольной активной TRS машине выбранного TRS проекта, которая назначена данному пользователю или группе пользователей, в которую включен данный пользователь.
В случае, если пользователь не имеет назначенной TRS машины в проекте, к которому подключается, но имеет назначенный TRS диск, то диск автоматически подключится к свободной TRS машине, затем машина будет назначена пользователю. При удалении TRS машины с подключенным TRS диском, диск не будет удален.
В случае если пользователь подключается к домену или TRS проекту типа Standard, где нет назначенных ему TRS машин, но есть не назначенные никому, он автоматически получает назначение, в этом случае всегда взамен назначенной запускается резервная TRS машина в том же проекте (если в проекте не исчерпаны квоты).
Если в проекте типа Standard указан параметр min_reserve_vm (количество резервных виртуальных машин/дисков), то при получении незанятой TRS машины или незанятого TRS диска будет создана новая запасная машина/диск в том случае, если не осталось достаточное количество свободных машин/дисков, равное min_reserv_vm. Если параметр min_reserve_vm не указан, то резервные TRS машины/диски будут создаваться всегда при получении свободной виртуальной машины.
Если в проекте типа Standard указан параметр min_reserve_vm, то при получении назначенной пользователю TRS машины/диска ничего не меняется вне зависимости от параметра min_reserve_vm.
Если в проекте типа Standard нет свободных TRS машин/дисков, и создается новая TRS машина/диск, то будет создана резервная TRS машина/диск, если для параметра min_reserve_vm указано значение. Если значение параметра min_reserve_vm отсутствует, резервная машина создаваться не будет.
Если в домене или TRS проекте типа Simultaneous, к которому осуществляется подключение пользователя, нет доступных TRS машин (со статусами Активна, На паузе, Отключена), назначенных на пользователя, то подключение не будет произведено. Подключение осуществляется только к TRS машине, назначенной на данного пользователя.
Если в домене или TRS проекте любого типа, к которому осуществляется подключение пользователя, нет активных TRS машин, но есть назначенная на пользователя TRS машина в статусе На паузе, клиент отправляет запрос на снятие TRS машины с паузы.
Если в домене или TRS проекте любого типа, к которому осуществляется подключение пользователя, нет активных TRS машин, но есть назначенная на пользователя TRS машина в статусе Отключена, клиент отправляет запрос на включение TRS машины.
Если в TRS проекте, к которому осуществляется подключение пользователя с правами user, по умолчанию выбран тип инстанса с нулевым корневым диском и отсутствуют свободные TRS машины, то новая TRS машина запущена не будет. Согласно политики OpenStack запуск новых машин с типом инстанса, который имеет нулевой корневой диск, доступен только для администратора, данная политика настраивается в файле
/etc/nova/policy.json
.Для ограничения доступа пользователей к 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.