Montando um Cluster com Kerrighed |
Ter, 28 de Abril de 2009 01:39 | |||||||||||||||||||||||||
JPAGE_CURRENT_OF_TOTAL
O kerrighed é um sistema operacional de imagem única (Single System Image Operating System – SSI OS) que estende o kernel do Linux e tem como objetivo a construção de clusters de, principalmente, alto desempenho e alta disponibilidade. Ele oferece aos usuários a ilusão de que os nós são grandes maquinas SMP, que dispõem da soma de todos os recursos disponíveis nos computadores que compõem o cluster. Este relatório mostra, passo-a-passo, como implementar um cluster usando o kerrighed e usufruir do poder de processamento da sua rede.
Introdução
Um sistema SSI proporciona uma visão unificada de todos os recursos e atividades em execução no cluster, possibilitando abstrair ao usuário o caráter distribuído, não precisando ele sequer saber que usufrui de um cluster. A distribuição de carga é feita de forma automática e não exige que os processos tenham sido escritos especificamente para sistemas distribuídos (com uso de bibliotecas específicas, como MPI), podendo estes migrarem livremente para quaisquer dos nós. No projeto de implementação de um cluster, é imprescindível que sejam levantadas as suas reais necessidades, bem como as suas aplicações finais, a fim de que não seja desperdiçado poder de processamento com atividades que poderiam ser solucionados por um único computador (com menor consumo de energia, por exemplo). Este relatório é fruto da implementação de um protótipo de cluster no laboratório Ada de Lovelace do Departamento de Informática – DI/UFPB, e tem como objetivo futuro atender aos usuários que desejam ampliar seus conhecimentos em desenvolvimento para arquiteturas distribuídas e auxiliar em tarefas “pesadas”, como processamento digital de imagens, renderização de moldes e cenas 3D e demais tarefas desta natureza que são rotineiras no departamento de informática. Outra possível aplicação útil pode ser feita nos servidores de uma rede, a fim de oferecer alta disponibilidade, além de elevar o desempenho.
Considerações Iniciais
Dentre as versões do kerrighed, foram testadas duas em desenvolvimento (corrente) e a versão estável, tendo sido uma versão intermediária a mais indicada, por ter resolvido problemas presentes na ultima release lançada e não apresentado as falhas da corrente mais recente. A distribuição do Linux usada foi o Ubuntu, por ser a utilizada atualmente no laboratório Ada de Lovelace, do Departamento de Informática – DI/UFPB, no qual o protótipo foi montado. Foram realizados testes com as versões 3.3, 4.1, 4.2 e 4.3 do compilador GCC e, apesar da documentação oficial do projeto sugerir a versão 3.3 para todo o processo de compilação, a prática mostrou que a versão 4.1 se mostrou mais indicada, com a qual foi possível compilar todas as etapas sem muitos problemas e por fim não obter falhas de segmentação, que ocorriam ao usar o gcc-3.3, e demais erros.
Instalando o Cluster
Antes de prosseguir, se faz-se necessário resolver alguns futuros problemas com dependências. Sugere-se a instalação dos seguintes pacotes:
#apt-get install ncurses-dev #apt-get install subversion #apt-get install automake #apt-get install autoconf #apt-get install libtool #apt-get install pkg-config #apt-get install gawk #apt-get install rsync #apt-get install lsb-release #apt-get install xmlto #apt-get install patchutils patch #apt-get install xutils-dev #apt-get install build-essential #apt-get install make
Quadro 1: Instalando dependências.
Para instalar o gcc-4.1, a dependência abaixo deve ser adicionada ao arquivo /etc/apt/sources.list: deb http://cz.archive.ubuntu.com/ubuntu dapper main Em seguida, é preciso sincronizar os pacotes com a nova dependência para posterior instalação: #apt-get update #apt-get install gcc-4.1 #apt-get install g++-4.1
#cp /usr/bin/gcc /usr/bin/gcc.old #ln –s /usr/bin/gcc-4.1 /usr/bin/gcc
A instalação do kerrighed, usando uma versão do svn, pode ser iniciada acordo com os comandos abaixo: #svn checkout svn://scm.gforge.inria.fr/svn/kerrighed/trunk /usr/src/kerrighed -r 4762 #./autogen.sh Quadro 2: Resumo da instação.
Na versão estável 2.3.0 fazia-se necessário baixar o source do kernel Linux 2.6.20, a fim de que o microkernel kerrighed pudesse estendê-lo. Na versão em desenvolvimento, disponível via svn, na qual se baseia este guia, o source do kernel pode ser encontrado dentro do subdiretório kernel/, o qual deverá ser configurado de acordo com as necessidades e particularidades do cluster, devendo ser dada atenção a correta configuração da interface de rede, bem como os módulos de suporte a NFS, como a seguir:
#cd kernel #make menuconfig
Será apresentado ao usuário o menu de configurações do kernel (percebe-se, na parte superior, a sigla –krg junto ao nome da versão do kernel) ilustrado na figura 1. Como já mencionado, é indispensável ativar o suporte à interface de rede – além de configurações particulares de cada caso - que pode ser feito de acordo com o caminho abaixo: Device Drivers -à Network device suport -à Escolha a categoria da sua interface [ex: Ethernet ( 10 or 1000Mbit ) ] -à Selecione seu modelo ( ex: AMD PCnet32 PCI support, Intel(R) PRO/100+ support, Realtek, VIA, etc ).
Figura 1 – Configuração do kernel
Concluído as modificações no kernel, deve-se pressionar a tecla [ESC] duas vezes em cada menu até que seja perguntado se as alterações devem ser salvas, devendo-se escolher a opção YES para salvá-las. Se não houver muita familiaridade da parte do usuário com o kernel, pode-se ainda optar por usar um arquivo pré-definido de configurações, que dispensará a configuração manual da interface de rede (realizada logo acima), além de outras configurações ( usar um arquivo de configuração sem os devidos cuidados pode acarretar em erros pós-instalação). Um arquivo de configuração para este caso pode ser obtido como abaixo: #wget http://trac.nchc.org.tw/grid/raw-attachment/wiki/krg_DRBL/config-2.6.20-krg
Em seguida, carrega-se o arquivo no kernel, como pode ser visto nas linhas seguintes e nas figuras 2 e 3: #make menuconfig Load an Alternate Configuration File Digite o nome do arquivo de configuração: config-2.6.20-krg Tecle [ENTER], [ESC] duas vezes para sair e salve as alterações.
Figura 2 – Carregar arquivo de configuração do kernel
Figura 3 – Definindo arquivo de configuração
Uma vez atendido aos passos acima, pode-se compilar o kernel e prosseguir com a instalação. Durante a compilação diversos erros podem ocorrer, os quais serão resolvidos passo-a-passo no decorrer do guia:
#cd ..
Erro 1:
Erro 2:
Se não ocorreram erros, prossegue-se com o comando seguinte:
#make CC=gcc-4.1
O passo acima poderá retornar, de acordo com os testes, dois erros, que não precisam estar na ordem exposta abaixo, mas que podem ser solucionado de acordo com os seguintes passos:
Erro 3
Provavelmente neste ponto o kernel será compilado sem mais problemas, porém, se não foi utilizado o gcc-4.1, ainda existe a possibilidade de outro erro ocorrer:
Erro 4:
Concluído o passo anterior, o cluster está a um passo de ser compilado. Pode-se finalizar com os comandos abaixo, os quais não deverão retornar erros se os requisitos anteriores tiverem sido atendidos:
Ao fim do make install, o novo kernel está pronto e sua imagem deve ter sido criada em /boot/vmlinuz-2.6.20-krg. Para testar o novo nó do cluster, deve-se adicionar a nova imagem em uma entrada no seu gerenciador do boot, conforme o procedimento abaixo para o grub:
Adicionar as linhas abaixo: title Kerrighed Cluster (ubuntu) kernel /boot/vmlinuz-2.6.20-krg root=/dev/sda1 ro session_id=1 node_id=1
OBS: root=/dev/sda1 indica a partição raiz. Em alguns casos, ainda que sua raiz seja reconhecida como sda, talvez seja necessário usar hda. Este problema foi reportado em alguns dos computadores do laboratório Ada. Caso o boot não seja efetuado corretamente (terminando em um Shell ram), é provável que se deva alterar sda1 para hda1 no menu.list. session_id=1: indica a sessão na qual este nó será inserido. node_id: identificação do nó. Cada qual deverá ter seu próprio id.
Confirma-se as alterações:
#update-grub
Se não ocorreram erros, o primeiro nó está pronto. Ao reiniciar o computador, escolhe-se a nova entrada no grub, conforme figura 4.
Figura 4 – Iniciando cluster pelo grub
A versão do kernel pode ser verificada digitando: #uname –r Que deverá retornar “2.6.20-krg”
Gerenciamento
O gerenciamento é feito pelo “krgadm”. Digita-se man krgadm para verficar o seu manual. Em resumo, os seguintes comandos são suficientes:
Exibe o status dos nós disponíveis: #krgadm nodes
Exibe informações sobre a inicialização da(s) sessões: #krgadm cluster
Para iniciar o cluster, usa-se o comando abaixo, que irá inicializá-lo com todos os nós: #krgadm cluster start
Uma vez inicializado, os processos serão distribuídos automaticamente pelos nós do cluster.
Somente usuários registrados podem escrever comentários!
!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved."
|