вторник, 25 ноября 2008 г.

ALTSP inside OpenVZ VE

Требуется обеспечить всем необходимым (доступ в интернет, почта, офисные приложения и учетное ПО) небольшой офис, в котором имеется один приличный сервер и десяток бездисковых рабочих станций. Задача прекрасно решается средствами ALTSP, однако есть одна проблема - очень уж неудобно держать на одном хосте офис, почтовый сервер, прокси-сервер и т.д. Решение - OpenVZ, возможно, с размазыванием функциональности ALTSP по разным VE.

Первый вопрос, на который следует ответить: будем ли мы использовать venet, veth или вообще проброс физических интерфейсов в VE. Первый вариант, конечно, bit faster and more efficient, но не умеет броадкастов, а потому всю инфраструктуру, необходимую для загрузки бездисковых клиентов придется разместить в HN. В дальнейшем предполагаем, что используется OpenVZ в ALT Linux Lite 4.0 c виртуальной сетью 192.168.0.0/24 и физической сетью 192.168.1.0/24 - в последней и будут размещены бездисковые клиенты.

Настраиваем загрузку клиентов по TFTP:
# apt-get install dnsmasq

# chkconfig dnsmasq on

# cat /dev/null > /etc/sysconfig/dnsmasq

# cat > /etc/dnsmasq.conf <<END
bind-interfaces
interface=lo
interface=lan
resolv-file=/etc/resolv.conf.dnsmasq
strict-order
expand-hosts
domain=local
dhcp-range=192.168.1.10,192.168.1.50
enable-tftp
tftp-root=/diskless/altsp/boot/i586
dhcp-boot=pxelinux.0
END

# cat > /etc/resolv.conf.dnsmasq <<END
nameserver ${NAMESERVER}
END

# cat > /etc/resolv.conf <<END
nameserver 127.0.0.1
search local
END

# mkdir -p /diskless/altsp/boot/i586/pxelinux.cfg

# cat > /diskless/altsp/boot/i586/pxelinux.cfg/default <<END
DEFAULT vmlinuz ro initrd=initrd.img root=/dev/nfs nfsroot=/diskless/altsp/root/i586,udp ip=dhcp
END

# service dnsmasq start
В /diskless/altsp/boot/i586 нужно положить vmlinuz, initrd.img и pxelinux.0 из уже существующей инсталляции ALTSP (см. каталог /var/lib/tftpboot/ltsp/i586/) - увы, автономного инструмента для сборки пока нет :(

Уже на этом этапе загрузка бездисковых клиентов начнется, но остановится на монтировании корневой файловой системы. Настроим раздачу корня по NFS:
# apt-get install unfs3

# chkconfig nfs on
# chkconfig portmap on

# cat > /etc/exports <<END
/diskless/altsp/root/i586 (ro,no_root_squash)
END

# service portmap start
# service nfs start
В /diskless/altsp/root/i586 тоже нужно положить каталог /var/lib/ltsp/i586 из существующей инсталляции ALTSP.

Также включим поддержку сетевого свопа на случай непредвиденного расхода памяти на клиентах:
# apt-get install ltspswapd
# chkconfig ltspswapd on
# service ltspswapd start
Теперь бездисковые клиенты смогут полностью загрузиться и обратиться по XDMCP к тому же серверу, с которого загрузились, но безуспешно: никакого XDMCP там нет и не предполагается. Сначала укажем адрес сервера XDMCP:
# cat >> /diskless/altsp/root/i586/etc/lts.conf <<END
XDM_SERVER=192.168.0.101
END
Затем создадим соответствующий виртуальный сервер с помощью скрипта-обертки, описанного ранее:
# create-ve.sh 101 desktop 4.1 i586
Установим в него все необходимое:
# vzctl start desktop
# vzctl enter desktop

# cat > /etc/sysconfig/i18n <<END
LANG=ru_RU.UTF-8
SUPPORTED=ru_RU
END

# cat > /etc/X11/xinit/Xkbmap <<END
-layout us,ru
-option grp:ctrl_shift_toggle
-variant ,winkeys
END

# apt-get install gdm gdm-theme-altlinux xfce4-minimal xfce-mcs-plugins xfce-settings-simple icon-theme-hicolor xterm Thunar leafpad firefox-ru fonts-ttf-ms

# subst 's/happygnome-list/altlinux/' /etc/X11/gdm/custom.conf
# subst 's/Greeter/RemoteGreeter/' /etc/X11/gdm/custom.conf
# subst '/\[greeter\]/aGraphicalThemedColor=#90a8ca' /etc/X11/gdm/custom.conf
# subst '/\[xdmcp\]/aEnable=true' /etc/X11/gdm/custom.conf
# subst 's/id:3:initdefault:/id:5:initdefault:/' /etc/inittab

# exit

# vzctl restart desktop
И вот теперь бездисковые рабочие станции должны загрузиться и показать приглашение GDM.

Комментариев нет: