Pull to refresh

Поднятие терминального сервера на примере LTSP и CentOS 5.4

Reading time 6 min
Views 30K

Интро


Сейчас стала очень популярна идея использования тонких клиентов, а в частности – для организации учебных классов в ВУЗах и не только. Вот и для моего любимого ВУЗа пришлось потрудиться.
Не так давно мне была поставлена задача выбора и настройки терминального сервера на CentOS 5.4. Почему именно CentOS – ума не приложу, но скорее всего это было предпочтение наших системных администраторов, которые в последствии будут поддерживать терминальный сервер. Ну а мне выбирать права предоставлено не было.

Задача для меня была новой, показалась довольно интересной, и с первого взгляда не тривиальной. Изучив много информации, которую мне поведал Google мой выбор пал на LTSP (Linux Terminal Server Project). Данное программное обеспечение использует протокол XDMCP для аутентификации между Х-сервером и Х-клиентом, а так же проект xrdp, который позволяет терминальным клиентам (тонким клиентам) подключаться как к *NIX системам, так и к Windows.

Существует множество дистрибутивов, в которых уже используется данное ПО и которые были специально созданы для терминальных серверов, такие как K12LTSP и Skolelinux. А так же данное решение поставляется и с альтернативным диском Ubuntu.
В моем же случае все немного усложнялось тем, что готовых решений под CentOS не существует, в репозиториях данные пакеты так же не располагаются. При настройке и установке наступал на некоторые грабли, решение которых отнимало не мало времени. Поискав возможные решения по установке LTSP на любимом Хабре я ничего не нашел, по этому и родилась идея написать статью.

Надеюсь что данная информация кому-либо пригодиться и постараюсь как можно подробнее описать процесс установки и настройки.

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


Думаю тут много рассказывать не нужно. Тонкие клиенты обычно являются сами по себе бездисковые станции. При включении они пытаются загрузиться с помощью сетевой карты используя PXE. Т.к. PXE ограничивает размер загрузчика 32 килобайтами – используется двухстадийная загрузка, когда первый загрузчик получает и запускает вторичный, который уже получает и запускает образ операционной системы. После чего загружается ядро ОС, созданное LTSP, которое монтирует через NFS файловую систему, хранящуюся на терминальном сервере и запускает терминальный клиент, который подключается к терминальному серверу.
Итогом всего вышеописанного должен получиться сервер, на котором подняты DHCP, TFTP, NFS, а так же сам терминальный сервер.

И так приступим


Первое, что мне необходимо было сделать – установить CentOS 5.4 x86_64. Хочу оговорить сразу, что с CentOS’ом опыт работы у меня невелик. По чему-то так сложилось, что всю линейку RedHat и основанные на ней дистрибутивы я недолюбливаю. В качестве графической оболочки я отдал предпочтение KDE (ну недолюбливаю я Gnome и все тут), хотя потом я об этом немного пожалел, т.к. возник ряд проблем именно с KDE и CentOS’ом.

Первым делом идем на сайт и качаем образ диска c пакетами LTSP (http://ltsp.mirrors.tds.net/pub/ltsp/isos/). Я выбрал версию 4.1.1, т.к. навороты более новых версий (такие как сессии через ssh и прочее мне были не нужны). Далее монтируем этот образ и устанавливаем пакет ltsp-utils.0.11-o.noarch.rpm

#rpm –i ltsp-utils.0.11-o.noarch.rpm


После чего мы получаем утилиты командной строки ltspadmin и ltspcfg. Первая утилита используется для настройки установки и самой установки LTSP, вторая – для конфигурации уже установленного терминального сервера. Запускаем утилиту ltspadmin.

image

Первым делом нам необходимо сконфигурировать установщик, соответственно мы выбираем пункт меню Configure the installer options. Первым вопросом нам предлагается определить откуда мы будем получать пакеты. Можно использовать сайт самого проекта, но разумнее указать путь к смонтированному нами образу. В моем случае это file:///media/CDROM/. Обратите внимание, что в пути используется именно 3 слеша, на что указывается и в документации по установке.

image

Следующий вопрос – путь куда будет установлен LTSP. По умолчанию он указывает на /opt/ltsp. Его изменять я не вижу смысла. Если же вы указали в качестве пути к местоположению пакетом http адрес (который задан по умолчанию) тогда вам необходимо указать адрес http (или же ftp, если пакеты лежат на ftp) прокси-сервера. В конце подтверждаем правильность настроек и нас возвращает к предыдущему пункту меню. Теперь мы можем приступать к установке терминального сервера.

После установки мы будем иметь:
  • пакеты LTSP в папке /opt/ltsp
  • файлы, необходимые для загрузки PXE клиентов в папке /tftpboot/lts/


Установка DHCP и TFTP серверов.


Для загрузки по сети наших тонких клиентов нам необходимы DHCP и ТFTP сервера. TFTP сервера в дистрибутиве CentOS я не нашел, а DHCP решил поставить вручную – так надежнее. Соответственно устанавливаем их:

# yum install dhcp.x86_64 tftp-server.x86-64


Далее необходимо открыть 69 порт для UDP протокола в фаерволе нашего терминального сервера. Для этого используем консольную утилиту system-config-securitylevel-tui. Жмем кнопку «Уточнить» и настраиваем правила нашего firewall’a

image

В моем случае у меня на сервере 2 интерфейса: один смотрит в сеть классов – второй является managment-интерфейсом. Выбираем интерфейс, через который наши тонкие клиенты будут стучаться к tftp-серверу и добавляем его к доверенным, а так же открываем для него 69 порт.

Конфигурация LTSP


Для конфигурации мы можем воспользоваться пунктом меню Configure LTSP утилиты ltspadmin или же напрямую вызвать ltspcfg. В появившемся меню выбираем ручную настройку:

image

Проходимся по всем 11 пунктам. Пункт 8 можно в принципе пропустить. После завершения — у нас будут настроено практически все необходимое.
Стоит уделить внимание пунктам 3 и 7. В пункте 3 будет создан файл примера конфигурации DHCP сервера (/etc/dhcpd.conf.sample), который необходимо отредактировать. После изменений – у меня он приобрел следующий вид:

#
# Sample configuration file for ISC dhcpd
#
# Make changes to this file and copy it to /etc/dhcpd.conf.sample
#

ddns-update-style none;
default-lease-time 21600;
max-lease-time 21600;

#option domain-name "ltsp"; # <--Fix this domain name

option option-128 code 128 = string;
option option-129 code 129 = text;

subnet 192.168.130.0 netmask 255.255.255.0 {
use-host-decl-names on;
option log-servers 192.168.130.254;
range dynamic-bootp 192.168.130.1 192.168.130.253; ## пул адресов.
option root-path "192.168.130.254:/opt/ltsp/i386"; ##опция ядру где находиться файловая система.
option broadcast-address 192.168.130.255;
option routers 192.168.130.254;
option subnet-mask 255.255.255.0;
if substring (option vendor-class-identifier, 0, 9) = "PXEClient" ##указываем что передавать в кач-ве загрузчика для PXE клиентов
{
filename "lts/2.6.9-ltsp-3/pxelinux.0"; ##в CentOS tftp обычно запущен с опцией -s, поэтому полный путь от корня указывать не нужно. полный путь должен выглядеть как /tftpboot/lts/.....
}
next-server 192.168.130.254; ## <- Обязательно указать. В противном случае загрузочный образ не получит конфиг!
}


Хочу обратить внимание на то, что в путь к PXE загрузчику указывается не полный, т.к. в RedHat и CentOS он запускается с ключем –s, соответственно папку tftp-сервера в пути мы опускаем. Так же возникла проблема с тем, что по-идее опцию next-server необходимо указывать только тогда, когда DHCP и TFTP сервера находятся на разных серверах. Но без этой опции загрузка глохла, пока я не продублировал самого себя в качестве next-server’a.

На этом этапе я обрадовался, что настройка завершена и попытался загрузиться с тонкого клиента. Но не тут то было! В итоге запускались Иксы, но подключения к терминальному серверу не происходило. Как оказалось стандартным менеджером сеансов в CentOS являеться gdm (Gnome), а так как Gnome у меня вообще отсутствовал – kdm даже и не пробовал запускаться. Для того, что бы ОСь использовала kdm необходимо внести некоторые изменения в файл конфигурации, а именно - /etc/sysconfig/desktop (если файл отсутствует – его необходимо создать):

DISPLAYMANAGER="KDE"


Следующим огорчением было то, что при запуске иксов на терминальном клиенте – они падали, т.к. сервер тупо отвергал любые попытки открыть удаленные сеансы. Изменить это не проблема, проблемой для меня стало то, что я не мог найти стандартных файлов конфигурации KDE. В CentOS они «спрятаны» совершенно в другом месте. В итоге его местоположение можно определить следующим образом:

# locate Xaccess


Далее в указанном файле ищем строчку

#* #any host can get a login window


И раскомментируем ее. Перезапускаем Иксы, бутаем наш тонкий клиент – и вуаля! Все работает!

Выводы


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

Ссылки по теме



http://subhodip.fedorapeople.org/ltsp_in_fedora8.pdf
http://edin.no-ip.com/content/ltsp-ubuntu-intrepid-mini-howto
http://www.ltsp.org.ru/files/OnlineDocs/ltsp-3.0-ru/chapter6.html
http://www.owlriver.com/tips/gdm-setup/remotexkdm.html
http://sourceforge.net/apps/mediawiki/ltsp/index.php?title=Ltsp_Documentation
Tags:
Hubs:
+26
Comments 28
Comments Comments 28

Articles