Журнал LinuxFormat - перейти на главную

LXF106:LTSP

Материал из Linuxformat
Версия от 21:31, 15 марта 2009; Yaleks (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

LTSP: Доступно о тонких клиентах

Хотите работать с современными программами на старом ПК? Еще бы! Нейл Ботвик покажет, как сделать это с помощью Linux Terminal Server Project.

Когда я впервые сел за компьютер в Манчестерском вычислительном центре в 1977 году, мы были в комнате, полной терминалов, подключенных к удаленному мейнфрейму. Тогда по-другому было нельзя – настольных компьютеров не существовало. По сути, это и были «тонкие клиенты». Компьютеры пользователей (терминалы) предоставляли немногим больше экрана и клавиатуры, а вся настоящая работа выполнялась на сервере. Сегодня с помощью Linux Terminal Server Project (LTSP) можно работать по схожей схеме – хотя на терминалах больше нет зеленого текста, а для работы сервера не нужно вентилируемое помещение. Терминология тоже слегка изменилась. Называть пользовательские компьютеры «тупыми терминалами» больше не годится, теперь это «тонкие клиенты». Сервер – просто сервер, хотя, наверное, «толстый сервер» тоже подошел бы.

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

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

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

Как это работает?

Мысленно вернитесь к учебнику по сетевой загрузке в LXF100/101. Если вы его не читали (как вам не стыдно!), вот выжимка. Большинство сетевых адаптеров, особенно те, что встроены в материнские платы, позволяют загружать компьютер по сети. При этом BIOS клиента отправляет особый DHCP-запрос, а сервер выдает специальный сетевой загрузчик (либо Pxelinux, либо версию Grub). Последний показывает клиенту необязательное загрузочное меню и скачивает ядро. Сервер также экспортирует каталог NFS в качестве корневой директории для клиента. После этого процесс загрузки и использования компьютера продолжается как обычно. Единственное различие в том, что жесткий диск находится на конце сетевого кабеля протяженностью в несколько метров, а не шлейфа длиной в несколько дюймов.

LTSP начинает с того же самого, но вместо загрузки с сетевого диска полноценной системы он ограничивается минимальной версией, в которой есть средства для запуска ядра, старта X, обработки клавиатуры и мыши (и, обычно, звука). Потом он создает XDMCP-сеанс, в рамках которого рабочий стол сервера открывается на «тонком клиенте». На терминале не выполняется никаких пользовательских программ – все они запускаются на сервере, но используют клиентские устройства ввода-вывода. Это также означает, что загрузка может происходить быстрее, чем на обычном компьютере, даже несмотря на то, что система работает на более медленном оборудовании и загружает сеть, потому что большинство программ, запускаемых при обычном старте, уже работает на сервере.

Системные требования

Требования к серверу зависят от числа подключенных клиентов и того, будут ли они все работать одновременно. В компьютерном классе школы большинство компьютеров используется параллельно, создавая большую нагрузку на сервер, а в офисе, куда люди приходят и уходят, единомоментно может быть запущено лишь 30-40% систем (кроме утра, когда все приходят на работу и заходят на важные сайты вроде YouTube и Facebook).

Общая рекомендация всегда была такой: 256 МБ оперативной памяти на сам сервер плюс 60 МБ на каждого подключенного клиента (иногда советуют выделять по 100 МБ на терминал). Так как все программы выполняются на сервере, не помешает иметь запас вычислительной мощности: особенно хорошо подойдет двухядерная или двух-процессорная система. При работе со множеством клиентов неплохо бы использовать 64-битный процессор, не только из-за дополнительной производительности, но и потому, что он может работать с большим количеством памяти, что часто является наиболее важным фактором, ограничивающим производительность.

Клиентам хватит очень скромных системных ресурсов, поскольку всю работу делает сервер – достаточно 128 МБ ОЗУ и процессора Pentium II. Основное требование – компьютер должен иметь возможность загрузки по сети, хотя и без этого можно обойтись (см. врезку «Альтернативные методы загрузки»). Необходима и быстрая сеть – по меньшей мере, гигабитное соединение от сервера до маршрутизатора и 100-мегабитные соединения для клиентов.

Установка LTSP-сервера

Здесь у вас есть выбор: можно воспользоваться специализированным дистрибутивом, где все уже есть и (по большей части) настроено, или установить пакеты LTSP в имеющуюся систему. Каждый способ имеет свои преимущества – предустановленный LTSP, безусловно, гораздо более удобен с точки зрения развертывания; с другой стороны, существующий дистрибутив привычнее, особенно если он используется на всех компьютерах сети. Конечно, если есть версия вашего дистрибутива с поддержкой LTSP, можно взять с полки пирожок и съесть его – например, пользователи Ubuntu будут чувствовать себя в Edubuntu, как дома.

Так как тонкие клиенты работают на одном компьютере, то с дистрибутивом, который вы выберете, будут взаимодействовать все пользователи, и это тоже может повлиять на ваше решение. Дистрибутив с LTSP имеет смысл брать в том случае, если вы устанавливаете выделенный LTSP-сервер для школы или офиса. С другой стороны, если вы хотите просто поэкспериментировать с технологией, добавочный пакет избавит вас от проблем с установкой новой системы. Еще один способ попробовать – это взять специализированный дистрибутив и установить его на виртуальную машину VirtualBox или VMware.

Есть несколько дистрибутивов с поддержкой LTSP – список наиболее популярных приведен во врезке справа. Все они направлены на образовательный рынок, где в основном и используется LTSP. Мы остановимся на Edubuntu, поскольку многие из нас знакомы с его родителем – Ubuntu.

В Edubuntu используется известный по Ubuntu текстовый инсталлятор. Выберите в меню загрузки первую опцию Install to the hard disk [Установить на жесткий диск], и дистрибутив будет инсталлирован с поддержкой LTSP. Во время установки появится сообщение об отсутствии доступных для LTSP интерфейсов, но не беспокойтесь. Инсталлятор Ubuntu настраивает сетевой интерфейс на использование DHCP, но с LTSP это невозможно: он сам является сервером DHCP и потому требует статического IP-адреса. Скоро мы это исправим. Иногда также возникает проблема с подвисанием инсталлятора во время создания клиентского образа [client image], хотя это, кажется, происходит только при установке на виртуальную машину. Для решения проблемы выберите опцию установки без LTSP, затем (после перезагрузки) запустите Synaptic для добавления ltsp-server и ltsp-server-standalone и выполните sudo ltsp-build-client. Результат будет таким же.

Теперь откройте пункт меню System > Administration > Network [Система > Администрирование > Сеть], щелкните на кнопке Properties [Свойства] и выключите режим роуминга для проводного интерфейса. Выберите Static [Статический] и введите подходящие IP-адрес, маску подсети и адрес шлюза. Если вы не уверены, какой адрес использовать, возьмите данные, предоставленные текущим сервером DHCP: их можно получить с помощью команд

sudo ifconfig eth0
sudo route -n

Теперь отредактируйте файл /etc/ltsp/dhcpd.conf и установите подходящие значения. Если вы находитесь в сети 192.168.1.*, должно сработать что-то вроде этого:

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.128 192.168.0.250;
option domain-name “mydomain.com”;
option domain-name-servers 192.168.1.1;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;

Подразумевается, что адрес маршрутизатора – это 192.168.1.1, и он же предоставляет DNS-сервисы для вашей сети. Если вы в расположены другой сети, измените значения соответствующим образом.

Теперь нужно отключить все DHCP-серверы в вашей сети. Когда вы загружаете клиента, он отправляет в сеть DHCP-запрос, на который должен ответить сервер LTSP. Некоторые серверы DHCP умеют игнорировать заданные MAC-адреса – в таком случае можно оставить их работать, обеспечив невосприимчивость к запросам «тонких клиентов». Это удобно, если вы тестируете LTSP на временной или виртуальной системе. В настоящей установке, сервер LTSP должен предоставить сервисы DHCP для сети.

Установка на желаемый дистрибутив

Чтобы установить LTSP в ваш дистрибутив, потребуется пакет ltsp-utils, который должен быть в его репозиториях. Мы воспользуемся Fedora 8, но в других дистрибутивах процедура будет примерно такой же. В Fedora, пакет ltsp-utils находится в основном репозитории, и его можно установить с помощью Yum. Если в вашем дистрибутиве нет ltsp-utils, загрузите необходимое с сайта http://www.ltsp.org, где можно найти пакеты для Debian, RPM и Slackware. Там есть также универсальный пакет, ltsp-utils-0.25-0.tgz, который можно установить в любом дистрибутиве с помощью команд

tar xf ltsp-utils-0.25-0.tgz
cd ltsp_utils
su -c ./install.sh

Как бы ни проходила установка, после нее нужно запустить ltspadmin от имени root. Если для использования HTTP или FTP требуется прокси-сервер, зайдите в Configure The Installer Options [Настроить установщик] и укажите его, в противном случае можно оставить настройки по умолчанию и сразу перейти в Install/Update LTSP Packages [Установить/Обновить LTSP-пакеты]. Сначала нужно выбрать пакеты, которые вы хотите установить – здесь проще всего нажать A для отметки всех вариантов. Чтобы получить информацию по каждой опции, подсветите ее и нажмите S. Для начала установки нажмите Q. Это может потребовать некоторого времени, в зависимости от скорости вашего интернет-соединения.

Теперь у нас есть все необходимое ПО для запуска удаленного сеанса с «тонкого клиента», но оно еще не сконфигурировано. Воспользуемся опцией Configure LTSP [Настроить LTSP], которая запускает ltspcfg. Для того, чтобы видеть статус всех нужных файлов и сервисов, нажмите S. Файлы должны быть отмечены словом ‘yes’, а сервисы – выполняться. Нажмите C в меню настройки, чтобы настроить каждый элемент по очереди. В системах, основанных на Red Hat или SUSE, уровень выполнения должен быть равен пяти, на производных от Debian – двум.

Секция DHCP создает лишь пример конфигурационного файла в /etc/dhcpd.conf.sample, который нужно отредактировать, как и в случае с Edubuntu, и переименовать в /etc/dhcpd.conf. Здесь важно проверить, что директивы в dhcpd.conf указывают на существующие файлы. Во-первых, проверьте настройки server_args в файле /etc/xinetd.d/tftp – там будет что-то вроде -s /tftpboot; это означает, что имена файлов в dhcpd.conf задаются относительно данного каталога. Так, если dhcpd ищет /lts/2.6.20-9-ltsp-1/pxelinux.0, настоящий файл должен быть таким: /tftpboot/lts/2.6.20-9-ltsp-1/pxelinux.0. Это сбивает с толку многих людей. Нужно задать имена двух файлов – первый используется для загрузки с PXE, а второй – прочими методами. Причина в том, что ограничение на размер загрузочного файла в PXE составляет 32 КБ, так что он передает загрузчик, который затем загружает ядро. Etherboot загружает ядро непосредственно.

Пройдитесь по различным настройкам – сопровождающий текст вам поможет, и значения по умолчанию обычно вполне разумные. В большинстве случаев нужно лишь убедиться, что необходимое ПО установлено (с помощью менеджера пакетов дистрибутива) и настроено на запуск во время загрузки. В Fedora 8 не используется Portmap, который ожидает увидеть ltspcfg, поскольку он заменен rpcbind. Это означает, что можно не обращать внимания на ругань ltspcfg о его отсутствии.

На последнем этапе в каталоге /opt/ltsp/i386/etc создается файл lts.conf. Этот каталог экспортируется как корневой для клиентов, поэтому файл появится в их директориях /etc, где хранятся настройки. Опции по умолчанию отлично подойдут, если вы хотите, чтобы на клиенте открывался единственный экран рабочего стола. В документации на сайте http://www.ltsp.org описаны более сложные варианты использования. Теперь перезагрузите компьютер. Этот шаг не обязателен, но он дает возможность снова запустить ltspcfg, чтобы убедиться, что все сервисы настроены и работают.

Загрузка первого клиента

Теперь сервер установлен, и пора проверить его работу, загрузив другой компьютер в той же сети. В нормальной ситуации это будет «тонкий клиент» – а для тестирования подойдет любой i386-совместимый ПК, даже виртуальный. Да что там говорить – в процессе обкатки виртуальными могут быть и клиент, и сервер!

Для клиента не нужно задавать специальных настроек, кроме установки в BIOS загрузки по сети или с дискеты, если сетевая карта попалась «ущербная». Вы должны увидеть обмен DHCP, за которым последует TFTP-передача загрузчика и ядра. После этого запуск продолжится, как обычно. Большая часть этой информации пролетит слишком быстро, чтобы вы могли ее заметить, но не беспокойтесь – раз так, значит, все работает нормально. Если загрузка на каком-то этапе остановится, текст на экране сообщит об ошибке, и мы будем искать решение.

В любом случае, должен появиться обычный графический экран входа в систему. Введите имя пользователя и пароль – загрузится рабочий стол сервера, который почти неотличим от локального. Что здесь можно запускать? Ответ – все, что угодно, поскольку ради этого все и затевалось. Однако помните, что все обновления экрана отправляются по сети, так что поиграть в игры с приличным FPS не получится. Но возможность работать с ресурсоемкими приложениями, такими как OpenOffice.org, на компьютере с пониженным энергопотреблением – настоящее преимущество.

Поиск неполадок

Как только сервер будет настроен, клиент должен загружаться – но практика часто отличается от теории. Во время загрузки клиента есть достаточно моментов, когда что-то может пойти не так, и то, что мы видим, где все остановилось – хороший способ локализовать проблему. Если компьютер даже не пытается загружаться по сети, наверное, нужно включить опцию в BIOS. Если вы пользуетесь загрузочной дискетой ROM-o-matic, и она не работает, попробуйте другой образ диска – различия могут быть даже между практически одинаковыми картами.

Если загрузка по сети начинается, но завершается по тайм-ауту, убедитесь, что все межсетевые экраны на сервере разрешают соединения DHCP и TFTP. DHCP обычно разрешен, но TFTP по умолчанию блокируется. Если на экране компьютера клиента вы видите результаты обмена DHCP-пакетами, то он работает. Это можно проверить и по содержимому журнала на сервере – обычно это файл /var/log/messages. Во время загрузки клиента, выполните команду

tail -f /var/log/messages

Перед вами должны пролететь несколько сообщений DHCP, заканчивающихся DHCPACK. Если на клиенте затем происходит сбой при TFTP-передаче, то сообщение об ошибке с загрузкой PXE будет таким: “PXE-E32: TFTP open timeout”. Вероятных объяснений три: либо сервер TFTP не запущен, и это подтвердит ltspcfg; либо путь к образу ядра в /etc/dhcpd.conf задан неверно; либо брандмауэр блокирует запрос. Последнее проверить проще всего – просто выключите межсетевой экран на несколько секунд во время загрузки клиента. Если это помогло, откройте UDP-порт 69 для локальных IP-адресов.

Следующий этап, на котором что-то может пойти не так – это монтирование корневой файловой системы через NFS. В этом случае появится сообщение “Failed to mount the root directory via NFS!”, за которым последует паника ядра. Проверьте, что каталог, указанный как root-path в файле /etc/dhcpd.conf, есть в /etc/exports. Если его нет, исправьте /etc/exports и примените изменения командой

exportfs -r

Если все верно, то, наверное, наш друг брандмауэр снова блокирует доступ. В этом случае нужно открыть порты NFS и RPC для локальной сети. Это – 111 и 2049 для TCP и UDP. А теперь – вперед! Почувствуйте энергию использования меньшей энергии!

Персональные инструменты
купить
подписаться
Яндекс.Метрика