Para este modelo de cluster, será necessário um nó que seja o 'Master', ou seja, responsável por todas as atividades em execução nos demais nós do cluster.
Configuração
Nesta etapa, serão feitas as configurações do sistema, tais como atualização, instalação e configuração dos pacotes básicos.
Também serão configurados usuários responsáveis pela execução dos serviços do cluster e também a preparação do ambiente.
É válido lembrar que, o servidor responsável por iniciar os serviços cluster é o host (nó) principal (master), e todos os demais serão os hosts (nós) secundários (slaves).
Configuração do servidor master
Esta configuração será feita com a instalação dos pacotes/ serviços: NFS, SSH, MPICH2 e John the Ripper, que serão utilizados por todo o cluster através da rede.
Configuração do repositório
Acesse o terminal, como root, e edite o seguinte arquivo para configuração de repositórios:
# vi /etc/apt/sources.list
Configure conforme as informações 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 repositório e os pacotes do sistema, através dos seguintes comandos:
# apt-get update
# apt-get upgrade all
Configuração de Rede
Acesse o terminal como root
Edite o seguinte arquivo, para configuração de endereços de rede:
# vi /etc/network/interfaces
Configure conforme as informações 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 através do seguinte comando:
# ifup eth1
Agora, iremos desabilitar o IPv6 em nosso servidor para garantir uma melhor compatibilidade com os serviços utilizados.
Também serão configurados os IPs dos servidores utilizados no cluster, uma vez que não será utilizada a resolução de nomes DNS.
Portanto, edite o seguinte arquivo para desabilitar o uso local do IPv6 e configurar os IPs dos servidores do cluster:
# vi /etc/hosts/
Configure conforme as informações abaixo:
127.0.0.1 localhost
10.1.1.1 deb01 # master
10.1.1.2 deb02 # slave
10.1.1.3 deb03 # slave
Agora será necessário desabilitar o IPv6 na inicialização do sistema, portanto será necessário editar o seguinte arquivo:
# 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 serviço comece a gravar mensagens de erro nos logs do sistema, pois o IPv6 está desativado.
Pare reconfigurar o Exim, basta executar o seguinte comando:
# dpkg-reconfigure exim4-config
Será exibida a tela de configuração do serviço. Basta configurá-lo conforme o seguinte procedimento:
- Clique em Ok para prosseguir;
- Selecione Sem configuração no momento e clique em Ok para prosseguir;
- Clique em Sim para deixar o sistema de mensagens não configurado;
- Clique em Não para não dividir os arquivos de configuração;
- Reinicie o servidor para que todas as alterações tenham efeito.
Configuração de usuários e permissões
Para utilização do cluster com MPICH2, é necessário que todos os usuários tenham o mesmo UID e GUID em todas as estações utilizadas, uma vez que não estamos utilizando nenhum serviço de diretório.
Para isso, iremos configurar um usuário e grupo para utilização deste serviço.
Crie o usuário através do seguinte comando:
# groupadd -–gid 1100 mpigroup
# adduser –-home /cluster -–uid 1100 -–gid 1100 mpiuser --disabled-password --quiet
Apenas confirme todas as informações sobre o usuário.
Configuração do servidor NFS
O servidor NFS será utilizado para compartilhar todos os arquivos (binários, bibliotecas e senhas) utilizados durante a utilização do cluster.
Para isso, entre no terminal como root. Digite o seguinte comando para a instalação do serviço NFS
# apt-get install nfs-kernel-server
Após a instalação, será necessário compartilhar o diretório
/cluster que será acessado por todos os servidores do cluster.
Como o foco deste artigo é um ambiente de cluster de alta performance, não serão aplicadas técnicas de
hardening. Portanto o compartilhamento estará acessível por todos os computadores da rede.
Faça o compartilhamento através do seguinte comando:
# echo '/cluster *(rw,sync,no_subtree_check)' >> /etc/exports
Reinicie o serviço do NFS através do seguinte comando:
# invoke-rc.d nfs-kernel-server restart
Instalação do SSH e libssl-dev
O SSH será utilizado para comunicação entre o servidor master e os servidores slaves, e a biblioteca "libssl-dev" será responsável pela implementação 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 instalação:
# apt-get install openssh-server libssl-dev
Agora, será necessário entrar com o usuário "mpiuser" (que irá executar o serviço de cluster), para a configuração do SSH afim de realizar a conexão através das chaves que serão criadas.
Acesse com o usuário mpiuser através do seguinte comando:
# su - mpiuser
Execute os seguintes comandos para gerar as chaves:
ssh-keygen –t dsa
Pressione ENTER 3 vezes, para gerar uma chave em branco.
Agora, digite os seguintes comandos para prosseguirmos com a configuração das chaves:
cd ~/.ssh
$ cat id_dsa.pub >> authorized_keys
Como todos os servidores irão montar o
/cluster como diretório home do usuário "mpiuser", não será necessário configurá-las novamente.
Instalação e configuração do MPICH2
O MPICH será instalado através da compilação manual, para que possamos, desta forma, utilizar a versão estável mais atualizada e também para que o diretório destino dos binários e bibliotecas, seja acessível para todos os servidores do cluster, através da montagem do
/cluster.
Para isso, acesse o terminal como root.
Será necessário instalar os compiladores necessários através do seguinte comando:
# apt-get install build-essential gfortran
Após a instalação, acesse o terminal como
mpiuser através do seguinte comando:
# su - mpiuser
Acesse o
/cluster e crie os diretórios "src" e "mpich" através do seguinte comando:
mkdir mpich2 src
Acesse o
/src e faça o download da última versão estável do MPICH2 (1.4.1p1), através do seguinte comando:
wget http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.4.1p1/mpich2-1.4.1p1.tar.gz
Após o download, descompacte o seguinte arquivo:
tar -zxf mpich2-1.4.1p1.tar.gz
Após a descompactação, acesse o diretório: mpich2-1.4.1p1
Agora, será necessário configurar o MPICH2 através do seguinte comando:
./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 instalação através dos seguintes comandos:
make
$ make install
Após a instalação, será necessário adicionar os binários e bibliotecas através da edição do seguinte arquivo:
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 variáveis no
bash, através do seguinte comando:
source ~/.bashrc
Execute os seguintes comandos, para verificar se as variáveis foram carregadas com sucesso no bash:
which mpiexec
Se forem exibidos os
paths dos binários e bibliotecas, significa que eles já estão disponíveis no PATH do bash sem a necessidade de digitar o caminho completo durante sua próxima execução.
Agora, será necessário configurar o arquivo
hosts, que será responsável por identificar ao Hydra os servidores que fazem parte do cluster.
Crie o arquivo através do seguinte comando:
vi /cluster/hosts
Adiciones as seguintes linhas no arquivo:
deb01
deb02
deb03
Estas linhas representam, respectivamente, o servidor master e os servidores slaves do cluster.
Instalação e configuração do John the Ripper
O
John the Ripper será instalado através dos últimos pacotes estáveis disponíveis no site oficial, para que seja compilado de maneira otimizada e esteja acessível a todos os usuários através do
/cluster.
Para isso, acesse o terminal como mpiuser:
# su - mpiuser
Acesse o /cluster. Faça o download do código fonte do John the Ripper, através do seguinte comando:
wget http://www.openwall.com/john/g/john-1.7.9.tar.gz
Após o download, descompacte os arquivos através do seguinte comando:
tar -zxf john-1.7.9.tar.gz
Acesse agora a pasta com o conteúdo dos arquivos através do seguinte comando:
cd john-1.7.9/src
Agora, basta compilar através do seguinte comando:
make linux-x86-any
Este comando compila o John the Ripper otimizado para uma arquitetura 32 bits comum.
Para outros tipos de arquitetura, basta compilá-lo utilizada qualquer uma das arquiteturas listadas através do seguinte comando:
make clean
* Importante: como ele será executado em um dos nós do cluster por hardwares diferentes, é importante que ele seja compilado em uma arquitetura compatível com todos os nós. Neste caso, o
linux-x86-any garante essa compatibilidade com as máquinas virtuais utilizadas neste artigo.
Certifique-se que o John the Ripper está funcionando normalmente através dos seguintes comandos:
cd /cluster/john-1.7.9/run
$ ./john -test
Será exibida uma tela com os resultados dos testes de performance de todos os algoritmos utilizados.