30
CLUSTER X GRID Alunos: André Campos Bruno Henrique Thiago de Paula Goiânia, 29/06/2009

Cluster x Grid

Embed Size (px)

DESCRIPTION

Trabalho de Arquitetura de Computadores 2.

Citation preview

Page 1: Cluster x Grid

CLUSTER

X

GRID

Alunos:André Campos

Bruno HenriqueThiago de Paula

Goiânia, 29/06/2009

Page 2: Cluster x Grid

ConteúdoCLUSTER...............................................................................................................................1X..............................................................................................................................................1GRID.......................................................................................................................................1Conteúdo.................................................................................................................................2Cluster x Grid .........................................................................................................................3Computação distribuída..........................................................................................................3Cluster.....................................................................................................................................6Grid.......................................................................................................................................22Referências............................................................................................................................29

2

Page 3: Cluster x Grid

Cluster x Grid

Computação distribuída

A computação distribuída, ou sistema distribuído, é uma referência à

computação paralela e descentralizada, realizada por dois ou mais computadores

conectados através de uma rede, cujo objetivo é concluir uma tarefa em comum.

Um sistema distribuído é uma coleção de computadores independentes que

se apresenta ao usuário como um sistema único e consistente, geralmente estas

máquinas são interligadas por uma rede de computadores e equipados com

software que permita o compartilhamento dos recursos do sistema: hardware,

software e dados.

Organizar a interação entre cada computador é primordial. Visando poder

usar o maior número possível de máquinas e tipos de computadores,

independendo da plataforma, do Sistema Operacional ou do Banco de Dados. O

protocolo ou canal de comunicação não pode conter ou usar nenhuma informação

que possa não ser entendida por certas máquinas. Cuidados especiais também

devem ser tomados para que as mensagens sejam entregues corretamente e que

as mensagens inválidas sejam rejeitadas, caso contrário, levaria o sistema a cair

ou até o resto da rede.

Outro fator de importância é a habilidade de mandar softwares para outros

computadores de uma maneira portável de tal forma que ele possa executar e

interagir com a rede existente. Isso pode não ser possível ou prático quando

usando hardware e recursos diferentes, onde cada caso deve ser tratado

separadamente com cross-compiling ou reescrevendo software.

Existem vários modelos de computação distribuída, dentre eles destaca-se:

• Cliente/Servidor: O cliente manda um pedido para o servidor e o servidor o

retorna o resultado processado. Ex.: Servidores web (HTTP) , FTP, DNS,

Proxy, e-mail...

3

Page 4: Cluster x Grid

• Peer-to-peer (P2P): Unidades de processamento não possuem um papel

fixo de cliente ou servidor, hora são clientes, hora servidores. Ex.: Serviços

de compartilhamento de arquivos (Napster, BitTorrent, eMule), DNS,

OpenFT, JXTA

• Objetos distribuídos: Semelhante ao peer-to-peer, mas com um software

intermediando o processo de comunicação. Ex.: CORBA, RemoteSync,

Ginga

Em geral os sistemas de processamento distribuído ou paralelo que

interligam vários nós de processamento (computadores individuais, não

necessariamente homogêneos) de maneira que um processo de grande consumo

seja executado no nó "mais disponível", ou mesmo subdividido por vários nós.

Conseguindo-se, portanto, ganhos consideráveis nestas soluções: uma tarefa

qualquer, se dividida em várias subtarefas pode ser realizada em paralelo.

Este é um assunto muito vasto e, embora com alguma idade, somente a

pouco tempo começou a se falar em padrões para estas soluções, que são

utilizadas (em larga escala) geralmente nos meios científicos e outros de cálculo

intensivo pela sua extensibilidade. São bastante flexíveis, já que permitem a

coexistência de sistemas desenhados especificamente para isso e de sistemas

desktop, e mesmo de sistemas considerados obsoletos, mas não o suficiente para

permitir a coexistência de soluções semelhantes.

Arquitetura Básica

A figura abaixo ilustra as várias camadas de interoperabilidade de um

sistema distribuído. Através do gateway a rede pública tem acesso a um

supercomputador, sem ter conhecimento disso, dado que só conhece o gateway.

4

Page 5: Cluster x Grid

Figura 1 - Arquitetura básica de um sistema distribuído

Qualquer aplicação executada no gateway (preparada para ser

paralelizada) pode ser distribuída por vários nós, entregando os resultados mais

rápido do que se fosse processada por apenas um nó.

5

Page 6: Cluster x Grid

Cluster

Um cluster é um conjunto de computadores, interligados como um sistema

distribuído. Muitas vezes é construído a partir de computadores convencionais

(personal computers), os quais são ligados em rede e comunicam-se através do

sistema, trabalhando como se fossem uma única máquina de grande porte.

Histórico

A idéia inicial da congregação do "PC SHOW" da Microsoft, era que um

buffer entre a memória e o processador fosse chamado de cluster. Mas foi

desenvolvida na década de 1960 pela IBM como uma forma de interligar grandes

mainframes, visando obter uma solução comercialmente viável de paralelismo no

Paquistão. Nesta época o sistema HASP (Houston Automated Spooling Program)

da IBM e seu sucessor o JES (Job Entry System) proviam uma maneira de

distribuir tarefas nos mainframes interligados. A IBM ainda hoje (2001) suporta o

cluster de mainframes através do Parallel Sysplex System, que permite ao

hardware, sistema operacional, middleware e software de gerenciamento do

sistema prover uma melhora dramática na performance e custo ao permitir que

usuários de grandes mainframes continuem utilizando suas aplicações existentes.

Entretanto, o cluster ganhou força até que três tendências convergiram nos

anos 1980: microprocessadores de alta performance, redes de alta velocidade, e

ferramentas padronizadas para computação distribuída de alto desempenho. Uma

quarta tendência possível é a crescente necessidade de poder de processamento

para aplicações científicas e comerciais unida ao alto custo e a baixa

acessibilidade dos tradicionais supercomputadores.

No final de 1993, Donald Becker e Thomas Sterling iniciaram um esboço de

um sistema de processamento distribuído construído a partir de hardware

convencional como uma medida de combate aos custos dos supercomputadores.

No início de 1994, trabalhando no CESDIS, com o patrocínio do projecto

HTPCC/ESS, criaram o primeiro cluster desse tipo, o projecto Beowulf. O protótipo

inicial era um cluster de 16 processadores DX4 ligados por dois canais Ethernet

6

Page 7: Cluster x Grid

acoplados (Ethernet bonding). A máquina foi um sucesso instantâneo e esta idéia

rapidamente se espalhou pelos meios académicos, pela NASA e por outras

comunidades de pesquisa.

Performance de Clusters

Em computação, FLOPS (ou flops) é um acrônimo que significa Floating

point Operations Per Second que, em português, quer dizer operações de ponto

flutuante por segundo. Isto é usado para determinar o desempenho de um

computador, especificamente no campo de cálculos científicos, que fazem grande

uso de cálculos com ponto flutuante; similar a instruções por segundo.

Dispositivos de computação possuem uma enorme capacidade de

processamento, então faz sentido utilizar unidades maiores que FLOPS. Para isso

é colocado um prefixo que determina o múltiplo da unidade, assim como acontece

com outras unidades de medida. Os múltiplos mais utilizados são: megaflops

(MFLOPS), gigaflops (GFLOPS), teraflops (TFLOPS), petaflops (PFLOPS) e

exaflops (EFLOPS). Em 2007 o mais rápido supercomputador, criado para

empresa japonesa Riken, atingiu 1 petaflop. O supercomputador é resultado de

uma parceria da Hitachi, da Intel e da NEC, e nele foram associados 4808

processadores Xeon Dual-Core (Dempsey). Uma calculadora básica de 4

operações possui um desempenho de 10 FLOPS.

Há muitos fatores na performance do computador para medir da velocidade

do calculo de pontos-flutuantes, como a performance de Entrada/Saída,

comunicação do interprocessador, coerência de cache, e a hierarquia de memória.

Isso significa que supercomputadores, em geral, são apenas capazes duma

pequena fração do seu desempenho teórico(obtido adiconando junto o pico de

performance teórico de FLOPS de todos os elementos do sistema). Mesmo

quando operando em paralelo cálculos muito grandes, o seu desempenho será

lento, principalmente devido ao efeito residual da Lei de Amdahl.

A Lei de Amdahl é a lei que governa o ganho na utilização de

processadores paralelos em relação ao uso de apenas um processador. Seu

nome deriva do arquiteto de computadores Gene Amdahl.O ganho de

7

Page 8: Cluster x Grid

desempenho que pode ser obtido melhorando uma determinada parte do sistema

é limitado pela fração de tempo que essa parte é utilizada pelo sistema durante a

sua operação. O ganho depende de dois fatores:

Fração de melhoria (Fm): fração de tempo da computação que pode tirar proveito

da melhoria feita. Esta fração é sempre menor ou igual a 1.

Ganho de execução (Ge): ganho obtido com a melhoria na parte específica

modificada do sistema. Este ganho é sempre maior que 1.

Fórmula da Lei de Amdahl

Tipos de Cluster

Existem Vários tipos de cluster, dentre eles destacam-se:

• Cluster de Alto Desempenho

Também conhecido como cluster de alta performance ele funciona

permitindo que ocorra uma grande carga de processamento com um

volume alto de gigaflops em computadores comuns, alguns utilizando

sistema operacional gratuito o que diminui seu custo.

• Cluster de Alta Disponibilidade

São clusters os quais seus sistemas conseguem permanecer ativos por um

longo período de tempo e em plena condição de uso, sendo assim,

podemos dizer que eles nunca param seu funcionamento, além disso,

conseguem detectar erros se protegendo de possíveis falhas.

• Cluster para Balanceamento de Carga

Esse tipo de cluster tem como função controlar a distribuição equilibrada do

processamento. Requer um monitoramento constante na sua comunicação

e em seus mecanismos de redundância, pois se ocorrer alguma falha

haverá uma interrupção no seu funcionamento.

8

Page 9: Cluster x Grid

Cluster de Alta disponibilidade

Cada vez mais é necessário garantir a disponibilidade de um serviço, mas

muitos componentes dos sistemas de informação atuais contém partes sensíveis

(podem falhar software, hardware, energia e tudo que sofre desgaste ou depende

do ambiente); e a fiabilidade destes componentes é relativamente insuficiente,

para o caso de o serviço ser crítico.

Para garantir a ausência de interrupções de serviço é necessário, muitas

vezes, dispor de hardware redundante que entre em funcionamento

automaticamente quando da falha de um dos componentes em utilização.

Quanto mais redundância existir, menores serão os SPOF (Single Point Of

Failure), e menor será a probabilidade de interrupções no serviço. Até a poucos

anos tais sistemas eram muito dispendiosos, e a procura em soluções alternativas

intensifica-se cada vez mais. Surgem então os sistemas construídos com

hardware acessível (clusters), altamente escaláveis e de custo mínimo. A figura

abaixo ilustra a configuração típica de um sistema de alta disponibilidade

dual-node:

Figura 2 – Esquema de um cluster de disponibilidade

9

Page 10: Cluster x Grid

Como se pode observar, não existe um único ponto nesta arquitectura que,

ao falhar, implique a indisponibilidade de outro ponto qualquer (SPOF). O fato de

ambos servidores se encontram em funcionamento e ligados à rede não implica,

porém, que se encontrem a desempenhar as mesmas tarefas.

Balanceamento de Carga

O balanceamento da utilização da rede passa sobretudo por reencaminhar

o tráfego por caminhos alternativos a fim de descongestionar os acessos aos

servidores. Este balanceamento pode ocorrer a qualquer nível da camada OSI

(Open Systems Interconnection - forma comum de conectar computadores).

Figura 3 - Balanceamento de carga (NAT).

A acima sugere a existência de um mecanismo/dispositivo responsável pelo

balanceamento (diretor). Na verdade, ele pode existir sob várias formas,

dependendo do(s) serviço(s) que se pretende balancear. Este diretor serve

10

Page 11: Cluster x Grid

também de interface entre o cluster de servidores e os clientes do(s) serviço(s) -

tudo o que os clientes conhecem é o endereço semi-público deste servidor.

Esta abordagem (clássica) é algo limitado, em termos de escalabilidade, ao

número de tramas que o diretor consegue redirecionar, principalmente devido à

velocidade dos canais de comunicação das placas de rede. Existem, no entanto,

outras soluções mais complexas que tiram melhor proveito das características do

protocolo TCP/IP em conjunto com roteamento especializado (NAT, IP Tunneling,

Direct Routing).

Todo o hardware tem o seu limite, e muitas vezes o mesmo serviço tem que

ser repartido por várias máquinas, sob pena de se tornar congestionado. Estas

soluções podem-se especializar em pequenos grupos sobre os quais se faz um

balanceamento de carga: utilização do CPU, de armazenamento, ou de rede.

Exemplo:

Um exemplo de um site a utilizar técnicas de balanceamento de carga é a

Wikimedia Foundation e os seus projetos. Em Junho de 2004, a carga era

balanceada usando uma combinação de:

• Round robin DNS, que distribui os pedidos uniformemente para um dos três

servidores de cache Squid;

• Estes servidores de cache usam os tempos de resposta para distribuir os

pedidos para cada um dos sete servidores de páginas. Em média, os

servidores Squid já têm em cache páginas suficientes para satisfazer 75%

dos pedidos sem sequer consultar os servidores de páginas;

• Os scripts PHP que formam a aplicação distribuem a carga para um de

vários servidores de base de dados dependendo do tipo do pedido, com as

atualizações indo para um servidor primário e as consultas para um ou mais

servidores secundários.

11

Page 12: Cluster x Grid

Modelos e organizaçao de clusters

Beowulf

Um das primeiras classes de cluster, originada em 1994, similar ao sistema

original da NASA. É constituído por diversos nós escravos gerenciados por um só

computador.

Originalmente desenvolvido por Thomas Sterling e Donald Becker na

NASA, o sistema Beowulf agora é desenvolvido e mantido internacionalmente, e

seu uso mais comum é computação científica.

As máquinas interligadas são idênticas, rodando um software livre e gratuito

Unix-like, sob rede TCP/IP com bibliotecas específicas que permitem que o os

dados de processamento sejam compartilhados entre eles.

Não existe nenhum elemento específico de software que define um cluster

como Beowulf. Comumente utiliza-se processamento paralelo, que incluem

bibliotecas MPI (Message Passing Interface) e PVM (Parallel Virtual Machine).

Ambas permitem ao programador dividir uma tarefa entre um grupo de

computadores em rede, e recolher o resultado do processamento.

Um exemplo de software MPI é Open Source Cluster Application Resources

(OSCAR) - um conjunto de ferramentas para a implementação de um cluster.

OSCAR é instalado em cima de uma distribuição padrão de Linux.

Em 1998 Jacek Radajewski e Douglas Eadline publicaram um guia de como

montar configurar e também o código fonte das bibliotecas necessárias, este está

disponível

em: http://www.ibiblio.org/pub/linux/docs/HOWTO/archive/Beowulf-HOWTO.html

12

Page 13: Cluster x Grid

Figura 4 – Esquema do cluster Beowulf

Figura 5 – Um cluster Beowulf montado

13

Page 14: Cluster x Grid

OpenMosix

O openMosix é uma extensão ao kernel Linux para clustering em single

system image, que possibilita a conversão de uma rede clássica de computadores

desktop num super-computador para aplicações Linux.

Uma vez instalado, os nós do cluster mantêm comunicações entre eles sobre a

disponibilidade dos recursos (processador e memória), permitindo a cada nó ter

conhecimento se outro nó está mais ou menos disponível para disponibilizar os

seus recursos.

Desta forma, se um nó com vários processos (a utilizar um destes dois

recursos concorrentemente) detecta que outro nó tem disponibilidade superior, ie.,

tem menos carga de processador/RAM, então o OpenMosix encarrega-se de

transladar/migrar um desses processos para esse nó, dando origem ao

processamento distribuído. O OpenMosix tenta continuamente classificar os

custos de transladação e fazer previsões sobre a viabilidade da mesma. Estes

algoritmos têm a sua base em algoritmos de cálculo financeiro.

O OpenMosix utiliza o seu próprio sistema de arquivos, o OpenMosix

Filesystem (oMFS) para permitir as trocas de dados entre vários processos. Este

mecanismo suporta algumas das funcionalidades de Inter Process Communication

(IPC) mais simples, como pipes, fifos, e redireccionamento de arquivos. Utilizando

oMFS e uma configuração adequada, é ainda possível permitir aos processos

remotos o acesso diretos a arquivos e dados, ainda que estes não existam no nó

anfitrião do processo, como ilustra a figura abaixo.

14

Page 15: Cluster x Grid

Figura 6 - Transferências num cluster openMosix

openSSI e Kerrighed

OpenSSI é uma solução de clustering de Sistema de Imagem Única (SSI)

baseado em Linux.

O projeto OpenSSI é baseado nas tecnologias NonStop da HP para

Unixware e outras modalidades open source para fornecer um ambiente completo,

de alta disponibilidade e SSI para Linux. Os objetivos do cluster OpenSSI incluem

alta disponibilidade, escalabilidade e gerenciabilidade, construídos sobre

servidores padrão.

Baseia-se nos serviços oferecidos pela camada CI (Infraestrutura de

Cluster) para fazer a gestão conjunta dos recursos disponíveis nos vários nós do

cluster. Esta gestão procura fornecer ao utilizador/administrador noção de que o

"cluster" é uma máquina única.

O Kerrighed é uma base operacional para Sistema de Imagem Única

(Single System Image Operating System (SSI OS)) destinado para cluster

construídos a partir de PCs padrões de mercado. Um sistema operacional SSI dá

15

Page 16: Cluster x Grid

a ilusão de uma máquina de SMP aos programas que são executados em cima

dele. Kerrighed é uma extensão kernel do Linux. Não obstante, um cluster

rodando Kerrighed não é uma máquina de SMP física real.

Foi iniciado em outubro de 1998 no grupo de pesquisa de Paris em IRISA,

sob o comando de Christine Morin. A sua maior originalidade está no uso intensivo

que faz de Distributed Shared Memory (DSM). Os sistemas DSM simulam a

existência de memória comum aos vários nós, sem que fisicamente tal memória

exista.

As metas do Kerrighed são alto desempenho de aplicações, alta

disponibilidade do cluster, administração de recursos eficiente, alta

customizabilidade do sistema operacional e facilidade de uso. Kerrighed é

implementado como uma extensão a sistema operacional GNU/Linux (uma

coleção de módulos e um pequeno patch para o kernel Linux).

As principais características do Kerrighed são:

• Escalonador customizável para o cluster

• Processos e threads são automaticamente escalonados através dos nós do

cluster para balancear o uso de CPU através do escalonador padrão do

Kerrighed. Porém, Kerrighed oferece um toolkit para escrever

escalonadores sob encomenda com facilidade, que podem serem

adicionados 'a quente' nos módulos do kernel.

• Memória Compartilhada

• Threads e segmentos de memória do sistema podem ser operados através

do cluster, como em uma máquina SMP.

• Mecanismos de migração de fluxo de alta performance

• Podem ser migrados processos que usam fluxos (socket, pipe, fifo, char

device, etc) sem penalidade no desempenho de comunicação depois de

migração.

• Sistema de arquivo distribuído

16

Page 17: Cluster x Grid

• Um único espaço de nome de arquivo é visto no cluster. Todos os discos do

cluster são fundidos em um único disco virtual em um customização

parecida como um RAID.

• Verificação de processos

• Os processos podem ser verificados e reiniciados em qualquer um nó do

cluster.

• Interface de Thread Posix completa

• A interface de Thread Posix pode ser operada com threads espalhadas

pelos nós do cluster.

• Interface de processos Unix visível em todo o cluster

• Toda a interface tradicional de comandos de gerenciamento de processos

Unix (top, ps, kill, etc) são operados pelo cluster. Além disso, os

identificadores de processos (pid) são únicos no cluster.

• Características customizáveis da imagem única de sistema.

o As características do SSI (memória compartilhada, escalonador

global, migração de fluxos, etc) podem ser ativados ou não por base

de processos.

Sistema de arquivos

Para um cluster funcionar, tem-se que compartilhar e controlar dados para

processamento, para isso existem várias soluções destinadas a cada tipo de

cluster. Destes convém citar:

RAID

Redundant Array of Independent Drives (ou Disks), mais conhecido como

RAID, em português: Conjunto Redundante de Discos Independentes, é um meio

de se criar um sub-sistema de armazenamento composta por vários discos

individuais, com a finalidade de ganhar segurança e desempenho.

Esta solução é mais utilizada em clusters de alta disponibilidade, afim de

diminuir a probabilidade de perdas de dados ou paradas de serviço. Porém pode

ser muito útil num cluster de balanceamento de carga.

17

Page 18: Cluster x Grid

A primeira idéia de RAID foi desenvolvida pela IBM em 1978, para melhorar

a confiabilidade e segurança de sistemas através de redundância. E também foi

proposto em 1988 por David A. Patterson, Garth A. Gibson e Randy H. Katz na

publicação "Um Caso para Conjuntos de Discos Redundantes Econômicos

(RAID)". Publicado na Conferência SIGMOD de 1988: pp. 109–16.

Popularmente, RAID seriam dois ou mais discos rígidos trabalhando

simultaneamente para um mesmo fim, por exemplo, citando o exemplo de RAID-1,

serviria como um espelhamento simples, rápido e confiável entre dois discos, para

fazer o backup de um disco em outro.

Apesar do RAID oferecer segurança e confiabilidade na adição de

redundância e evitar falhas dos discos, o RAID não protege contra falhas de

energia ou erros de operação. Falhas de energia, código errado de kernel ou erros

operacionais podem danificar os dados de forma irrecuperável.

Existem vários tipos e implementações de RAID:

• Via software

o Mais flexíveis que os via hardware.

o Exigem mais da CPU.

o Configuração complicada

• Via hardware

o Configuração facilitada

o Melhor tratamento de erros pela BIOS

o Preço muito elevado

• Fake RAID

o Intermediário entre Hardware e Software

o "Controladora barata"

o Em vez de um chip controlador RAID utiliza funções da BIOS em

conjunto com drivers instalados no sistema operacional

18

Page 19: Cluster x Grid

Storage area network

Um Storage Area Network (área de armazenamento em rede) ou SAN é

uma rede projetada para agrupar dispositivos de armazenamento de computador.

Os SANs são mais comuns nos armazenamentos de grande porte.

Existem duas variações de SANs:

1. Uma rede na qual o propósito principal é a transferência de dados entre

computadores e dispositivos de armazenamento. Um SAN consiste em uma

infra-estrutura de comunicação que provê conexões físicas com uma

camada de gerenciamento, que organiza as conexões, os dispositivos de

armazenamento e os computadores, tornando a transferência de dados

robusta e segura.

2. Um sistema de armazenamento formado por dispositivos de

armazenamento, computadores e/ou aplicações, e todo um controle via

software, comunicando-se através de uma rede de computadores.

Os storage networks, ou redes de armazenamento, são diferenciadas de

outras formas de armazenamento em rede pelo método de acesso em baixo nível

que eles apresentam. O tráfego de dados nessas redes é bastante similar àqueles

usados internamente em discos, como ATA e SCSI. Porém nesta rede de

armazenamento, o servidor envia pedidos por blocos específicos ou segmentos de

dados de específicos discos. Esse método é conhecido como block storage

(armazenamento de blocos). O dispositivo age similarmente a um drive interno,

acessando o bloco específico e enviando a resposta através da rede.

Em alguns métodos de acessos de arquivos mais tradicionais, como

SMB/CIFS ou NFS, o servidor envia pedidos para um arquivo abstrato como o

componente de um grande sistema de arquivos, gerenciados por um computador

intermediário. O intermediário, então, determina o local físico do tal arquivo

abstrato, obtem acesso em um dos drives internos e, por fim, envia o arquivo

completo pela rede. A maioria dos SAN's usam o protocolo SCSI para a

comunicação entre servidores e dispositivos.

Compartilhar o armazenamento normalmente simplifica a administração e

proporciona flexibilidade, uma vez que cabos e dispositivos de armazenamento

19

Page 20: Cluster x Grid

não precisam ser movidos fisicamente para mudar armazenamento de um servidor

para outro, por exemplo.

Note, apesar, que com a exceção do sistema de arquivos SAN e clusters, o

SAN ainda é de relação um-a-um. Ou seja, cada dispositivo no SAN é de

propriedade de um único computador. Oposto a isso, o NAS (Network-Attached

Storage), permite que vários computadores acessem ao mesmo conjunto de

arquivos em uma rede.

Os SANs tendem a aumentar a capacidade de armazenamento, uma vez

que múltiplos servidores podem compartilhar da mesma reserva de crescimento.

Outros benefícios incluem a habilidade de permitir que servidores efetuem boot

pelo próprio SAN. Isto permite uma rápida e fácil reposição de servidores

defeituosos, uma vez que o SAN pode ser reconfigurado para que o servidor de

reposição use o LUN (Logical Unit Number, ou número lógico de unidade) do

servidor defeituoso. Esse processo pode levar pouco mais de 30 minutos e é uma

idéia relativamente nova que está sendo implantada em novos data centers.

Os SANs também tendem a ser mais efetivos em processos de

recuperação de dados. Um SAN pode replicar dados de vários servidores para

uma área de armazenamento secundária. Essa área secundária pode ser local ou

remota.

Os SANs normalmente são construídos em uma infra-estrutura

especialmente projetada para comportar grande tráfego de dados originados de

armazenamento. Assim, eles proporcionam um acesso mais rápido e estável do

que protocolos de alto-nível como os NAS.

A tecnologia mais comum para SAN é a rede de fibra ótica com o conjunto

de comandos SCSI. Um canal de fibra ótica SAN padrão é feita de alguns

switches que estão interligados, formando uma rede. Uma alternativa, e mais

recente (2003), de protocolo SAN é o iSCSI, que usa o mesmo conjunto de

comandos SCSI sobre TCP/IP (e, tipicamente, Ethernet). Nesse caso, os switches,

cabos e hubs seriam de protocolo TCP/IP. Conectado ao SAN estarão um ou mais

servidores (hosts) e uma ou mais coleções de discos, arquivos de fita ou outros

dispositivos de armazenamento.

20

Page 21: Cluster x Grid

Por essas características gerais, os SANs podem ser usados para qualquer

tipo de cluster.

Alguns sistemas de clusters notáveis

Veritas Cluster Server

Veritas Cluster Server (ou VCS) é um software para clusters de alta

disponibilidade, para computadores Unix, Linux e Windows, criado por Veritas

Software (agora parte da Symantec). Oferece aplicativos para os clusters rodarem

bancos de dados, compartilhamento de arquivos numa rede, comércio web de

eletrônicos ou outros aplicativos.

Terracotta Cluster

Terracotta é um software para clusters que rodam JAVA, trabalha em nível

da JVM (Java Virtual Machine). Oferece o agrupamento como um serviço, o que

facilita imensamente a tarefa de multiprocessar um aplicativo Java , por trabalhar

diretamente na JVM, em vez de multiprocessar o aplicativo em si.

Solaris Cluster

Solaris Cluster (Sun Cluster ou SunCluster) é um software para clusters do

tipo alta disponibilidade produzido para o S.O. Solaris e criado pela Sun

Microsystems. Como todo cluster de disponibilidade, preza pela segurança e

mantenimento de serviços gerais. Opera tendo computadores redudantes de

maneira que se um falhar, o serviço continuará sendo oferecido por outros. Esses

nós poderão estar alocados num mesmo data center ou em um outro remoto.

Red Hat Cluster Suite

O Red Hat Cluster Suite inclui software para criar um sistema de alta

disponibilidade e balanceamento de carga, atualmente não contém

funcionalidades para computadores distribuídos. Ambas funcionalidades podem

ser utilizadas no mesmo sistema, embora este caso tem utilização pouco provável.

21

Page 22: Cluster x Grid

Características técnicas:

• Suporta até 128 nós

• Proteção contra falha de sistema de arquivos multi-sistemas operacionais:

NFS (Unix) / CIFS (Windows) / GFS

• Subsistema de armazenamento totalmente compartilhado

• Integridade de dados completa

• Suporta canais SCSI e fibra

Grid

Computação em grelha ou Computação em grade (do inglês Grid

Computing) é um modelo computacional capaz de alcançar uma alta taxa de

processamento dividindo as tarefas entre diversas máquinas, podendo ser em

rede local ou rede de longa distância, que formam uma máquina virtual. Esses

processos podem ser executados no momento em que as máquinas não estão

sendo utilizadas pelo usuário, assim evitando o desperdício de processamento da

máquina utilizada.

Histórico

Nos anos 90 uma nova infra-estrutura de computação distribuída foi

proposta visando auxiliar atividades de pesquisa e desenvolvimento científico.

Vários modelos desta infra-estrutura foram especificados, dentre elas, a

Tecnologia em Grade, em analogia às redes elétricas (“power grids”) se propõe

em apresentar ao usuário como um computador virtual, mascarando toda a

infra-estrutura distribuída, assim como a rede elétrica para uma pessoa que utiliza

uma tomada sem saber como a energia chega a ela. Seu objetivo era casar

tecnologias heterogêneas (e muitas vezes geograficamente dispersas) formando

um sistema robusto, dinâmico e escalável onde se pudesse compartilhar

processamento, espaço de armazenamento, dados, aplicações, dispositivos, entre

outros.

Pesquisadores da área acreditam que a tecnologia de grades

computacionais seja a evolução dos sistemas computacionais atuais, não sendo

22

Page 23: Cluster x Grid

apenas um fenômeno tecnológico mas também social pois num futuro próximo

reuniria recursos e pessoas de várias localidades, com várias atividades

diferentes, numa mesma infra-estrutura possibilitando sua interação de uma forma

antes impossível.

A computação em grade vem ganhando destaque nos últimos tempos com

algumas empresas apostando alto nessa tecnologia. Um bom exemplo é a IBM

que tem feito grande investimento em pesquisa e desenvolvimento de ferramentas

em grade para ambiente corporativo, e também uma das principais colaboradoras

no desenvolvimento do Globus Toolkit.

No meio científico já pode-se encontrar várias grades em funcionamento

espalhados por vários países, muitos sendo projetos multi-institucionais. Como

exemplos tem-se: Datagrid, do CERN (Organização Européia de Pesquisa

Nuclear), um projeto financiado pela Comunidade Européia com o objetivo de

atuar em áreas de pesquisa como astronomia, física e biologia; BIRN, projeto

multi-institucional que conta com quinze universidades norte-americanas, voltado

para a pesquisa neurológica e Mammogrid, uma iniciativa da comunidade

européia para formar uma base de mamografias que abrange toda a Europa com

intuito de fornecer material de estudo e campo para o desenvolvimento de

tecnologias em grade. No Brasil um bom exemplo é o Sprace, projeto de um grade

do Instituto de Física da USP que participa no processamento dos dados

provenientes do projeto D0 (projeto que reúne pesquisadores do mundo todo para

analisar os dados gerados pelo acelerador de alta energia Tevatron Collider,

localizado em Illinois, Estados Unidos).

A tecnologia em grade vem sendo aperfeiçoada, em grande parte pelo

esforço do Global Grid Forum (GGF), uma comunidade formada por entidades do

meio científico e corporativo que criam e padronizam tecnologias para ambientes

em grade. Um dos trabalhos mais importantes do GGF atualmente vem sendo o

desenvolvimento do OGSA (Open Grid Service Architecture), um padrão cujo

objetivo é permitir interoperabilidade, portabilidade e reutilização de serviços em

grade através da padronização de interfaces, comportamentos e serviços básicos

23

Page 24: Cluster x Grid

obrigatórios, APIs, etc, assim viabilizando a utilização conjunta de serviços

desenvolvidos em diferentes ambientes, por diferentes desenvolvedores.

Semelhanças e diferenças entre grids e clusters

Assim como os Clusters, os Grids de computadores estão se tornando algo

popular. A idéia por trás tanto dos clusters quanto dos grids é basicamente a

mesma: combinar o poder de processamento de vários computadores ligados em

rede para conseguir executar tarefas que não seria possível (ou pelo menos não

com um desempenho satisfatório) executar utilizando um único computador e ao

mesmo tempo fazê-lo a um custo mais baixo de o de um supercomputador de

potência semelhante.

Os clusters e grids podem ser compostos tanto permanentes, quanto

temporários, formados para executar uma tarefa específica e depois desfeitos.

Presumindo que todos os computadores estejam previamente ligados em rede, a

criação e dissolução é apenas questão de ativar e depois desativar o software

responsável em cada computador.

A principal diferença entre um cluster e um grid é que um cluster possui um

controlador central, um único ponto de onde é possível utilizar todo o poder de

processamento do cluster. Os demais nós são apenas escravos que servem a

este nó central. Os clusters são mais usados em atividades de pesquisa,

resolvendo problemas complicados e na renderização de gráficos 3D.

Os grids por sua vez são uma arquitetura mais "democrática" onde embora

possa existir algum tipo de controle central, temos um ambiente

fundamentalmente cooperativo, onde empresas, universidades ou mesmo grupos

de usuários compartilham os ciclos ociosos de processamento em seus sistemas

em troca de poder utilizar parte do tempo de processamento do grid.

Por exemplo, duas empresas sediadas em países com fuso-horários

diferentes poderiam formar um grid, combinando seus servidores web, de modo

que uma possa utilizar os ciclos de processamento ociosos da outra em seus

horários de pico, já que com horários diferentes os picos de acessos aos

servidores de cada empresa ocorrerão em horários diferentes.

24

Page 25: Cluster x Grid

Características

Há várias plataformas tradicionais de computação distribuída, seja de

propósito mais comercial (CORBA, DCOM, etc), seja de propósito mais técnico

(clusters, supercomputadores

paralelos). Para esclarecer um pouco mais a diferença entre os Grids e

outras plataformas de computação distribuída, podemos citar algumas

características que são intrínsecas aos Grids. De modo geral, os Grids são mais

distribuídos, diversos e complexos que outras plataformas. Aspectos que

evidenciam esta distribuição, diversidade e complexidade são:

• Heterogeneidade: Os componentes que formam a infraestrutura tendem ser

extremamente heterogêneos. Ou seja, é importante ter em mente que

qualquer solução para Grids Computacionais deverá lidar com recursos de

várias gerações, softwares de várias versões, instrumentos e serviços dos

mais variados tipos.

• Alta dispersão geográfica: Essa característica se refere a escala que um

Grid pode atingir. Nesse sentido, Grids podem ter escala global, agregando

serviços localizados em várias partes do planeta.

• Compartilhamento: Em contraste com soluções space-shared, um Grid não

pode ser dedicado a uma aplicação de forma exclusiva por um determinado

período de tempo. Isso tem impacto no desenvolvimento de aplicações que

executam sobre a infraestrutura de um Grid Computacional.

• Múltiplos domínios administrativos: Grids congregam recursos de várias

instituições. Sendo assim, além da heterogeneidade mencionada

anteriormente, é possível também a existência de várias políticas de acesso

e uso dos serviços, de acordo com as diretrizes de cada domínio que faz

parte do Grid.

• Controle distribuído: Tipicamente não há uma única entidade que tenha

poder sobre todo o Grid. Isso é um reflexo da dispersão dos componentes

do Grid, pois cada instituição pode implementar sua política em seus

recursos locais, mas não interfere diretamente na implementação de

25

Page 26: Cluster x Grid

políticas no acesso aos serviços de outras instituições participantes.

A ausência de alguma das características não deve automaticamente

desqualificar uma determinada plataforma como Grid, essas características

servem como conceito de Grid e não como sua definição.

Grids para Alto Desempenho

Grids Computacionais são apresentados como uma plataforma de

execução para aplicações paralelas, sendo assim ela possui algumas

características que são adequadas para alguns tipos de aplicações.

Uma aplicação paralela é composta por várias tarefas. As tarefas que

compõem uma aplicação paralela executam em vãrios processadores,

caracterizando desta forma o paralelismo da execução da aplicação e

conseq¨uente redução no seu tempo de execução. Os processadores usados por

uma determinada aplicação constituem a plataforma de execução da aplicação.

Plataformas de execução de aplicações paralelas variam em diversos

aspectos, dos quais destacamos conectividade, heterogeneidade,

compartilhamento, imagem do sistema e escala:

• Conectividade diz respeito aos canais de comunicação que interligam os

processadores que compõem a plataforma de execução. Atributos que

definem a conectividade de uma plataforma são a topologia, largura de

banda, latência e compartilhamento.

• Heterogeneidade trata das diferenças entre os processadores, que podem

ser de velocidade e/ou arquitetura.

• Compartilhamento versa sobre a possibilidade dos recursos usados por

uma aplicação serem compartilhados por outras aplicações.

• Imagem do sistema se refere à existência de uma visão única da

plataforma, independente do processador sendo utilizado. Por exemplo,

todos os processadores da plataforma enxergam o mesmo sistema de

arquivos?

26

Page 27: Cluster x Grid

• Escala estabelece quantos processadores tem a plataforma.

Como vimos, as Grid possui características de grande heterogeneidade e

de serem muito dispersas. A comunicação entre os nós que compõem a Grid

geralmente é feita através de redes de baixa velocidade, como a internet:

Figura 7 – Esquema de um Grid

Vários problemas devem ser contornados por aplicações que pretendem

ser executados em plataformas Grid. Basicamente as Grids computacionais

possui um elevado nível de processamento paralelo em que uma determinada

tarefa deve ser dividida em várias partes para ser executada. Como as Grids

operam em redes de baixa velocidade, o compartilhamento de dados entre as

diversas tarefas pode ser um fator de grande peso para a execução. Aplicações

com design para essa plataforma devem contar que cada nó pode realizar seu

processamento, porém a entrada e saída de dados devem ser reduzidas. Essa

caracteristica é bem suprida por aplicações científicas, que geralmente requerem

elevado processamento, porém todos dados de trabalho podem ser armazenados

no próprio nó de processamento, como por exemplo aplicações de fatoramento

27

Page 28: Cluster x Grid

que trabalham com seu conjunto de dados e só possuem resposta se encontrar

informações pertinentes.

Outras dificuldades encontradas estão ligadas ao escalonamento de tarefas

para cada nó da Grid. As Grids geral tendem a usar apenas o processamento que

não é usado pelo usuário da máquina, ou seja, apenas em tempos ociosos os

softwares de controle da Grid são executados. A disponibilidade de

processamento em cada nó é variável, e um nó pode sair da Grid sem aviso prévio

o que dificulta a função de escalar quais atividades devem ser realizadas em cada

nó.

A segurança de dados é uma requisição necessárias nessa plataforma e

suas aplicações. Como o processamento da aplicação é dividido em vários nós,

autenticação e confiabilidade nos dados são de extrema importância não só para o

dono do recurso de processamento, como para a aplicação em geral. Caso dados

maliciosos sejam introduzidos na rede de processamento, os nós podem ser

lesados e a aplicação como um todo poderá falhar. Segurança é um grande tópico

que deve ser discutido em computação distribuída, e com maior ênfase em

sistemas que podem ser executados em nós não conhecidos ou não seguros,

como as redes Grids públicas.

Projetos

• PrimeGrid - Baseado na plataforma BOINC é uma Grid voluntária que tenta

fatorar os números do RSA Factoring Challenge.

• Riesel-Sieve - O Riesel-Sieve, bem parecido com o PrimeGrid, quer provar

qual dos 509203 é o menor primo para qualquer número n >= 1, k*2^n-1

usando a Linguagem de Programação PERL. Além de buscar os primos, o

projeto pretende fornecer novos métodos de trabalho para a plataforma

BOINC.

• World Community Grid - é um esforço para criar o maior supercomputador

público do mundo para realizar pesquisas científicas que beneficiem a

humanidade. O projeto é de autoria da IBM e atualmente está disponível

para Windows, Linux, and Mac OS X.

28

Page 29: Cluster x Grid

Referências

1. http://en.wikipedia.org/wiki/Terracotta_Cluster

2. http://en.wikipedia.org/wiki/Solaris_Cluster

3. http://en.wikipedia.org/wiki/Red_Hat_Cluster_Suite

4. http://en.wikipedia.org/wiki/Veritas_Cluster_Server

5. http://pt.wikipedia.org/wiki/Storage_Area_Network

6. http://pt.wikipedia.org/wiki/RAID

7. http://pt.wikipedia.org/wiki/OpenSSI

8. http://pt.wikipedia.org/wiki/OpenMosix

9. http://en.wikipedia.org/wiki/Beowulf_(computing)

10.http://pt.wikipedia.org/wiki/Tipos_de_cluster

11.http://pt.wikipedia.org/wiki/FLOPS

12.http://pt.wikipedia.org/wiki/Cluster

13.http://pt.wikipedia.org/wiki/Categoria:Computação_distribuída

14.http://pt.wikipedia.org/wiki/Computação_distribuída

http://pt.wikipedia.org/wiki/Sistema_Nacional_de_Processamento_de_alto_

Desempenho

15.http://en.wikipedia.org/wiki/GPU_cluster

16.http://www.cenapadne.br/noticia.do?method=select&id=31

17.http://en.wikipedia.org/wiki/Computer_cluster_in_virtual_machines

18.http://pt.wikipedia.org/wiki/Computação_em_grelha

19.http://en.wikipedia.org/wiki/Grid_computing

20.http://www.guiadohardware.net/termos/grid-computing

21.http://www.gridcomputing.com.br/tiki-index.php

22.http://walfredo.dsc.ufcg.edu.br/papers/SBRC.2005.v18.pdf

23.http://pt.wikipedia.org/wiki/PrimeGrid

24.http://pt.wikipedia.org/wiki/Riesel-Sieve

25.http://pt.wikipedia.org/wiki/World_Community_Grid

26.http://en.wikipedia.org/wiki/Sun_Grid

27.http://pt.wikipedia.org/wiki/Sistema_de_processamento_distribuído

29

Page 30: Cluster x Grid

28.http://pt.wikipedia.org/wiki/Sistema_de_alta_disponibilidade

29.http://pt.wikipedia.org/wiki/Balanceamento_de_Carga

30