LTSP, kuormantasaus

Ohessa kuvaillaan perinteinen LTSP-järjestelmä, jossa tarvitaan kuormantasausta. Järjestelmä perustuu Debianiin, koska se tukee edelleen hyvin vanhoja tyhmiä päätteitä kuten HP t-sarjaa, esimerkkinä HP t5135.

Tässä esimerkissä on yksi juuripalvelin ja kolme ohjelmistopalvelinta. Käyttäjien kotihakemistot ovat jaettu juuripalvelimelta NFS-palvelulla. Käyttäjien tiedot (tunnus/salasana) pitää olla kaikissa palvelimissa, myös ohjelmistopalvelimissa. Yksinkertaisimmillaan tiedostot (passwd, group, shadow) vain kopioidaan juuripalvelimelta ohjelmistopalvelimille.

Juuripalvelin on 64-bittinen, johon on luotu 32-bittinen chroot-hakemisto LTSP-järjestelmää varten. Ohjelmistopalvelimet ovat 32-bittisiä. Kaikissa palvelimissa on LXDE-työpöytäympäristö.

LTSP Logo Juuripalvelin: http://cdimage.debian.org/debian-cd/7.6.0/amd64/iso-cd/debian-7.6.0-amd64-lxde-CD-1.iso

LTSP Logo Ohjelmistopalvelimet: http://cdimage.debian.org/debian-cd/7.6.0/i386/iso-cd/debian-7.6.0-i386-lxde-CD-1.iso

Perusasennus on Debian-ohjeen mukaan.

LTSP Logo Debian LTSP Howto: https://wiki.debian.org/LTSP/Howto

Palvelimet on nimetty tässä esimerkissä näin. Palvelimille on annettu kiinteä osoite.
192.168.0.105 debian-ltsp
192.168.0.106 debian-app-01
192.168.0.107 debian-app-02
192.168.0.108 debian-app-03

Juuripalvelin

Asennetaan kaikki tarvittavat ohjelmistot, myös DHCP-palvelin.
apt-get install ltsp-server-standalone

Lisäksi rakennetaan 32-bittinen chroot-hakemisto tyhmille päätteille.
ltsp-build-client --arch i386

Ohjelmistopalvelimet

Ohjelmistopalvelimiin ei asenneta muuta kuin ”ldm-server”-paketti.
apt-get install ldm-server

Asetustiedostot

Jotta kuormantasaus toimisi, niin pitää luoda skripti, muokata lts.conf-tiedostoa ja lisätä ohjelmistopalvelinten ssh-avaimet juuripalvelimelle.

get_hosts-skripti

Skripti luodaan ”/opt/ltsp/i386/usr/share/ltsp/” hakemistoon.
nano /opt/ltsp/i386/usr/share/ltsp/get_hosts

Kopioi tämä get_hosts-tiedostoon:
#!/bin/bash
# Prioritize the server list contained in MY_SERVER_LIST parameter based on server rating
TMP_LIST=""
SHUFFLED_LIST=""
if [ -z "$MY_SERVER_LIST" ]; then
SHUFFLED_LIST=$SERVER
else
for i in $MY_SERVER_LIST; do
rank=$(netcat $i 9571 | grep rating | cut -d: -f2)
if [ -n "$rank" ]; then
TMP_LIST="$TMP_LIST\n${rank}_$i"
fi
done

TMP_LIST=$(echo -e $TMP_LIST | sort -r)
for i in $TMP_LIST; do
SHUFFLED_LIST="$SHUFFLED_LIST $(echo $i | cut -d_ -f2)"
done
fi
echo $SHUFFLED_LIST

Muokkaa tiedosto ajettavaksi.
chmod 755 /opt/ltsp/i386/usr/share/ltsp/get_hosts

lts.conf-tiedosto

Tiedostoon ”lts.conf” pitää lisätä seuraava MY_SERVER_LIST-rivi.
nano /opt/ltsp/i386/etc/lts.conf

[Default]
LDM_DIRECTX=True
[--]
MY_SERVER_LIST="192.168.0.106 192.168.0.107 192.168.0.108"

Ohjelmistopalvelimien ssh-avaimet

Kun kaikki ohjelmistopalvelimet ovat käynnissä, niin lisää ne juuripalvelimelle seuraavalla tavalla.

Luo tyhjä tiedosto ”/etc/ltsp/ssh_known_hosts.auto”
touch /etc/ltsp/ssh_known_hosts.auto

Lisää ssh-avaimet.
ltsp-update-sshkeys 192.168.0.106 debian-app-01 192.168.0.107 debian-app-02 192.168.0.108 debian-app-03

Päivitä ssh-avaimet.
ltsp-update-sshkeys

Tarkista päätteiden kirjautuminen

Näin juuripalvelimella oleva skripti jakaa päätteet ja kirjautumiset tasaisesti kolmelle ohjelmistopalvelimelle. Juuripalvelimella ei ole päätteiden prosesseja.

root@debian-app-01:~# ps ax | grep ltsp
3214 ? Ss 0:00 sshd: ltsp003 [priv]
3219 ? S 0:00 sshd: ltsp003@pts/1
3235 ? Ss 0:00 bash -c LTSP_CLIENT=192.168.0.201 LTSP_CLIENT_HOSTNAME=ltsp201 LTSP_CLIENT_MAC=08:00:27:2C:BE:71 LIBGL_ALWAYS_INDIRECT=true LC_ALL=fi_FI.UTF-8 LANGUAGE=fi_FI.UTF-8 LANG=fi_FI.UTF-8 DISPLAY=192.168.0.201:7 PULSE_SERVER=tcp:192.168.0.201:4713 ESPEAKER=192.168.0.201:16001 LTSP_ALSA_DEFAULT=pulse /etc/X11/Xsession "default" < /dev/null > /dev/null ; /usr/sbin/ltspfsmounter all cleanup
3308 ? S 0:00 openbox --config-file /home/ltsp003/.config/openbox/lxde-rc.xml
3355 pts/0 S+ 0:00 grep ltsp

root@debian-app-02:~# ps ax | grep ltsp
3191 ? Ss 0:00 sshd: ltsp001 [priv]
3196 ? S 0:00 sshd: ltsp001@pts/1
3212 ? Ss 0:00 bash -c LTSP_CLIENT=192.168.0.203 LTSP_CLIENT_HOSTNAME=ltsp203 LTSP_CLIENT_MAC=08:00:27:CC:7A:AB LIBGL_ALWAYS_INDIRECT=true LC_ALL=fi_FI.UTF-8 LANGUAGE=fi_FI.UTF-8 LANG=fi_FI.UTF-8 DISPLAY=192.168.0.203:7 PULSE_SERVER=tcp:192.168.0.203:4713 ESPEAKER=192.168.0.203:16001 LTSP_ALSA_DEFAULT=pulse /etc/X11/Xsession "default" < /dev/null > /dev/null ; /usr/sbin/ltspfsmounter all cleanup
3293 ? S 0:00 openbox --config-file /home/ltsp001/.config/openbox/lxde-rc.xml
3378 pts/0 S+ 0:00 grep ltsp

root@debian-app-03:~# ps ax | grep ltsp
3402 ? Ss 0:00 sshd: ltsp002 [priv]
3407 ? S 0:00 sshd: ltsp002@pts/2
3422 ? Ss 0:00 bash -c LTSP_CLIENT=192.168.0.205 LTSP_CLIENT_HOSTNAME=ltsp205 LTSP_CLIENT_MAC=08:00:27:D5:2E:14 LIBGL_ALWAYS_INDIRECT=true LC_ALL=fi_FI.UTF-8 LANGUAGE=fi_FI.UTF-8 LANG=fi_FI.UTF-8 DISPLAY=192.168.0.205:7 PULSE_SERVER=tcp:192.168.0.205:4713 ESPEAKER=192.168.0.205:16001 LTSP_ALSA_DEFAULT=pulse /etc/X11/Xsession "default" < /dev/null > /dev/null ; /usr/sbin/ltspfsmounter all cleanup
3503 ? S 0:00 openbox --config-file /home/ltsp002/.config/openbox/lxde-rc.xml
3605 pts/0 S+ 0:00 grep ltsp

Lisää esimerkissä käytettyjä asetustiedostoja

root@debian-ltsp:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 debian-ltsp

192.168.0.105 debian-ltsp
192.168.0.106 debian-app-01
192.168.0.107 debian-app-02
192.168.0.108 debian-app-03

cat /etc/dhcp/dhcpd.conf
[--]
include "/etc/ltsp/dhcpd.conf";

cat /etc/ltsp/dhcpd.conf
#
# Default LTSP dhcpd.conf config file.
#

authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.215;
option domain-name "debian-ltsp";
option domain-name-servers 192.168.0.1;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
next-server 192.168.0.105;
# get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
} else {
filename "/ltsp/i386/nbi.img";
}
}

root@debian-ltsp:~# cat /etc/exports
/home 192.168.0.106(rw,no_root_squash,no_subtree_check) 192.168.0.107(rw,no_root_squash,no_subtree_check) 192.168.0.108(rw,no_root_squash,no_subtree_check)

root@debian-app-01:~# cat /etc/fstab
192.168.0.105:/home /home nfs hard,intr,rsize=8192,wsize=8192,bg 0 0

root@debian-app-01:~# mount
192.168.0.105:/home on /home type nfs4 (rw,relatime,vers=4,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.106,minorversion=0,local_lock=none,addr=192.168.0.105)

root@debian-ltsp:~# ltsp-info
server information:
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.6 (wheezy)
Release: 7.6
Codename: wheezy

server packages:
ii ldm-server 2:2.2.11-2
un ltsp-client
un ltsp-client-core
ii ltsp-docs 1.1-1
ii ltsp-server 5.4.2-6+deb7u1
ii ltsp-server-standalone 5.4.2-6+deb7u1
un ltsp-utils
ii ltspfs 1.1-2

packages in chroot: /opt/ltsp/i386
ii ldm 2:2.2.11-2
ii ldm-themes 12.07.1
ii ltsp-client 5.4.2-6+deb7u1
ii ltsp-client-core 5.4.2-6+deb7u1
ii ltspfsd 1.1-2
ii ltspfsd-core 1.1-2

found: /opt/ltsp/i386/etc/lts.conf

root@debian-ltsp:~# uname -a
Linux debian-ltsp 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

root@debian-ltsp:~# ltsp-chroot -a i386
root@debian-ltsp:/#

root@debian-ltsp:/# dpkg -l | grep linux-image-486
ii linux-image-486 3.2+46 i386 Linux for older PCs (meta-package)

root@debian-app-01:~# dpkg -l | grep ltsp
ii ltspfs 1.1-2 i386 Fuse based remote filesystem for LTSP thin clients

root@debian-app-01:~# dpkg -l | grep ldm
ii ldm-server 2:2.2.11-2 all server components for LTSP display manager