RX/about
RX@Etersoft — терминальный сервер под Linux
Описание
RX@Etersoft позволяет организовать терминальный сервер, на котором выполняются приложения Linux или Windows, а на рабочие станции передаётся только изображение.
RX@Etersoft - это система, основанная на протоколе NX, которая позволит вам запускать удаленные сеансы X11 даже через сетевые каналы с низкой пропускной способностью. Для подключения к серверам можно использовать различные операционные системы, которые поддерживает клиент RX@Etersoft: Linux, Mac OS X, Solaris и Windows.
Благодаря уникальному методу сжатия данных, передаваемых по X-протоколу и набору прокси-агентов, алгоритму "ленивого" кодирования и способности NX подстраиваться под задержки и пропускную способность канала достигается удобство работы и достаточная скорость обновления экрана даже на низкоскоростных соединениях.
Кроме того, с NX возможно подключиться к удалённому VNC- или RDP-серверу, опираясь на клиенты RDesktop и TightVNC, путем инкапсуляции сессий RDP и RFB в рамках сессии X11.
Преимущества терминального сервера RX@Etersoft по сравнению с обычным подключением к Linux-серверу:
- простота администрирования;
- значительное ускорение работы приложений, которые активно используют передачу данных по сети (например, 1С:Предприятие 7.7);
- возможно удалённое безопасное подключение через интернет;
- подключение клиентского оборудования (принтеры, сканеры, фискальные регистраторы);
- возможность подключаться как Linux, так и из MS Windows.
- эффективное сжатие трафика X;
- механизм кэширования для повторного использования данных, передаваемых между сервером и клиентом;
- резкое сокращение временных затрат на обращение к X;
- алгоритм ленивого кодирования для отложенного обновления экрана
Если вы хотите увидеть разные возможности RX@Etersoft, попробуйте различные настройки графического клиента:
- При выборе типа соединения "LAN", ни сжатие NX, ни "ленивое" кодирование использоваться не будут.
- На типе "ADSL" вы увидите в действии все эти методы, в том числе и кэширование.
Варианты использования
RX@Etersoft позволяет организовать работу несколькими способами:
- Режим полноценного рабочего стола:
- Клиент полностью подключается к терминальному серверу. Рабочий стол и все приложения выполняются на терминальном сервере.
- Режим одного приложения
- Клиент использует локальный Рабочий стол и к терминальному серверу подключается только при использовании одного приложения
Некоторые основы NX
В основе протокола X лежит связь между X-сервером и X-клиентом. Клиент представляет собой программу с простым графическим интерфейсом, облегчающим работу пользователя. X-сервер - это программа, которая способна отрисовывать графический интерфейс X-клиента и любой другой запущенной программы на экран. Так же он обрабатывает события от клавиатуры и мыши, отправляя их обратно в программу X-клиента, обрабатывающего эти действия как пользовательские команды.
Когда X-клиент хочет отобразить что-либо на экране, он выдает серию соответствующих запросов X-серверу. Существует около 160 различных типов запросов, включая расширения, указанные в протоколе X. Некоторые запросы, например, представляют собой графические примитивы. Они описаны в конце файла с исходным кодом Xproto.h, включенным в NX-X11 Open Source и доступном по этой ссылке.
Некоторые запросы, посланные клиентом, нуждаются в ответе X-сервера. Это замедляет реакцию программы, поскольку для завершения запроса необходима двухсторонняя передача данных.
Для протокола X сеть является прозрачной. То есть, не имеет значения, где находится клиент, а где сервер. Они могут находится на одной и той же машине, а могут быть и на разных компьютерах в километрах друг от друга. Локальный X-сервер может отрисовывать графический интерфейс как локальной программы-клиента, так и запущенной на другом компьютере. Удаленному клиенту можно даже отправить события от локальных клавиатуры и мыши.
Если у вас есть аккаунт на удаленной системе Linux или Solaris, вы можете проверить это, выполнив из локального терминала xterm команду:
ssh -X username@server xterm
Эта команда создаст защищенный канал SSH для туннелирования трафика X11 c удаленного сервера. Если на нем настроен проброс X, то новый xterm с сервера появится на экране вашего локального монитора.
Обратите внимание, что первое окно с удаленного сервера будет выводиться достаточно медленно, поскольку количество начальных запросов клиента исчисляется многими тысячами. Это создает ощущение, будто вы работаете за медленной, непроизводительной системой. Когда же клиент и сервер работают на одном и том же хосте, связь между ними идет через UNIX-сокеты и обращения происходят довольно быстро. Но в случае, если клиент и сервер запущены на разных машина, их межпроцессное взаимодействие осуществляется через протокол TCP/IP и физическую сеть. В этом и есть причина медленной работы X через сеть.
Проблем с производительностью добавляют так же и задержки в сети. Качество связи любого типа описывается двумя параметрами: её пропускной способностью и задержками. Полоса пропускания относится к набору байтов, которые могут быть переданы в секунду, в то время как задержки указывают на время, необходимое для перемещения из одного конца сети в другой. Как правило, Dial-UP модемы имеют задержку от 200 до 500 миллисекунд. ADSL-соединение имеет задержку около 50 миллисекунд, а задержки в местной локальной сети составляют менее одной миллисекунды. Задержки в UNIX Domain Socket ниже 0.1 миллисекунды.
Технический принцип
- Клиент с помощью публичного ключа авторизуется от имени пользователя nx на ssh-сервере, где запущен nx-сервер.
- Пользователь nx из специального шелла авторизует конечного пользователя.
- Под пользователем запускается nxnode, который в свою очередь запускает nxagent в качестве X и DesktopManager (если необходим).
Детали
RX@Etersoft без проблем работает в отдельном контейнере типа OpenVZ.
Клиент от nomachine позволяет использовать режим rootless, когда программа запущенная в терминале отображается как «нативная» на рабочем столе пользователя, а не в терминале.
Nomachine клиент в линуксе профили настроек сессий хранит в /.nx/config в файлах с расширением .nxs.