Grades Computacionais para Processamento de Alto Desempenho Fabieli De Conti1 Laboratório de Sistemas de Computação - LSC Universidade Federal de Santa Maria (UFSM) - Santa Maria, RS - Brasil 1 [email protected] Abstract. This paper describes the evolution of systems based on distributed architectures that appeared to meet the growing demand for highperformance computing and resource sharing. The Cluster system is the local interconnection of computers to provide greater processing capacity. The system based on Grid Computing, and share processing power and storage capacity, sharing different resources allocated anywhere in the world. In the system of Cloud Computing on the user's computer only has the basic resources to access their applications and data that are stored in central processing and data. Resumo. Este artigo descreve a evolução dos sistemas baseados em arquiteturas distribuídas que surgiram para suprir a crescente demanda por alto desempenho e compartilhamento de recursos computacionais. O sistema Cluster é a interconexão local de computadores para prover maior capacidade de processamento. O sistema baseado em Grade Computacional, além de compartilhar poder de processamento e capacidade de armazenamento, compartilha diferentes recursos alocados em qualquer parte do mundo. No sistema de Computação em Nuvem, o computador do usuário tem apenas os recursos básicos para acessar os seus aplicativos e dados que estão armazenados em centrais de processamento e de dados. 1. Introdução Atualmente, com a evolução dos computadores e das redes de computadores e possível, montar sistemas computacionais compostos por grandes quantidades de computadores e periféricos interconectados por uma rede de alta velocidade, estes sistemas são conhecidos como sistemas distribuídos. Cada vez mais as organizações necessitam reduzir seus ciclos de desenvolvimento, melhorar a integração e interação entre as suas áreas, diminuindo custos e se adaptando mais rapidamente a mudanças. A automação, a colaboração e os sistemas de distribuição de recursos podem ser usados para atingir esses objetivos Um sistema distribuído pode ser classificado de acordo com as suas características e funcionalidades em Cluster, Grade Computacional ou Computação em Nuvem. De maneira geral estes sistemas favorecem principalmente ao processamento de alto desempenho, mas além desse benefício à Grade Computacional possibilita o compartilhamento de recursos computacionais alocados em diferentes locais de maneira controlada e eficiente. Já no caso da Computação em Nuvem, vai além do poder de processamento ou compartilhamento de recursos, o computador do usuário tem apenas os recursos básicos para acessar os programas e dados que estão armazenados em centrais de processamento e de dados. Este trabalho se propõe, a estudar os paradigmas baseados em arquiteturas distribuídas, Cluster, Grades e Computação em Nuvens. Dando maior ênfase ao sistema de Grade Computacional, relatando a instalação e configuração deste sistema, utilizando o Middleware OurGrid. O restante do artigo está organizado da seguinte forma: A seção seguinte faz uma introdução sobre Arquiteturas Distribuídas, abordando alguns de seus sistemas. Em seguida é descrito com maiores detalhes o sistema de Grade Computacional. No tópico seguinte é relatado sobre a prática realizada, explicando os principais passos para a instalação do ambiente de grade baseando no Middleware OurGrid. Finalizando, temos a conclusão e trabalhos que darão prosseguimento a este estudo. 2. Sistemas Distribuídos A demanda por recursos computacionais de alto desempenho teve um grande aumento principalmente nas áreas de astronomia, meteorologia e genética, onde são executadas aplicações que envolvem cálculos complexos e repetitivos. Para a execução dessas aplicações muitas vezes o avanço tecnológico tornar-se uma barreira, pois não acompanha a demanda do poder de processamento e em outros casos a adoção de supercomputadores se torna inviável financeiramente. Como solução para a execução desse tipo de aplicações, passou a ser utilizado, a soma dos recursos computacionais já existentes de forma mais apropriada e equilibrada, o que possibilitou a execução de aplicações paralelas distribuídas, em tempos razoáveis e com custo de implantação baixo. Um sistema distribuído segundo a definição de Andrew Tanenbaum é uma "coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente". Um dos objetivos principais de um sistema distribuído é o de facilitar o acesso dos usuários aos recursos remotos, como por exemplo: impressoras, computadores, dados, arquivos, páginas da web, etc. A seguir, serão apresentados os sistemas distribuídos, Cluster, Grade Computacional e Computação em Nuvens. 2.1. Cluster Segundo Buyya (1999), Cluster é um tipo de sistema para processamento paralelo e distribuído que consiste de uma coleção de computadores interconectados e trabalhando juntos como um único recurso computacional integrado. Com esse aglomerado de computadores é possível realizar processamentos que até então somente computadores de alto desempenho seriam capazes de fazer. No Cluster, cada computador corresponde a um nó ou nodo, sendo que todos os comutadores pertencentes ao mesmo cluster devem ter mesmo sistema operacional instalado. Quanto maior a heterogeneidade dos equipamentos que compõem o cluster, maior será a grau de complexidade para a implantação do mesmo. Além dos computadores o Cluster é formado por switches, cabos, hubs e nobreaks, que são interligados por uma rede Lan sem topologia obrigatória. A idéia inicial deste sistema surgiu em 1960, quando a IBM, interligou os seus mainframes e obteve ganho no processamento através do paralelismo. Em 1980, o avanço tecnológico trouxe importantes aliados para os Clusters, tais como redes de alta velocidade, microcomputadores mais potentes e ferramentas padronizadas para computação distribuída de alto desempenho. No ano de 1993, Donald Becker e Thomas Sterling deram início ao projeto de construção de um sistema de processamento distribuído, com computadores de propósito gerais. Esse projeto foi desenvolvido para propiciar um sistema de processamento elevado com um custo de implantação baixo, ou seja, uma solução para a crescente demanda de poder computacional e a substituição dos caros supercomputadores, por hardware convencional. A figura abaixo representa um exemplo de arquitetura de Cluster. Figura 1. Exemplo de uma arquitetura de Cluster 2.2. Grade Computacional Grade Computacional (Grid Computing) é definida por Ian Foster, como: “uma insfraestrutura de hardware e software que provê acesso seguro, consistente, de forma dispersa e a custo baixo à potenciabilidade computacional máxima”. A Palavra Grade remete ao termo electrical power grid, que designa a rede elétrica. Segundo o próprio Ian Foster, a semelhança entre as duas arquiteturas se deve ao fato que na rede elétrica não nos importamos com a fonte geradora desta, assim como em um ambiente de grade computacional, não devemos nos preocupar com a origem dos ciclos de processamento e sim, que eles estão disponíveis para o uso pelas aplicações. Esse sistema computacional surgiu nos anos 90, para suprir com a demanda por alto desempenho computacional, e também para diminuir os custos computacionais, através do compartilhamento de recursos das mais variadas plataformas e arquiteturas que podem estar geograficamente distribuídos e são integrados através da Internet, como pode ser observado na figuro abaixo. Figura 2. Exemplo de uma arquitetura de Grade Computacional 2.3. Computação em Nuvens Também conhecida por Cloud computing, Computação em Nuvens é definida pelo gerente de Novas Tecnologias Aplicadas da IBM Brasil, Cezar Taurion, como: “um termo usado para descrever um ambiente de computação baseado em uma rede massiva de servidores, sejam virtuais ou físicos. Cloud computing hospeda as Cloud applications, que são as aplicações que estão residentes nesta nuvem (Cloud). Cloud computing pode ser visto como o estágio mais evoluído do conceito de virtualização.” A figura abaixo, retrata o um ambiente de Computação em Nuvens. Figura 3. Exemplo de uma arquitetura de Computação em Nuvens Com a utilização deste sistema computacional, o custo com hardware, software, licenças de sistemas e manutenção são reduzidos. Pois o processamento, armazenamento e o próprio sistema são executados no provedor do serviço de Computação em Nuvens, bastando assim que e o usuário tenha um computador com uma configuração mínima para acessar através da Internet os seus dados e serviços. Apesar de todas as vantagens citadas acima, a total aceitação dos serviços oferecidos pelas empresas de Computação em Nuvem, pela comunidade, implica em questões de segurança, privacidade dos dados e disponibilidade dos serviços. Questões essas que estão sendo analisadas e implementadas as soluções gradativamente. 2.4. Comparativo entre os Sistemas Computacionais em estudo Cada um dos sistemas computacionais em estudo apresenta características peculiares a sua arquitetura, algumas dessas características serão apresentadas na tabela abaixo. Tabela 1. Características dos Sistemas Computacionais em estudo Característica Sistema Homogêneo Cluster Compartilhamento de recursos distribuídos x x x x x x Aplicações com fraco acoplamento Alta Disponibilidade x x Rede de longa Distância Aplicações com forte acoplamento x x Alta Latência Rede Local x x Recursos Descentralizados Baixa Latência Computação em Nuvens x Sistema Homogêneo Recursos Centralizados Grade Computacional x x x Observando a tabela, percebemos diferenças salientes entre esses Sistemas Computacionais, mas, apesar disso em alguns itens eles convergem. Como é caso de Cluster e Grade Computacional que tem como um dos objetivos fundamentais, aumentar o poder de processamento com baixo custo de implantação, no caso da Grade Computacional existe também a preocupação em compartilhar outros recursos distribuídos em diferentes locais. Já no caso da Computação em Nuvem, a idéia principal do sistema deixa de ser o processamento de alto desempenho, para dar comodidade aos usuários de terem acesso aos seus dados e aplicações em qualquer local através da internet. Cada um desses sistemas tem suas vantagens e desvantagens e escolha pela adoção de um ou de outro, está estritamente relacionada com a necessidade dos usuários e a capacidade de investimentos. 3. Grade Computacional Neste tópico, será abordado de forma mais detalhado o Sistema de Grade Computacional, apresentando sua arquitetura e definindo Middleware. 3.1. Arquitetura Segundo Ian Foster, assim como a arquitetura de protocolos TCP/IP, a arquitetura grade foi inicialmente organizada em camadas, constituída por uma pilha de protocolos, as camadas inferiores dão suporte às camadas superiores. O gargalo da arquitetura é representado pelas camadas Conectividade e Recurso, que definem um pequeno conjunto de protocolos, implementados sobre uma diversidade de recursos e que são a base para uma grande escala de serviços fornecidos nas camadas superiores. Na figura abaixo se pode observar a arquitetura de um ambiente de grade. Figura 4. Arquitetura em camadas do ambiente de grade Os níveis apresentados na figura acima podem ser entendidos como: Fábrica: os componentes deste nível implementam operações específicas locais que ocorrem em cada recurso como resultado das operações de compartilhamento nos níveis superiores. Conectividade: esta camada define os protocolos básicos de comunicação e autenticação necessários para as transações de rede específicas do ambiente de grade. Os protocolos de comunicação permitem a troca de dados entre os Níveis de fábrica e recursos. Recursos: neste nível, encontramos os protocolos de autenticação e comunicação do nível conectividade para definir protocolos e API s s (Application Programming Interface) que forneçam segurança na negociação, iniciação, monitoramento, controle, geração de relatórios e outros detalhes envolvidos nas operações com recursos individuais. Coletivo: enquanto no nível de recursos são tratadas as operações no âmbito de cada recurso individualmente, neste nível os componentes atuam nas interações entre coleções de recursos. Aplicação: esta camada compreende as aplicações dos usuários que operam no ambiente da organização virtual. Os níveis anteriores provêem serviços úteis às aplicações desenvolvidas que as invocam. Atualmente está sendo adotada como padrão para a arquitetura da computação em grade a Open Grid Services Architecture (OGSA), desenvolvida pelo Global Grid Fórum (GGF, 2005), que define os serviços e toda a estrutura que pode ser provida em um ambiente de grade. Um componente importante da OGSA é a Open Grid Services Infrastructure (OGSI), que define mecanismos para criação, gerência e troca de informações entre os Serviços da Grade. 3.3. Middleware O Middleware é responsável por fornecer as ferramentas que possibilitam aos vários elementos pertencentes ao Grid formarem um ambiente único. (Re) Configuráveis flexíveis e adaptáveis. Permitindo assim que os utilizadores interagem com os recursos computacionais através desta camada de software que esconde a complexidade e diversidade da infra-estrutura oferecendo uma interface uniforme para acesso aos recursos. Monitoração de recursos, informação sobre desempenho e sobre a utilização dos recursos disponíveis, ferramentas para segurança e tolerância a falhas, alocação de processos do usuário aos recursos, submissão e terminação dos processos. Middleware é o componente responsável pela autenticação e autorização de acesso aos recursos, entrada e saída de dados e aplicações, execução de programas, localização de recursos e balanceamento de carga. São exemplos de Middleware: OurGrid, Globus Toolkit, MyGrid, Legion entre outros. 4. Prática Neste trabalho foi realizada uma prática, utilizando o Middleware OurGrid que é um projeto da UFCG em parceria com a HP, desenvolvido em Java e scripts Shell, com Código Aberto e que tem como principal objetivo a criação de um ambiente de execução para aplicações do tipo Bag-of-Tasks (BoT), ou seja, aplicações paralelas cujas tarefas são independentes umas das outras. O OurGrid diferencia as máquinas da Grade, entre máquina base e máquina do grid. Sendo que a máquina base é aquela que controla a execução da aplicação, já as outras máquinas que compõem a Grade são chamadas de máquina do Grid. O pacote OurGrid é composto por três componentes, MyGrid, Peers e UserAgents, que serão descritos abaixo: O componente MyGrid deve ser instalado na máquina base, pois é a Interface do sistema, responsável pelo escalonamento e gerência dos recursos. Nela cada aplicação corresponde a um Job, que é subdividido em várias tarefas denominadas de Tasks. O Peer, também deve ser instalado em uma máquina base, pois é responsável por organizar e disponibilizar o acesso as máquinas do Grid. O UserAgent é instalado nas máquinas do grid, é responsável pela execução e cancelamento de tarefas, recebimento de arquivos vindos da máquina base e transferência de arquivos para a máquina base. 4.1 Execução Para realizar os testes no ambiente de Grade configurado, trabalhamos com aplicações exemplo, seguindo os seguintes comandos: Inicializar o Peer: peer start Inicializar o UserAgent: useragent start Inicializar o MyGrid: mygrid start Submeter um Job: mygrid addjob NomeDoArquivo.jdf Verificar o status do job: mygrid status Cancelar o Job: mygrid canceljob NomeDoJob Parar a execução do Peer: peer stop Parar a execução do UserAgent: useragent stop Parar a execução do MyGrid: mygrid stop A figura a baixo demonstra a tela exibida quando a execução do Job foi concluída com sucesso. Para obter essa tela é necessário digitar o comando de verificação do status do Job, já mencionado. Figura 5. Exemplo de uma execução de Job 5. Considerações Finais Este trabalho realizou um estudo sobre Grades Computacionais para Processamento de Alto Desempenho, dando um enfoque também para os Sistemas Computacionais Distribuídos, Cluster e Computação em Nuvem. Através do levantamento das características desses sistemas, foi possível conhecer a arquitetura e entender o seu funcionamento. Analisando a arquitetura dos sistemas em estudos, observamos que: o Cluster Computacional está estreitamente voltado para uma solução local, geralmente homogêneo e que busca alto poder de processamento, com baixo custo de implantação. Já a Grade Computacional, têm a característica de compartilhar diversos recursos e expandir geograficamente por uma extensa área, necessitando de planos de execução para o gerenciamento de variadas configurações. Um item que deve ser observado é que na composição de uma Grade Computacional pode ter cluster. Na Computação em Nuvens, o poder de processamento não é trivial, o mais importante é fornecer aos usuários acesso aos recursos e serviços através da Internet. O Middleware OurGrid, nos testes realizados, mostrou-se simples e funcional. As próximas atividades que darão continuidade a este trabalho estarão focadas na execução de aplicações reais e na comparação de desempenho entre com outros Middleware. Referências Buyya, R, (1999) "High Performance Cluster Computing: Architectures and Systems", Prentice Hall, volume 1. Foster, I.and kesselman, C.(2003), “The Grid 2”: Blueprint of a Future Computing Infrastructure, Morgan Kaufmann, 2ª edição. Foster, I., Kesselman, C., Nick, J.M. and Tuecke, (2002) “S. Grid Services for Sistributed Systems Integration”. IEEE Computer, ISSN 0018-9162 Vol. 35, N. 6, p. 37-46, Maio de 2009 Foster, I., Kesselman, C., Nick, J.M. and Tuecke, (2002) “The Physiology of the Grid”: An Open Grid Services Architecture for Distributed Systems Integration. Open Grid service Infrastructure WG, Global Grid Forum, Março de 2009. Tanenbaum, S., Andrew (2002), “Distributed Systems”: Principles and Paradigms, Prentice Hall, 2ª edição. Taurion, C. (2007) “Mas afinal, o que é Cloud Computing?” http://computerworld.uol.com.br/tecnologia/cezar_taurion/idgcoluna.2007-12-19.124 3549572/IDGColunaPrint_view, Junho de 2009.