Archive

Archive for the ‘Grid Computing’ Category

Um estudo sobre Grids Computacionais.. (Final – Projeto OurGrid)

February 1st, 2009 No comments


O OurGrid, é um projeto peer-to-peer que está em produção desde 2004. Esse projeto tem como objetivo principal viabilizar a implementação da arquitetura de uma Grid Computacional abstraindo o usuário de como todo o processo da Grid é feito, tornando assim, o compartilhamento de recursos inativos para a execução de aplicações paralelas o mais transparente possível.

É um software estável, de código fonte livre e sob a licença GPL, este software ataca aplicações Bag-of-Tasks, ou seja, aplicações que tem tarefas independentes e que podem ser executadas em qualquer ordem.

Componentes do OurGrid


Para que o OurGrid funcione é necessário ter os componentes necessários para que a estrutura a seguir seja montada. Veja a Figura com os componentes do OurGrid.

Ourgrid

Peer (Somente Plataforma Linux)

Corepeer (Plataforma Linux)

Swan (Plataforma Linux)

MyGrid (Somente Plataforma Linux)


User Agent (Plataforma Linux e Windows)

Peer


Como foi dito anteriormente uma das características do Grid é que existem vários domínios administrativos. O Peer é o responsável por centralizar o controle do domínio e fazer conexões com outros domínios possibilitando as máquinas de um domínio utilizar os recursos ociosos de máquinas de outros domínios.

User Agente



O User agente é um componente que funciona em cada estação da Grid, ele que vai fornecer o acesso a cada máquina, fornece uma sustentação básica para a manipulação de erros e combinado com um peer ele fornece acesso a máquinas em redes privadas, mesmo os domínios sendo diferentes ou estando atrás de um firewall com o User Agente é possível uma conexão.

MyGrid

Este é o componente central da GRID, age como coordenador da grid, controla toda a execução das tarefas fazendo toda a transferência de dados ele que submete o JOB, cada JOB tem suas tarefas e essas tarefas são replicadas para as outras máquinas da Grid, cada replica tem seu estado como mostra a Figura 5 e cada tarefa também tem seu estado como mostra a Figura 6.

Figura 5 - Estado da Replica

Figura 5 - Estado da Replica

Figura 6 - Estado da Tarefa

Figura 6 - Estado da Tarefa

Swan

Como já foi dito a grande dificuldade em Grid é a falta de conhecimento dos processos que serão executados na Grid, e a segurança para poder acessar terminais em domínios desconhecidos. O Swan faz a segurança da Grid com dois níveis de segurança, o primeiro nível é o nível do GUM, ou seja, as máquinas confiam no nível de segurança do Sistema Operacional ou o que o administrador do sistema configurou. O segundo nível é o nível é através de uma máquina virtual. Todas as aplicações rodam dentro de um ambiente restrito impedindo que um software malicioso execute no ambiente do GRID. Esse segundo nível usa o Xen como monitor virtual.


Corepeer

Corepeer é o responsável por organizar a rede de peers, ele faz toda a inteligência de redirecionamento de processos caso uma Grid não suporte o processamento. O Corepeer que interliga a rede de Peers fazendo assim, os vários domínios administrativos se comunicarem.

E assim finalizo o estudo que fiz sobre grids computacionais. Um projeto bem interessante de ser desenvolvido é a criação de um software que automatize a inclusão de jobs em uma grid.

Até o próximo post.

Um estudo sobre Grids Computacionais.. (Parte 2)

January 23rd, 2009 No comments

Grids Computacionais

Continuando o post sobre grid computing, vamos falar um pouco mais sobre a computação em grid, alguns conceitos e aspectos de uma grid.

  • Computação em Grid

Muitas questões devem ser levadas em consideração no tocante ao desenvolvimento de uma Grid, tais como modelo de programação e balanceamento de carga e devido o grid ter uma ampla distribuição, grande escala, alta heterogeneidade e múltiplos domínios administrativos, novas questões são levantadas, tais como o escalonamento de aplicações, autenticação, segurança, disponibilidade e tempo de resposta.

  • Escalonamento de Aplicação

O escalonador nada mais é que um controlador dos recursos. Não é possível utilizar os recursos de um sistema operacional sem que o escalonador permita. Ele recebe as solicitações de vários recursos e decide quem vai ser executado primeiro [2].

Escalonamento de recursos ou de tarefas em grid é algo complexo de ser tratado, já que temos uma estrutura com vários domínios administrativos com grande escala e ampla distribuição. O escalonamento das tarefas se torna algo complexo, pois os administradores dos recursos normalmente não abrem mão do controle de seus recursos. Escalonar tarefas que sofrem interferências externas se torna algo complexo e de baixa eficiência.

Então, como existem vários domínios têm-se vários escalonadores de recursos, ou seja, alguém tem que dizer que recurso será utilizado para que seja enviada para o escalonador correto, para que essa aplicação seja executada corretamente, e isso é uma tarefa do escalonador de aplicação.

Escalonadores de aplicação não controlam os recursos que usam, eles só obtêm acesso aos recursos submetendo solicitações aos escalonadores que controlam os recursos [2].

  • Autenticação

A ampla distribuição e a existência de múltiplos domínios administrativos dificultam a autenticação no Grid. Em Grid é necessária uma forma de acesso para cada recurso [2], garantido a autenticação de cada usuário, pois, caso contrário, os administradores não aceitaram o uso de tal recurso.

  • Segurança

A figura a seguir mostra a arquitetura de uma grade computacional, e o serviço de segurança é responsável por três tarefas principais.

Arquitetura de uma Grid Computacional

Arquitetura de um Grid

  • Proteger os recursos compartilhados contra aplicações maliciosas.

  • Gerenciar a identidade dos usuários, permitindo relações de confiança.

  • Proteger as trocas de informações entre a grade, provendo confidencialidade e integridade.

Tendo em vista que no Grid tem um número bem maior de usuários, recursos e aplicações sendo executados e administrados por diferentes domínios administrativos, vemos que os riscos e vulnerabilidades para sistemas desenvolvidos para a grade se ampliam em relação aos sistemas tradicionais, logo, medidas de segurança estão sendo tomadas no tocante ao processo de autenticação e autorização.

Deve-se garantir, com boas políticas de segurança, que os recursos não sejam providos por um usuário mal intencionado que busca apenas obter privilégios de super usuário.

Realizar auditoria na grade também é um requisito importante. Já que estamos em um ambiente com vários domínios administrativos, nem sempre é possível prever todas as ameaças. Então, disponibilizar meios de rastrear possíveis erros ou ameaças seria uma boa prática no que diz respeito à segurança.

Mecanismos que impeçam a modificação ou obtenção de dados na grid, ou seja, que garantam a confidencialidade e a integridade dos dados é um requisito muito importante em um ambiente de grade computacional.

Levando em consideração as principais formas de prevenir possíveis problemas de segurança em uma grade computacional, observamos que a viabilidade de utilizar essa arquitetura para o processo de demanda de processamento é bastante interessante.

Um estudo sobre Grids Computacionais.. (Parte 1)

January 22nd, 2009 No comments

Assistindo um vídeo sobre o Campus Party 2009 percebi que uma das coisas que estão sendo feitas é uma grande Grid Computacional. Um dos coordenadores do evento, comentou que os recursos computacionais estavam sendo usados por meio da computação em grade. Então decidi postar um estudo que fiz sobre Grid e que já tem um tempo mas que não deixa de ser um assunto atual.

  1. Conceituação de Grids Computacionais

Grids Computacionais surgiram em meados da década de 90 em universidades e institutos de pesquisa com o intuito de viabilizar a execução de aplicações paralelas em recursos geograficamente dispersos e pertencentes a múltiplas organizações. De inicio essas múltiplas organizações se restringiam apenas a laboratórios de pesquisa e universidades. Ian Foster idealizou o conceito de “Grid Computing” em 1993 no laboratório Argonne. Este conceito de Computação em Grade se justificava por uma necessidade de utilizar os recursos computacionais de forma ótima, dispersos geograficamente, tais como: um “Software” existente em alguma universidade ou uma gama de hardware que estivessem com seus recursos ociosos.

Este conceito mesmo que viável tecnicamente passou um longo tempo para que começasse a apresentar resultados concretos. Com isso começou a ganhar o mundo empresarial mostrando ser uma tecnologia que tem muito a oferecer. Em 1999, a IBM começou a investir nessa idéia tendo em vista que essa tecnologia poderia trazer bons resultados para o mundo dos negócios, no que diz respeito a processamento sob demanda. Logo em seguida HP/Compaq, Sun, Fujitsu, Microsoft, NEC e Oracle também começaram a investir e hoje podemos considerar Grids Computacionais um assunto que está na mente dos executivos de tecnologia da informação [3].

Com isso podemos dizer que “Grid Computing” nada mais é que uma rede no qual um indivíduo qualquer poderá se conectar em busca de poder computacional (Ciclos, armazenamento, software, periféricos, etc.) sendo provido de forma transparente como é mostrado na Figura 1.

Grid Computing

Grid Computing

Figura 1: Transparência no acesso a recursos e serviços. [2]

Para muitas pessoas o conceito de Grid Computing se resume a Internet, pois, através de vários roteadores, o serviço seria executado de forma transparente e satisfatória. Mas este conceito vai muito mais além. Quando falamos de processamento sob demanda, estamos falando de processamento de alto desempenho. Processar algo de forma rápida e eficiente.

As redes de computadores estão em amplo crescimento e um dos pontos mais explorado é o relacionado ao aumento do desempenho das redes. Essa melhoria vem acontecendo e levou a criação da idéia de utilizar computadores independentes conectados em rede como plataforma para execução de aplicações paralelas [1]. A idéia de plataforma de execução de aplicações paralelas não está restrita a Grids Computacionais. Clusters também se encaixam nessa idéia, mas a diferença de um Cluster para um Grid é que Grids são mais distribuídos, diversos e complexos [2].

Uma Grid é heterogenia e tem alta dispersão geográfica, ou seja, não é dedicado a uma única aplicação. Tem múltiplos domínios administrativos, pois, várias aplicações de várias instituições podem utilizar os recursos da mesma grid e possui controle distribuído, portanto, não está restrito a uma única entidade.

Com isso, temos que Computação em Grid é algo além de um simples conceito estendendo-se a uma definição, que seria uma plataforma para execução de aplicações paralelas, sendo uma alternativa para processamento sob demanda em larga escala.

Bibliografia:

  • [1] I.Foster and C. Kesseman (editors). The Grid: Blueprint for a New Computing Infra structure. Morgan Kaufman Publishers. 1999.
  • [2] CIRNE, WALFREDO. Grids Computacionais: Arquitetura, Tecnologia e Aplicações. Departamento de Sistemas e Computação, UFCG.
  • [3] TAURION, C. Grid Computing: um novo paradigma computacional. Rio de Janeiro: Brasport, 2004.

Categories: Grid Computing Tags: