cluster x grid
Post on 14-Dec-2014
247 Views
Preview:
DESCRIPTION
TRANSCRIPT
CLUSTER
X
GRID
Alunos:André Campos
Bruno HenriqueThiago de Paula
Goiânia, 29/06/2009
ConteúdoCLUSTER...............................................................................................................................1X..............................................................................................................................................1GRID.......................................................................................................................................1Conteúdo.................................................................................................................................2Cluster x Grid .........................................................................................................................3Computação distribuída..........................................................................................................3Cluster.....................................................................................................................................6Grid.......................................................................................................................................22Referências............................................................................................................................29
2
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
• 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
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
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
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
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
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
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
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
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
Figura 4 – Esquema do cluster Beowulf
Figura 5 – Um cluster Beowulf montado
13
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
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
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
• 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
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
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
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
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
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
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
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
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
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
• 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
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
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
28.http://pt.wikipedia.org/wiki/Sistema_de_alta_disponibilidade
29.http://pt.wikipedia.org/wiki/Balanceamento_de_Carga
30
top related