UNIVERSIDADE ESTADUAL PAULISTA JULIO DE MESQUITA FILHO FACULDADE DE TECNOLOGIA DA BAIXADA SANTISTA DEPARTAMENTO DE INFORMÁTICA GESTÃO DE NEGÓCIOS Processamento Distribuído em Cluster do Tipo Beowulf ALEXANDRE BELETTI FERREIRA LUCIANO ORIENTADORA: PROF. Msc. DOROTÉIA SANTOS / 2006
2 SUMÁRIO 1. Introdução... 3 1.1. Objetivo... 3 1.2. Topologia de Rede... 3 1.3. Topologia física... 3 1.4. Topologia lógica... 4 2. Sistema Operacional... 4 2.1 - Linux... 4 2.2 - Rede... 5 2.3 Acesso Remoto... 6 2.4 Sistema de Arquivos em Rede... 7 3. Cluster... 8 3.1 Cluster Beowulf... 9 4. Conclusão... 9 4.1 Implementações Futuras... 9 ANEXO... 10
3 1. Introdução Tendo em vista a quantidade de gasto em processamento de cálculos matemáticos computacionais, existe a necessidade da implementação de mecanismos capazes de suprir as limitações físicas do hardware fazendo uso de tecnologia de rede, software e de programação. 1.1. Objetivo Montar a estrutura física e lógica da rede, bem como a instalação e configuração dos respectivos sistemas operacionais em cada estação (nó) do cluster. Além disso, será feita a complementação do kernel do sistema operacional com uma biblioteca para o desenvolvimento de programas em ambiente paralelo. Por fim, será feito um teste com um programa que acompanha a própria biblioteca. 1.2. Topologia de Rede É a forma como os computadores são interconectados, ela se divide em topologia fisica e topologia lógica. 1.3. Topologia física Forma como os cabos conectam fisicamente os computadores, em nosso projeto utilizamos a topologia estrela, que consiste em vários computadores conectados a um hub ou switch, também chamado de concetrador de rede.
4 Topologia estrela 1.4. Topologia lógica Descreve a forma como os dados serão transmitidos pela rede, em nosso projeto utilizamos a topologia lógica ethernet, com cabos par trançado não blindados. Nessa estrutura os pacotes de dados são mandados para o hub ou switch que então é mandado para todos os outros computadores da rede, quando um dos computadores recebe os dados, verifica se o pacote foi endereçado a ele, se sim ele recebe, caso contrario ele ignora aquele pacote. 2. Sistema Operacional 2.1 - Linux O Gnu/Linux, por convenção chamado somente de Linux, é um sistema operacional livre composto pelo kernel Linux e o sistema operacional GNU. O Kernel é o núcleo de um sistema operacional, representa a camada de interface com o hardware responsavel por administrar os recursos de hardware, discos, mouse, interface serial/paralela, memória, rede. Ele fornece para os aplicativos uma interface para utilizar os recursos do sistema, Linux possui um kernel híbrido monolítico, isto é, possui uma estrutura única, porém tem a capacidade de instalar ou desisntalar funcionalidades sem perder a estabilidade inicial.
5 GNU é um sistema operacional criado em um projeto iniciado por Richard Stallman em 1984 com o objetivo de ser totalmente livre, sem a necessidade de pagar pela licença de uso, em 1991, o sistema estava quase pronto faltando o principal, que é o kernel do sistema, que estava sendo desenvolvido com o nome de Hurd, mas na mesma epóca, surge o kernel Linux criado pelo Linux Torvalds, que era compativel com o sistema operacional GNU. Gnu/Linux conta também com ambiente gráfico, responsável por oferecer uma iteração entre o usuário e o sistema através de símbolos gráficos, como ícones, janelas, menus. Os ambientes gráficos mais populares para o Linux são o Kde e Gnome. 2.2 - Rede Foi utilizado no cluster o sistema operacional Linux, mais especificamente a distribuição Slackware, por ser um sistema que utiliza os recursos necessários para o projeto, como por exemplo a execução de comandos remotamente, bem como a utilização da biblioteca para programação paralela MPICH. Na configuração de rede, foi utilizado o comando netconfig, onde o IP, a máscara da rede, o gateway e o nome da estação foram informados. O primeiro arquivo para ser configurado após o uso de netconfig é o /etc/hosts, onde deve ser informado o IP, o host mais o domínio e o nome de cada estação da rede: /etc/hosts 192.168.0.1 servidos.cluster.br servidor
6 192.168.0.2 no1.cluster.br no1 192.168.0.3 no2.cluster.br no2 No arquivo /etc/hosts.equiv são informadas o nome de todas as estações da rede (hosts), como o seguinte exemplo: /etc/hosts.equiv servidor no1 no2 2.3 Acesso Remoto Por padrão na instalão completa do pacote do Linux Slackware, os programas para trabalho remoto em rede são instalados, são eles: rsh, rlogin e rexec. O comando rsh é utilizado para efetuar um shell remoto em uma dada máquina da rede e fazer uso da mesma, rlogin permite efetuar login em uma máquina remotamente e rexec executar um comando também de forma remota. Todos estes programas são utilizados pela biblioteca MPICH, e portanto foram instalados e testados, como segue: rsh IP_DESTINO usuário rlogin IP_DESTINO usuário
7 rexec IP_DESTINO comando usuário Para tais testes foi criado um usuário padrão em todas as máquinas do cluster com o mesmo login e senha, que serão utilizados durante os testes finais do cluster. 2.4 Sistema de Arquivos em Rede Para poder acessar diretórios compartilhados em uma estação Linux, deve-se fazer uso do protocolo NFS (Network File System), que permite a comunicação entre as estações Linux. Na máquina que onde a pasta será compartilhada, o arquivo /etc/exports deverá conter o caminho das mesmas e suas permissões, como por exemplo no caso do projeto o arquivo ficaria da seguinte forma: /home *(rw,no_root_squash) /usr/local *(rw,no_root_squash) Com o exemplo acima, as pastas /home e /usr/local foram compartilhadas na respectiva máquina (no caso do cluster na máquina servidora), e foi atribuída propriedades de leitura e escrita e negada propriedade de root em ambas. As máquinas que desejam acessar essas pastas podem utilizar o comando mount, também utilizado para montar discos e unidades, ou o arquivo /etc/fstab, seguindo o exemplo:
8 192.168.0.1:/home /home nfs exec, dev, suid, rw 1 1 192.168.0.1:/usr/local /usr/local nfs exec, dev, suid, rw 1 1 Sabe-se previamente que o IP da máquina servidora é 192.168.0.1 e que as pastas /home e /usr/local foram compartilhadas nessas máquinas. A síntaxe de cada linha segue a lógica: IP:/pasta_remota /pasta_local protocolo propriedades Para conhecer melhor todas as propriedades, o arquivo fstab possui explicações em seu cabeçalho do que é possível ser informado 3. Cluster Por definição básica, Cluster é um sistema composto por dois ou mais computadores chamados de nodos ou nós, que trabalham em conjunto para executar tarefas dando a impressão de estar utilizando um só sistema. Podem ser classificados em: Alta Disponibilidade - Ele é construido para servir inepterruptamente recursos e serviços, esse tipo de cluster utiliza-se de redundancia do sistema para garantir a disponibilidade do mesmo, caso um nó do cluster falhe existirá um outro nó para garantir que os recursos ou serviços estejam disponiveis. Balanceamento de carga - todos os nodos executam o mesmo aplicativo, caso um nó falhe, as tarefas são redistribuidas para os outros nós.
9 3.1 Cluster Beowulf Utilizado para processamento de grande escala, é uma alternativa de baixo custo comparado ao uso de mainframes, a conexão dos nós pode ser feita com rede tipo Ethernet, pode utilizar computadores simples, quase obsoletos e é utilizado uma distribuição de Linux, desde que tenha todos os softwares para cluster. A estrutura é formada por um computador que atua como servidor (chamado de Front-end), responsavel pela distribuição de tarefas e controle de todo o cluster,os outros nós são chamados de clientes ( ou backends ) que são utilizados para para processamento de tarefas enviadas pelo servidor ( Front-end), pelo fato de serem acessados pelo servidor, não utilizam teclado, monitor e em algums casos nem mesmo disco rigido é utilizado pois pode-se executar o boot remotamente. 4. Conclusão Foi observador com a montagem do cluster e com um teste de cálculo aproximado do valor de PI (aproximadamente 3,14) que o tempo de processamento varia com o aumento da quantidade de estações (nós) envolvidos no processamento. 4.1 Implementações Futuras Pretende-se aproveitar a estrutura do cluster fazendo uso do mesmo para processos de renderização de imagens, além de
10 implementar de forma distribuída algoritmos de cálculos antes apenas executados localmente. ANEXO Manual de Montagem 1 - Configurando rede - Logar como root (comando netconfig) Servidor End ip: 192.168.0.1 Mascara: 255.255.255.0 Rote padrão: 192.168.0.254 Serv DNS padrão: 192.168.0.1 Host: servidor.cluster.br No1 End ip: 192.168.0.2 Mascara: 255.255.255.0 Rote padrão: 192.168.0.254 Serv DNS padrão: 192.168.0.1 Host: no1.cluster.br No2 End ip: 192.168.0.3 Mascara: 255.255.255.0 Rote padrão: 192.168.0.254
11 Serv DNS padrão: 192.168.0.1 Host: no2.cluster.br Config rede - ( resolução de nomes) /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.0.1 servidor.cluster.br servidor 192.168.0.2 no1.cluster.br no1 Config rede relação de confiança /etc/hosts.equiv servidor no1 no2.rhosts Copiar hosts.equiv para todos diretórios de trabalho do usuário com o nome de cp hosts.equiv /root/.rhosts cp hosts.equiv /home/.rhosts Configurações de rede Terminais que o usuario pode se conectar
12 /etc/securetty * Adicionar no final do arquivo rsh rlogin Exemplo: tty4 tty5 tty6 rsh rlogin