INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA BAIANO CAMPUS CATU
Cluster: Tutorial de como criar um cluster em ambiente Linux
CATU 2012 Antonio George Carneiro Santana Fbio Luciano Machado de Cerqueira
Cluster: Tutorial de como criar um cluster em ambiente Linux
Trabalho Final da disciplina Sistemas Distribudos do curso Anlise e Desenvolvimento de Sistemas desenvolvido sob orientao do Professor Tarsio Ribeiro.
CATU 2012 3
Este tutorial ensina como criar um cluster de balanceamento de carga em ambiente Linux. Esse passo a passo foi desenvolvido por: Douglas Parolim Felipe Ferreira Jefferson Silva Guilherme Vicentini Lus Paulo Vieira Pedro Pascuotti Renato Alves Valter Terrani
O mesmo pode ser encontrado no seguinte endereo: http://tarcisiogambin.net/blog/criando-um-cluster-de-alta-performance-para-quebrar- senhas/.
O nosso trabalho foi entender o passo a passo, reproduzir no ambiente e testar. Foi feito apenas algumas pequenas modificaes a fim de melhorar o entendimento do tutorial, como tambm a troca do endereo de download de alguns pacotes necessrio para o funcionamento correto das configuraes.
4
Requisito para funcionamento correto do tutorial:
Sistema operacional Debian Squeeze (sistema bsico), ns utilizamos a verso: DEBIAN-6.0.6
Configurao do Hardware Hardware compatvel com sistema operacional Debian Squeeze; 01 Interface de Rede (modo NAT) 01 Interface de Rede (modo host-only) 256 Mb de memria 10 Gb de espao disponvel em disco rgido Conexo com internet
Utilizamos para esse teste, trs maquinas, e as nomeamos e definimos os ips como descrito logo abaixo:
Nome do Computador Denominao no Cluster IP deb01 Mestre 10.1.1.1 deb02 NO01 10.1.1.2 deb03 NO02 10.1.1.3
Vale lembrar que essa configurao de ips realizada na segunda interface de rede (host-only).
5
1. Configurao Nesta etapa sero feitas as configuraes do sistema, tais como atualizao, instalao e configurao dos pacotes bsicos. Tambm sero configurados usurios responsveis pela execuo dos servios do cluster e tambm a preparao do ambiente. vlido lembrar que o servidor responsvel por iniciar os servios cluster o host (n) principal (mestre) e todos os demais sero os hosts (n) secundrios (slaves).
1.1. Configurao do servidor mestre 1.1.1. Configurao do repositrio
Acesse o terminal como root Edite o seguinte arquivo para configurao de repositrios: root@deb01:~# vi /etc/apt/sources.list
Configure conforme as informaes abaixo: deb http://security.debian.org/ squeeze/updates main deb-src http://security.debian.org/ squeeze/updates main deb http://ftp.br.debian.org/debian/ squeeze-updates main deb-src http://ftp.br.debian.org/debian/ squeeze-updates main deb http://ftp.br.debian.org/debian squeeze main
Em seguida atualize repositrio e os pacotes do sistema atravs dos seguintes comandos: root@deb01: ~# apt-get update root@deb01: ~# apt-get upgrade all
6
1.1.2. Configurao de Rede
Acesse o terminal como root Edite o seguinte arquivo para configurao de endereos de rede: root@deb01:~# vi /etc/network/interfaces
Configure conforme as informaes abaixo: auto lo iface lo inet loopback
auto eth0 iface eth0 inet dhcp
auto eth1 iface eth1 inet static address 10.1.1.1 netmask 255.255.255.0
Inicie a segunda interface de rede atravs do seguinte comando: root@deb01:~# ifup eth1
Agora iremos desabilitar o ipv6 em nosso servidor para garantir uma melhor compatibilidade com os servios utilizados. Tambm sero configurados os ips dos servidores utilizados no cluster, uma vez que no ser utilizada a resoluo de nomes DNS. Portanto edite o seguinte arquivo para desabilitar o uso local do ipv6 e configurar os ips dos servidores do cluster: root@deb01:~# vi /etc/hosts
Agora ser necessrio desabilitar o ipv6 na inicializao do sistema, portanto ser necessrio editar o seguinte arquivo: root@deb01:~# vi /etc/sysctl.conf
Basta adicionar a seguinte linha no final do arquivo: net.ipv6.conf.all.disable_ipv6 = 1
Agora iremos desativar o IPv6 utilizado pelo exim, para evitar que o servio comece a gravar mensagens de erro nos logs do sistema pois o ipv6 est desativado.
Pare reconfigurar o exim, basta executar o seguinte comando: root@deb01:~# dpkg-reconfigure exim4-config
Ser exibida a tela de configurao do servio. Basta configur-lo conforme o seguinte procedimento: Clique em Ok para prosseguir Selecione Sem configurao no momento e clique em Ok para prosseguir Clique em Sim para deixar o sistema de mensagens no configurado Clique em No para no dividir os arquivos de configurao
Reinicie o servidor para que todas as alteraes tenham efeito
8
1.1.3. Configurao de usurios e permisses: Para utilizao o cluster com MPICH2 necessrio que todos os usurios tenham o mesmo UID e GUID em todas as estaes utilizadas, uma vez que no estamos utilizando nenhum servio de diretrio. Para isso iremos configurar um usurio e grupo para utilizao deste servio.
Crie o usurio atravs do seguinte comando: root@deb01:~# groupadd --gid 1100 mpigroup root@deb01:~# adduser --home /cluster --uid 1100 --gid 1100 mpiuser -- disabled-password --quiet
Apenas confirme todas as informaes sobre o usurio, pode deixar essas informaes em branco, isso no ir afetar o funcionamento do cluster. Apenas tecle Enter e no final confirme as informaes.
1.1.4. Configurao do servidor NFS O servidor NFS ser utilizado para compartilhar todos os arquivos (binrios, bibliotecas e senhas) utilizados durante a utilizao do cluster.
Para isso entre no terminal como root. Digite o seguinte comando para a instalao do servio NFS root@deb01:~# apt-get install nfs-kernel-server
Aps a instalao ser necessrio compartilhar o diretrio /cluster que ser acessado por todos os servidores do cluster.
Faa o compartilhamento atravs do seguinte comando: root@deb01:~# echo '/cluster *(rw,sync,no_subtree_check)' >> /etc/exports
9
Reinicie o servio do NFS atravs do seguinte comando: root@deb01:~# invoke-rc.d nfs-kernel-server restart
1.1.5. Instalao do SSH e libssl-dev O SSH ser utilizado para comunicao entre o servidor mestre e os servidores slaves (no), e a biblioteca libssl-dev ser responsvel pela implementao do suporte ao md5.
Para instalar o SSH e a biblioteca libssl-dev acesse o terminal como root. Digite o seguinte comando para iniciar a instalao: root@deb01:~# apt-get install openssh-server libssl-dev
Agora ser necessrio entrar com o usurio mpiuser (que ir executar o servio de cluster) para a configurao do SSH a fim de realizar a conexo atravs das chaves que sero criadas.
Acesse com o usurio mpiuser atravs do seguinte comando: root@deb01:~# su - mpiuser
Execute o seguinte comandos para gerar as chaves: mpiuser@deb01:~$ ssh-keygen t dsa Pressione Enter 3x para gerar uma chave em branco.
Agora digite os seguintes comando para prosseguirmos com a configurao das chaves mpiuser@deb01:~$ cd ~/.ssh mpiuser@deb01:~/.ssh$ cat id_dsa.pub >> authorized_keys Como todos os servidores iro montar o /cluster como diretrio home do usurio mpiuser, no ser necessrio configur-las novamente. 10
1.1.6. Instalao e configurao do MPICH2 O MPICH ser instalado atravs da compilao manual, para que possamos desta forma utilizar a verso estvel mais atualizada e tambm para que o diretrio destino dos binrios e bibliotecas seja acessvel para todos os servidores do cluster atravs da montagem do /cluster.
Para isso acesse o terminal como root. Ser necessrio instalar os compiladores necessrios atravs do seguinte comando: root@deb01:~# apt-get install build-essential gfortran
Aps a instalao, acesse o terminal como mpiuser atravs do seguinte comando: root@deb01:~# su - mpiuser
Crie os diretrios src e mpich atravs do seguinte comando: mpiuser@deb01:~$ mkdir mpich2 src
Acesse o /src mpiuser@deb01:~$ cd /src
Faa o download da ltima verso estvel do MPICH2 (1.4.1p1) atravs do seguinte comando: mpiuser@deb01:~/src$ wget http://www.mpich.org/static/tarballs/1.4.1p1/mpich2-1.4.1p1.tar.gz
Aps o download descompacte o seguinte arquivo: mpiuser@deb01:~/src$ tar -zxf mpich2-1.4.1p1.tar.gz Aps a descompactao, acesse o diretrio mpich2-1.4.1p1 11
Agora ser necessrio configurar o MPICH2 atravs do seguinte comando: mpiuser@deb01:~/src/mpich2-1.4.1p1$ ./configure -prefix=/cluster/mpich2 -- with-pm=hydra
Concluindo este procedimento configuramos o MPICH2 para ser instalado em /cluster/mpich2 e juntamente com o Hydra, que far o gerenciamento dos processos nos servidores do cluster.
Execute a instalao atravs dos seguintes comandos: mpiuser@deb01:~/src/mpich2-1.4.1p1$ make mpiuser@deb01:~/src/mpich2-1.4.1p1$ make install
Aps a instalao ser necessrio adicionar os binrios e bibliotecas atravs da edio do seguinte arquivo: mpiuser@deb01:~$ vi ~/.bashrc
Insira as seguintes linhas no final do arquivo: export PATH=/cluster/mpich2/bin:$PATH LD_LIBRARY_PATH=/cluster/mpich2/lib:$LD_LIBRARY_PATH
Recarregue as novas variveis no bash atravs do seguinte comando: mpiuser@deb01:~$ source ~/.bashrc Execute os seguinte comandos para verificar se as variveis foram carregadas com sucesso no bash: mpiuser@deb01:~$ which mpiexec
12
Se forem exibidos os paths dos binrios e bibliotecas significa que eles j esto disponveis no PATH do bash sem a necessidade de digitar o caminho completo durante sua prxima execuo.
/cluster/mpich2/bin/mpiexec
Agora ser necessrio configurar o arquivo hosts, que ser responsvel por identificar ao Hydra os servidores que fazem parte do cluster.
Crie o arquivo atravs do seguinte comando: mpiuser@deb01:~$ vi /cluster/hosts
Adiciones as seguintes linhas no arquivo deb01 deb02 deb03 Estas linhas representam respectivamente o servidor mestre e os servidores slaves do cluster.
1.1.7. Instalao e configurao do John the Ripper O John the Ripper ser instalado atravs dos ltimos pacotes estveis disponveis no site oficial para que seja compilado de maneira otimizada e esteja acessvel a todos os usurios atravs do /cluster.
Para isso, acesse o terminal como mpiuser: root@deb01:~# su - mpiuser
13
Faa o download do cdigo fonte do John the Ripper atravs do seguinte comando: mpiuser@deb01:~$ wget http://www.openwall.com/john/g/john-1.7.9.tar.gz
Aps o download, descompacte os arquivos atravs do seguinte comando: mpiuser@deb01:~$ tar -zxf john-1.7.9.tar.gz
Acesse agora a pasta com o contedo dos arquivos atravs do seguinte comando mpiuser@deb01:~$ cd john-1.7.9/src
Agora basta compilar atravs do seguinte comando: mpiuser@deb01:~$ make linux-x86-any Este comando compila o John the Ripper otimizado para uma arquitetura 32 bits comum. Importante: como ele ser executado em um dos ns do cluster por hardwares diferentes, importante que ele seja compilado em uma arquitetura compatvel com todos os ns. Neste caso o linux-x86-any garante essa compatibilidade com as mquinas virtuais utilizadas.
Certifique-se que o John the Ripper est funcionando normalmente atravs dos seguintes comandos: mpiuser@deb01:~$ cd /cluster/john-1.7.9/run mpiuser@deb01:~$ ./john -test Ser exibida uma tela com os resultados dos testes de performance de todos os algoritmos utilizados.
14
1.2. Configurao dos servidores Slaves (ns) A configurao dos servidores slaves bem parecida com a configurao do servidor mestre, a diferena principal ser na instalao e configurao de pacotes (bem menor). Iremos configurar apenas um servidor slave, embora o procedimento o mesmo utilizado para n servidores. No cenrio apresentado estamos utilizando apenas dois slaves: deb02 (10.1.1.2) e deb03 (10.1.1.3).
Para iniciarmos sua configurao, acesse o terminal como root. Edite o seguinte arquivo para configurao de repositrios: root@deb02:~# vi /etc/apt/sources.list
Configure conforme as informaes abaixo: deb http://security.debian.org/ squeeze/updates main deb-src http://security.debian.org/ squeeze/updates main deb http://ftp.br.debian.org/debian/ squeeze-updates main deb-src http://ftp.br.debian.org/debian/ squeeze-updates main deb http://ftp.br.debian.org/debian squeeze main
Em seguida atualize repositrio e os pacotes do sistema atravs do seguinte comando: root@deb02: ~# apt-get update root@deb02: ~# apt-get upgrade all
15
1.2.1. Configuraes de Rede Acesse o terminal como root Edite o seguinte arquivo para configurao de endereos de rede: root@deb02:~# vi /etc/network/interfaces
Configure conforme as informaes abaixo: auto lo iface lo inet loopback
auto eth0 iface eth0 inet dhcp
auto eth1 iface eth1 inet static address 10.1.1.2 netmask 255.255.255.0
Inicie a segunda interface de rede atravs do seguinte comando: root@deb02:~# ifup eth1
Agora iremos desabilitar o ipv6 em nosso servidor para garantir uma melhor compatibilidade com os servios utilizados. Tambm sero configurados os ips dos servidores utilizados no cluster, uma vez que no ser utilizada a resoluo de nomes DNS.
16
Portanto edite o seguinte arquivo para desabilitar o uso local do ipv6 e configurar os ips dos servidores do cluster: root@deb02:~# vi /etc/hosts
Agora ser necessrio desabilitar o ipv6 na inicializao do sistema, portanto ser necessrio editar o seguinte arquivo: root@deb02:~# vi /etc/sysctl.conf
Basta adicionar a seguinte linha no final do arquivo: net.ipv6.conf.all.disable_ipv6 = 1
Agora iremos desativar o IPv6 utilizado pelo exim, para evitar que o servio comece a gravar mensagens de erro nos logs do sistema pois o ipv6 est desativado. Pare reconfigurar o exim, basta executar o seguinte comando: root@deb02:~# dpkg-reconfigure exim4-config
17
Ser exibida a tela de configurao do servio. Basta configur-lo conforme o seguinte procedimento: Clique em Ok para prosseguir Selecione Sem configurao no momento e clique em Ok para prosseguir Clique em Sim para deixar o sistema de mensagens no configurado Clique em No para no dividir os arquivos de configurao
Reinicie o servidor para que todas as alteraes tenham efeito
1.2.2. Configurao de usurio e permisses Para utilizao o cluster com MPICH2 necessrio que todos os usurios tenham o mesmo UID e GUID em todas as estaes utilizadas. Para isso iremos configurar um usurio e grupo para utilizao deste servio.
Crie o usurio atravs do seguinte comando: root@deb01:~# groupadd --gid 1100 mpigroup root@deb01:~# adduser --home /cluster --uid 1100 --gid 1100 mpiuser -- disabled-password --quiet
Apenas confirme todas as informaes sobre o usurio, pode deixar essas informaes em branco, isso no ir afetar o funcionamento do cluster. Apenas tecle Enter e no final confirme as informaes.
1.2.3. Instalao do SSH Para instalar o SSH acesse o terminal como root. Digite o seguinte comando para iniciar a instalao: root@deb02:~# apt-get install openssh-server
18
1.2.4. Configurao do /cluster nos servidores slaves O /cluster dever estar acessvel a todos os servidores do cluster podendo ser montado manualmente ou automaticamente durante o boot. Neste tutorial iremos utilizar o mapeamento automtico.
Para isso acesse o terminal como root. Digite o seguinte comando: root@deb02:~# echo 'deb01:/cluster /cluster nfs defaults 0 0' >> /etc/fstab
Para testar o mapeamento, digite o seguinte comando: root@deb02:~# mount -a
19
2. Verificando o funcionamento do cluster + John the Ripper A partir de agora, toda utilizao do cluster ser feita no servidor mestre (deb01), que ficar responsvel por controlar os processos em todos os servidores slaves. Iremos iniciar novamente o teste de algoritmos do John the Ripper em modo cluster. Para isso digite o comando abaixo: mpiuser@deb01:~$ mpiexec -f hosts -n 3 john-1.7.9/run/./john -test
Observao: Ao executar pela primeira vez esse comando possvel que o servidor mestre solicite a confirmao da conexo, ou seja, ele vai perguntar se voc deseja que a conexo com cada n do cluster fique armazenada para utilizao futura. Basta apenas confirmar escrevendo Yes e pressionar Enter.
Neste momento possvel observar nos servidores slaves o consumo de memria de processamento atravs do comando top
John the Ripper, como podemos dizer um pacote que utiliza de fora bruta para descobrir senhas de arquivos criptografados, como o objetivo do tutorial no este, no colocaremos a parte onde demonstra o processo para que o John realize esse recurso. Para maiores informaes sobre desta funcionalidade basta apenas acessar o endereo fornecido no inicio desse tutorial que l tero acesso a maiores detalhes do funcionamento.
20
REFERENCIAS
http://tarcisiogambin.net/blog/criando-um-cluster-de-alta-performance-para-quebrar- senhas/ - Ultimo acesso em: 24/11/2012 s 21:42