Buscar

TUTORIAL LTSP-CLUSTER_V3

Prévia do material em texto

INSTALAÇÃO E CONFIGURAÇÂO DE UM CLUSTER LTSP COM BALANCEAMENTO DE CARGA
Contribuição: André Giacomin 
Update: Maicon Grahl
ÍNDICE
	1 – CONSIDERAÇÕES INICIAIS
	1.1 Requisitos 
	1.2 Funcionamento 
2 – CLUSTER LTSP
	2.1 Configurações iniciais 
	2.2 LTSP-Root; 
	2.3 LTSP-Control; 
	2.4 LTSP-LoadBalancer; 
	2.5 Serviços; 
	2.6 Arquivos de configuração; 
3 – SERVIDOR DE APLICAÇÃO LTSP
	3.1 Instalação; 
	3.2 Serviços; 
	3.3 Comandos úteis; 
4 – REFERẼNCIAS
1 - CONSIDERAÇÕES INICIAIS
1.1 Requisitos 
- ThinClients/PCs com suporte a boot pela rede (PXE); 
A maioria dos thinclients e PCs já possuem este recurso. Talvez seja necessário habilitar na BIOS. 
	 
- DHCP Server pre-configurado para este serviço; 
É necessário que o servidor DHCP esteja com MAC ADDRESS dos Thinclients fixados, redirecionando-os para o LTSP-Cluster e apontando para o arquivo de imagem, conforme o exemplo abaixo: 
# CRIAR UM GRUPO NO SERVIDOR DHCP PARA APONTAR PARA O ARQUIVO DE IMAGEM
# E ADICIONAR TODAS AS MAQUINAS LTSP NESSE GRUPO
group { 
 option root-path "/opt/ltsp/i386"; 
 next-server 192.168.0.41; 
 if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { 
 filename "/ltsp/i386/pxelinux.0"; 
 } 
 else { 
		filename "/ltsp/i386/nbi.img"; 
	} 
	#LTSP FIXADO
	host NOMEDOHOST { 
		hardware ethernet 08:00:27:56:8D:EE; 
		fixed-address 192.168.3.65;	
	}
1.2 Funcionamento:
- O Thinclient devidamente configurado irá inicializar através do protocolo PXE, que solicitará um endereço IP do Servidor de DHCP; 
- O DHCP irá passar parâmetros adicionais que conterão IP e localização da imagem do sistema a ser carregada; 
- De posse dessas informações, o Thinclient efetua o download da imagem do sistema através do protocolo TFTP e o armazena em memória RAM; 
- Ao efetuar o login, LTSP-Cluster avalia qual o melhor nó (LTSP-AppServer), de acordo com suas regras de balanceamento e faz a conexão com o servidor X do LTSP-AppServer; 
	 
A partir desse ponto, todo os processos são tratados pelo LTSP-AppServer e as saídas (informações gráficas) são enviada através da rede ao Thinclient. 
2 – CLUSTER LTSP
2.1 Configurações iniciais 
	 
Instalações de pacotes essenciais para o funcionamento do Cluster LTSP. 
	 
- Atualizar a instalação linux: 
apt-get update && apt-get upgrade 
- Instalar pacotes básicos: 
apt-get install openssh-server tftpd-hpa 
- Ajustar configuração da linguagem: 
sudo locale-gen --no-purge --lang pt_BR 
2.2 LTSP-Root 
	 
Cria uma instalação linux mínima para que o usuário efetue o login. 
- Instalar pacotes necessários:	 
apt-get install ltsp-server --no-install-recommends 
- Gerar a instalação para efetuar o login: 
ltsp-build-client --arch i386 --ltsp-cluster --prompt-rootpass 
...
Server: 192.168.0.161 (O próprio IP. Neste caso, 192.168.0.161) 
Port: 80 (padrão) 
Enable SSL: No (padrão) 
Inventory: Yes (padrão) 
Timeout: 2 (padrão) 
...
 Enter new UNIX password: ltsp 
Retype new UNIX password: ltsp 
- As informações deste procedimento foram geradas no arquivo "/opt/ltsp/i386/etc/ltsp/getltscfg-cluster.conf" 
	 
2.3 LTSP-Control 
Instalação e configuração da interface que irá gerenciar os terminais LTSPs (Thinclients). 
- Instalar os pacotes necessários 
apt-get install ltsp-cluster-control postgresql --no-install-recommends 
- Configurar o LTSP-Control: 
vim /etc/ltsp/ltsp-cluster-control.config.php 
db_password: ltsp 
loadbalancer: 192.168.0.161 
			 
- Criar usuário no banco: 
sudo -u postgres createuser -SDRIP ltsp 
Enter password for new role: ltsp 
Enter it again: ltsp 
	 
- Criar a base no banco: 
sudo -u postgres createdb ltsp -O ltsp 
	 
- Carregar schemas e functions no banco: 
cd /usr/share/ltsp-cluster-control/DB/ 
cat schema.sql functions.sql | psql -h localhost ltsp ltsp 
	 
- Baixar Scripts de importação e configuração do LTSP-Control: 
cd /root 
wget http://bazaar.launchpad.net/%7Eltsp-cluster-team/ltsp-cluster/ltsp-cluster-control\/download/head%3A/controlcenter.py-20090118065910-j5inpmeqapsuuepd-3/control-center.py
wget http://bazaar.launchpad.net/%7Eltsp-cluster-team/ltsp-cluster/ltsp-cluster-control\/download/head%3A/rdpldm.config-20090430131602-g0xccqrcx91oxsl0-1/rdp%2Bldm.config
- Ajustar as configurações do banco no script de configuração: 
vim control-center.py 
db_user="ltsp" 
db_password="ltsp" 
db_host="localhost" 
db_database="ltsp" 
- Instalar suporte a Python PostgreSQL: 
apt-get install python-pygresql 
	 
- Executar o script de configuração (parando o servidor apache antes): 
/etc/init.d/apache2 stop 
python control-center.py rdp+ldm.config 
/etc/init.d/apache2 start 
- Acessar via browser o link a seguir "http://192.168.0.161/ltsp-cluster-control/Admin/" e configurar os seguinte parâmetros: 
LANG='pt_BR.UTF-8' 
LDM_DIRECTX='True' 
LDM_SERVER='%LOADBALANCER%' 
LOCAL_APPS_MENU='True' 
SCREEN_07='ldm' 
TIMESERVER='192.168.0.9' 
XKBLAYOUT='br' 
XKBVARIANT='abnt2' 
- Configurar autenticação para acesso ao "http://192.168.0.161/ltsp-cluster-control/Admin/":
htpasswd -c /usr/share/ltsp-cluster-control/Admin/.htpasswd admin
onde:
/usr/share/ltsp-cluster-control/Admin/ → caminho do conteúdo da página
.htpasswd → arquivo com a senha cadastrada
admin → usuário para acessar
- Adicionar as seguintes linhas no arquivo “ltsp-cluster-control.conf”, em <Directory /usr/share/ltsp-cluster-control/Admin>
vim /etc/apache2/conf.d/ltsp-cluster-control.conf
AuthType Basic 
AuthName "Acesso Restrito: " 
AuthUserFile "/usr/share/ltsp-cluster-control/Admin/.htpasswd" 
Require valid-user
deve ficar dessa maneira:
<Directory /usr/share/ltsp-cluster-control/Admin> 
Options +Indexes 
Order allow,deny 
Allow from all 
AuthType Basic 
AuthName "Acesso Restrito: " 
AuthUserFile "/usr/share/ltsp-cluster-control/Admin/.htpasswd" 
Require valid-user 
</Directory>
2.4 LTSP-LoadBalancer 
- Instalar pacote do loadbalancer: 
apt-get install ltsp-cluster-lbserver --no-install-recommends 
- Configurar o loadbalancer, adicionando o IP e o nome do servidor de aplicação LTSP, conforme o exemplo abaixo:
vim /etc/ltsp/lbsconfig.xml 
<node address="http://192.168.0.163:8000" name="ltsp-appteste"/> 
e na tag “rules, fazer alterações para que fique desta maneira:
 <rules> 
<!-- 
 <variable name="LOADAVG" weight="25"> 
 <rule capacity=".7"/> 
 </variable> 
--> 
 <variable name="NBX11SESS" weight="55"> 
 <rule capacity="50" critical="45" /> 
 </variable> 
 <variable name="MEMUSED" weight="35"> 
 <rule capacity="$MEMTOTAL-100000"/> 
 </variable> 
 </rules> 
- Remover/comentar o seguinte código do arquivo “/usr/share/pyshared/lbserver/lbserver.py”:
vim /usr/share/pyshared/lbserver/lbserver.py
# # Compute total Weight 
# sumWeight=0 
# for w in tabNodesWeight: sumWeight+=w 
# if sumWeight==0: 
# return None 
# # Choose a random node, probability depend on node Weight 
# rnd=random.randint(1,sumWeight) 
# idx=0 
# nodeId=-1 
# while idx < rnd: 
# nodeId+=1 
# idx+=tabNodesWeight[nodeId] 
# return tabNodes[nodeId].values[self._lbServer.returns].value
e inserir o seguinte código logo após:
 #Weight node 
 nodeId = 0 
 maxWeight = 0 
 for i in range(len(tabNodes)): 
 if tabNodes[i].lastWeight > maxWeight: 
 maxWeight = tabNodes[i].lastWeight 
 nodeId = i 
 return tabNodes[nodeId].values[self._lbServer.returns].value
Obs: Esta alteração fará com que o balanceamento seja “um pra lá e um pra cá”, fazendo com que a carga fique divida igualmente entre todos os nós.
Reiniciar o sistema: 
reboot 
	 
2.5 Serviços 
		 
Ao final do procedimento, os seguintes serviços devem estar ativos: 
Obs: talvez seja necessário iniciar o nbd-server manualmente no caso do sistema não ser reiniciado.		 
- tftpd; 
- postgresql; 
- apache2; 
- nbd-server;
- ltsp-cluster-lbserver (python); 
2.6 Arquivos de configuração 
- Configuração da imagem dos terminais (PXE): 
/opt/ltsp/i386/etc/ltsp/getltscfg-cluster.conf 
Obs: se alterar alguma configuração nesse arquivo, executar no bash: 
ltsp-update-sshkeys && ltsp-update-image --arch 1386
- Configurações gerais: 
/etc/ltsp/ltsp-cluster-control.config.php- Scripts de criação das tabelas do postgres: 
control-center.py 
Obs: Script baixado pelo comando 'wget' em /root
- Configuração das sessões pelo navegador: 
http://192.168.0.161/ltsp-cluster-control/Admin/ 
- Configuração dos nós: 
/etc/ltsp/lbsconfig.xml 
3 – SERVIDOR DE APLICAÇÃO LTSP
3.1 Instalação 
A partir de uma instalação padrão Linux: 
- Atualizar a instalação: 
apt-get update && apt-get upgrade 
- Instalar pacotes básicos: 
apt-get install openssh-server python-dbus ltspfs
- Instalar pacotes do LTSP AppServer: 
apt-get install ltsp-server ltsp-cluster-lbagent ltsp-cluster-accountmanager 
- Remover pacotes desnecessários: 
apt-get remove --purge gnome-screensaver compiz 
- Remover serviços desnecessários: 
update-rc.d -f nbd-server remove 
update-rc.d -f gdm remove 
update-rc.d -f bluetooth remove 
update-rc.d -f pulseaudio remove 
- Criar arquivo de configuração para cancelar o pulseaudio na inicialização quando inativo, com o seguinte conteúdo:
vim /etc/xdg/autostart/pulseaudio-module-suspend-on-idle.desktop 
[Desktop Entry] 
Version=1.0 
Encoding=UTF-8 
Name=PulseAudio Session Management 
Comment=Load module-suspend-on-idle into PulseAudio 
Exec=pactl load-module module-suspend-on-idle 
Terminal=false 
Type=Application 
Categories= 
GenericName= 
- Por padrão o script de montagem de homes está para executar no /etc/profile, comentar a linha do script em /etc/profile e depois:
vim /etc/xdg/autostart/montagem-homes-pam.desktop
[Desktop Entry] 
Version=1.0 
Encoding=UTF-8 
Name=Pam Moun 
Comment=Pam Mount 
Exec=montagem-homes-pam 
Terminal=false 
Type=Application 
Categories= 
GenericName= 
- Ajustar a cron para executar o script de atulizar o papel de parede e a ajustar a data:
crontab -e
# Atualizar Papel de parede 
0 12 * * 1-6 /usr/local/bin/atualizar-papel-parede 
# Atualizar Data/Hora 
0 12 * * * /usr/sbin/ntpdate ntp.univates.br 
- Reiniciar o sistema: 
reboot 
3.2 Serviços 
Ao final do procedimento, os seguintes serviços devem estar ativos: 
- ltsp-cluster-accountmanager (python) 
- ltsp-cluster-lbagent (python) 
	 
3.3 Comandos úteis 
- Listar usuários conectados: 
w 
- Contar usuários conectados: 
w | wc -l 
	 
- Matar determinado processo de determinado usuário: 
ps aux | grep <usuario> | grep <processo> | awk '{print $2}' | xargs kill -9 
	 
- Matar	todos os processos de determinado usuário: 
kill -9 `ps -fu <usuario> |awk '{ print $2 }'|grep -v PID` 
ou 
pkill -U <usuario> 
4 – REFERÊNCIAS
Informações gerais: 
http://wiki.ltsp.org/wiki/LTSPedia 
Ubuntu-LTSP: 
https://help.ubuntu.com/community/UbuntuLTSP/ 
LTSP-Cluster: 
https://www.ltsp-cluster.org/documentation/howto/openvz-setup 
https://help.ubuntu.com/community/UbuntuLTSP/LTSP-Cluster

Continue navegando