Cluster de computador - Computer cluster

Técnicos trabalhando em um grande cluster Linux na Universidade de Tecnologia de Chemnitz , Alemanha
Sun Microsystems Solaris Cluster , com resfriamento In-Row
A série Taiwania usa arquitetura de cluster, com grande capacidade, ajudou cientistas de Taiwan e muitos outros durante o COVID-19

Um cluster de computador é um conjunto de computadores que funcionam juntos para que possam ser vistos como um único sistema. Ao contrário dos computadores em grade , os clusters de computador têm cada definido para executar a mesma tarefa, controlado e programado por software.

Os componentes de um cluster geralmente são conectados entre si por meio de redes locais rápidas , com cada (computador usado como servidor) executando sua própria instância de sistema operacional . Na maioria das circunstâncias, todos os nós usam o mesmo hardware e o mesmo sistema operacional, embora em algumas configurações (por exemplo, usando Open Source Cluster Application Resources (OSCAR)), sistemas operacionais diferentes podem ser usados ​​em cada computador, ou hardware diferente.

Os clusters são geralmente implantados para melhorar o desempenho e a disponibilidade em relação a um único computador, embora normalmente sejam muito mais econômicos do que computadores únicos de velocidade ou disponibilidade comparáveis.

Os clusters de computadores surgiram como resultado da convergência de várias tendências de computação, incluindo a disponibilidade de microprocessadores de baixo custo, redes de alta velocidade e software para computação distribuída de alto desempenho . Eles têm uma ampla gama de aplicabilidade e implantação, variando de clusters de pequenas empresas com um punhado de nós a alguns dos supercomputadores mais rápidos do mundo, como o Sequoia da IBM . Antes do advento dos clusters, mainframes tolerantes a falhas de unidade única com redundância modular eram empregados; mas o custo inicial mais baixo dos clusters e o aumento da velocidade da malha de rede favoreceram a adoção de clusters. Em contraste com os mainframes de alta confiabilidade, os clusters são mais baratos de escalar horizontalmente, mas também têm maior complexidade no tratamento de erros, já que nos clusters os modos de erro não são opacos para programas em execução.

Conceitos Básicos

Um cluster Beowulf simples, feito em casa .

O desejo de obter mais poder de computação e melhor confiabilidade orquestrando uma série de computadores de prateleira comerciais de baixo custo deu origem a uma variedade de arquiteturas e configurações.

A abordagem de agrupamento de computadores geralmente (mas nem sempre) conecta vários nós de computação prontamente disponíveis (por exemplo, computadores pessoais usados ​​como servidores) por meio de uma rede local rápida . As atividades dos nós de computação são orquestradas por "middleware de clustering", uma camada de software que fica sobre os nós e permite que os usuários tratem o cluster como uma unidade de computação coesa, por exemplo, por meio de um conceito de imagem de sistema único .

O clustering de computadores depende de uma abordagem de gerenciamento centralizado que torna os nós disponíveis como servidores compartilhados orquestrados. É diferente de outras abordagens, como peer to peer ou computação em grade, que também usa muitos nós, mas com uma natureza muito mais distribuída .

Um cluster de computador pode ser um sistema simples de dois nós que conecta apenas dois computadores pessoais ou pode ser um supercomputador muito rápido . Uma abordagem básica para construir um cluster é a de um cluster Beowulf, que pode ser construído com alguns computadores pessoais para produzir uma alternativa econômica à computação tradicional de alto desempenho . Um dos primeiros projetos que mostrou a viabilidade do conceito foi o Stone Soupercomputer de 133 nós . Os desenvolvedores usaram Linux , o kit de ferramentas Parallel Virtual Machine e a biblioteca Message Passing Interface para obter alto desempenho a um custo relativamente baixo.

Embora um cluster possa consistir em apenas alguns computadores pessoais conectados por uma rede simples, a arquitetura do cluster também pode ser usada para atingir níveis muito altos de desempenho. A lista semestral da organização TOP500 dos 500 supercomputadores mais rápidos geralmente inclui muitos clusters, por exemplo, a máquina mais rápida do mundo em 2011 foi o computador K, que tem uma memória distribuída , arquitetura de cluster.

História

A VAX 11/780, c. 1977

Greg Pfister afirmou que os clusters não foram inventados por nenhum fornecedor específico, mas por clientes que não conseguiam colocar todo o seu trabalho em um computador ou precisavam de um backup. Pfister estima a data como em algum momento da década de 1960. A base de engenharia formal da computação em cluster como meio de fazer trabalho paralelo de qualquer tipo foi indiscutivelmente inventada por Gene Amdahl da IBM , que em 1967 publicou o que veio a ser considerado o artigo seminal sobre processamento paralelo: a Lei de Amdahl .

A história dos primeiros clusters de computadores está mais ou menos diretamente ligada à história das primeiras redes, já que uma das principais motivações para o desenvolvimento de uma rede era vincular recursos de computação, criando um cluster de computador de fato.

O primeiro sistema de produção projetado como um cluster foi o Burroughs B5700 em meados da década de 1960. Isso permitiu que até quatro computadores, cada um com um ou dois processadores, fossem fortemente acoplados a um subsistema de armazenamento em disco comum para distribuir a carga de trabalho. Ao contrário dos sistemas multiprocessadores padrão, cada computador pode ser reiniciado sem interromper a operação geral.

O primeiro produto comercial de clustering fracamente acoplado foi o sistema "Attached Resource Computer" (ARC) da Datapoint Corporation , desenvolvido em 1977 e usando ARCnet como interface de cluster. O clustering por si só não decolou até que a Digital Equipment Corporation lançou seu produto VAXcluster em 1984 para o sistema operacional VAX / VMS (agora denominado OpenVMS). Os produtos ARC e VAXcluster não só suportavam computação paralela, mas também sistemas de arquivos compartilhados e dispositivos periféricos . A ideia era fornecer as vantagens do processamento paralelo, mantendo a confiabilidade e a exclusividade dos dados. Dois outros clusters comerciais iniciais notáveis ​​foram o Tandem Himalayan (um produto de alta disponibilidade por volta de 1994) e o IBM S / 390 Parallel Sysplex (também por volta de 1994, principalmente para uso comercial).

No mesmo período, enquanto os clusters de computadores usavam o paralelismo fora do computador em uma rede de commodities, os supercomputadores começaram a usá-los dentro do mesmo computador. Seguindo o sucesso do CDC 6600 em 1964, o Cray 1 foi entregue em 1976 e introduziu o paralelismo interno via processamento vetorial . Enquanto os primeiros supercomputadores excluíam clusters e dependiam de memória compartilhada , com o tempo alguns dos supercomputadores mais rápidos (por exemplo, o computador K ) dependiam de arquiteturas de cluster.

Atributos de clusters

Um cluster de balanceamento de carga com dois servidores e N estações de usuário.

Os clusters de computador podem ser configurados para diferentes finalidades, desde necessidades de negócios de propósito geral, como suporte de serviço da web, até cálculos científicos de computação intensiva. Em ambos os casos, o cluster pode usar uma abordagem de alta disponibilidade . Observe que os atributos descritos abaixo não são exclusivos e um "cluster de computador" também pode usar uma abordagem de alta disponibilidade, etc.

Os clusters de " balanceamento de carga " são configurações nas quais os nós do cluster compartilham a carga de trabalho computacional para fornecer melhor desempenho geral. Por exemplo, um cluster de servidor da web pode atribuir consultas diferentes a nós diferentes, de modo que o tempo de resposta geral seja otimizado. No entanto, as abordagens para balanceamento de carga podem diferir significativamente entre os aplicativos, por exemplo, um cluster de alto desempenho usado para cálculos científicos equilibraria a carga com diferentes algoritmos de um cluster de servidor da web que pode usar apenas um método round-robin simples atribuindo cada nova solicitação para um nó diferente.

Os clusters de computador são usados ​​para fins de computação intensiva, em vez de lidar com operações orientadas a IO , como serviços da Web ou bancos de dados. Por exemplo, um cluster de computador pode suportar simulações computacionais de colisões de veículos ou clima. Clusters de computadores fortemente acoplados são projetados para trabalhos que podem se aproximar da " supercomputação ".

Os " clusters de alta disponibilidade " (também conhecidos como clusters de failover ou clusters HA) melhoram a disponibilidade da abordagem de cluster. Eles operam com nós redundantes , que são usados ​​para fornecer serviço quando os componentes do sistema falham. As implementações de cluster HA tentam usar redundância de componentes de cluster para eliminar pontos únicos de falha . Existem implementações comerciais de clusters de alta disponibilidade para muitos sistemas operacionais. O projeto Linux-HA é um pacote HA de software livre comumente usado para o sistema operacional Linux .

Benefícios

Os clusters são projetados principalmente com o desempenho em mente, mas as instalações são baseadas em muitos outros fatores. A tolerância a falhas ( a capacidade de um sistema continuar trabalhando com um nó com defeito ) permite escalabilidade e, em situações de alto desempenho, baixa frequência de rotinas de manutenção, consolidação de recursos (por exemplo, RAID ) e gerenciamento centralizado. As vantagens incluem habilitar a recuperação de dados em caso de desastre e fornecer processamento paralelo de dados e alta capacidade de processamento.

Em termos de escalabilidade, os clusters fornecem isso em sua capacidade de adicionar nós horizontalmente. Isso significa que mais computadores podem ser adicionados ao cluster, para melhorar seu desempenho, redundância e tolerância a falhas. Esta pode ser uma solução econômica para um cluster de alto desempenho em comparação com o aumento de escala de um único nó no cluster. Esta propriedade de clusters de computador pode permitir que cargas computacionais maiores sejam executadas por um número maior de computadores de desempenho inferior.

Ao adicionar um novo nó a um cluster, a confiabilidade aumenta porque o cluster inteiro não precisa ser desativado. Um único nó pode ser retirado para manutenção, enquanto o resto do cluster assume a carga desse nó individual.

Se você tem um grande número de computadores agrupados, isso se presta ao uso de sistemas de arquivos distribuídos e RAID , os quais podem aumentar a confiabilidade e a velocidade de um cluster.

Design e configuração

Uma configuração típica de Beowulf.

Um dos problemas ao projetar um cluster é o quão fortemente acoplados os nós individuais podem ser. Por exemplo, um único trabalho de computador pode exigir comunicação frequente entre os nós: isso implica que o cluster compartilha uma rede dedicada, está densamente localizado e provavelmente tem nós homogêneos. O outro extremo é quando um trabalho de computador usa um ou poucos nós e precisa de pouca ou nenhuma comunicação entre nós, aproximando-se da computação em grade .

Em um cluster Beowulf , os programas aplicativos nunca veem os nós computacionais (também chamados de computadores escravos), mas apenas interagem com o "Mestre", que é um computador específico que cuida do agendamento e gerenciamento dos escravos. Em uma implementação típica, o mestre tem duas interfaces de rede, uma que se comunica com a rede privada Beowulf para os escravos e a outra para a rede de uso geral da organização. Os computadores escravos normalmente têm sua própria versão do mesmo sistema operacional, memória local e espaço em disco. No entanto, a rede escrava privada também pode ter um servidor de arquivos grande e compartilhado que armazena dados persistentes globais, acessados ​​pelos escravos conforme necessário.

Um cluster DEGIMA de 144 nós de propósito especial é ajustado para executar simulações astrofísicas de corpos N usando o treecode paralelo Multiple-Walk, em vez de cálculos científicos de propósito geral.

Devido ao crescente poder de computação de cada geração de consoles de jogos , um novo uso surgiu, onde eles são reaproveitados em clusters de computação de alto desempenho (HPC). Alguns exemplos de clusters de console de jogos são clusters do Sony PlayStation e clusters do Microsoft Xbox . Outro exemplo de produto de jogo para o consumidor é a estação de trabalho Nvidia Tesla Personal Supercomputer , que usa vários chips de processador de acelerador gráfico. Além de consoles de jogos, placas gráficas de última geração também podem ser usadas. O uso de placas gráficas (ou melhor, suas GPUs) para fazer cálculos para computação em grade é muito mais econômico do que usar CPU, apesar de ser menos preciso. No entanto, ao usar valores de precisão dupla, eles se tornam tão precisos para trabalhar quanto as CPUs e ainda são muito mais baratos (custo de aquisição).

Os clusters de computador são historicamente executados em computadores físicos separados com o mesmo sistema operacional . Com o advento da virtualização , os nós do cluster podem ser executados em computadores físicos separados com diferentes sistemas operacionais que são pintados acima com uma camada virtual para parecer semelhante. O cluster também pode ser virtualizado em várias configurações à medida que a manutenção ocorre; um exemplo de implementação é o Xen como gerenciador de virtualização com Linux-HA .

Compartilhamento e comunicação de dados

Compartilhamento de dados

À medida que os clusters de computadores surgiam na década de 1980, o mesmo acontecia com os supercomputadores . Um dos elementos que distinguiam as três classes naquela época era que os primeiros supercomputadores dependiam de memória compartilhada . Até hoje, os clusters normalmente não usam memória fisicamente compartilhada, embora muitas arquiteturas de supercomputadores também a tenham abandonado.

No entanto, o uso de um sistema de arquivos em cluster é essencial em clusters de computadores modernos. Os exemplos incluem o IBM General Parallel File System , o Cluster Shared Volumes da Microsoft ou o Oracle Cluster File System .

Passagem de mensagens e comunicação

Duas abordagens amplamente utilizadas para comunicação entre os nós do cluster são MPI ( Message Passing Interface ) e PVM ( Parallel Virtual Machine ).

O PVM foi desenvolvido no Oak Ridge National Laboratory por volta de 1989, antes que o MPI estivesse disponível. O PVM deve ser instalado diretamente em cada nó do cluster e fornece um conjunto de bibliotecas de software que pintam o nó como uma "máquina virtual paralela". O PVM fornece um ambiente de tempo de execução para passagem de mensagens, gerenciamento de tarefas e recursos e notificação de falhas. PVM pode ser usado por programas de usuário escritos em C, C ++ ou Fortran, etc.

O MPI surgiu no início da década de 1990 a partir de discussões entre 40 organizações. O esforço inicial foi apoiado pelo ARPA e pela National Science Foundation . Em vez de começar de novo, o design do MPI baseou-se em vários recursos disponíveis nos sistemas comerciais da época. As especificações MPI deram então origem a implementações específicas. As implementações MPI geralmente usam TCP / IP e conexões de soquete. MPI é agora um modelo de comunicação amplamente disponível que permite que programas paralelos sejam escritos em linguagens como C , Fortran , Python , etc. Assim, ao contrário de PVM que fornece uma implementação concreta, MPI é uma especificação que foi implementada em sistemas como MPICH e Open MPI .

Gerenciamento de cluster

Minúsculo cluster de baixo custo e baixa energia de Cubieboards , usando Apache Hadoop no Lubuntu
Uma amostra de pré-lançamento do sistema de computador cluster C25 de Circunferência Aberta da Ground Electronics / AB , equipado com 8 placas Raspberry Pi 3 Modelo B + e 1 placa UDOO x86.

Um dos desafios no uso de um cluster de computador é o custo de administrá-lo, que às vezes pode ser tão alto quanto o custo de administrar N máquinas independentes, se o cluster tiver N nós. Em alguns casos, isso oferece uma vantagem para arquiteturas de memória compartilhada com custos de administração mais baixos. Isso também popularizou as máquinas virtuais , devido à facilidade de administração.

Agendamento de tarefas

Quando um grande cluster multiusuário precisa acessar grandes quantidades de dados, o agendamento de tarefas se torna um desafio. Em um cluster heterogêneo de CPU-GPU com um ambiente de aplicativo complexo, o desempenho de cada trabalho depende das características do cluster subjacente. Portanto, mapear tarefas em núcleos de CPU e dispositivos de GPU oferece desafios significativos. Esta é uma área de pesquisa contínua; algoritmos que combinam e estendem MapReduce e Hadoop foram propostos e estudados.

Gerenciamento de falha de nó

Quando um nó em um cluster falha, estratégias como " fencing " podem ser empregadas para manter o resto do sistema operacional. Fencing é o processo de isolar um nó ou proteger recursos compartilhados quando um nó parece estar com defeito. Existem duas classes de métodos de esgrima; um desativa o próprio nó e o outro impede o acesso a recursos, como discos compartilhados.

O método STONITH significa "Atire no outro nó na cabeça", o que significa que o nó suspeito está desabilitado ou desligado. Por exemplo, a cerca de energia usa um controlador de energia para desligar um nó inoperante.

A abordagem de fence de recursos proíbe o acesso aos recursos sem desligar o nó. Isso pode incluir isolamento de reserva persistente por meio do SCSI3 , isolamento de canal de fibra para desabilitar a porta de canal de fibra ou isolamento de dispositivo de bloco de rede global (GNBD) para desativar o acesso ao servidor GNBD.

Desenvolvimento e administração de software

Programação paralela

Clusters de balanceamento de carga, como servidores web, usam arquiteturas de cluster para suportar um grande número de usuários e, normalmente, cada solicitação do usuário é encaminhada para um nó específico, alcançando o paralelismo de tarefas sem cooperação de vários nós, visto que o objetivo principal do sistema é fornecer rapidez ao usuário acesso aos dados compartilhados. No entanto, "clusters de computador" que executam cálculos complexos para um pequeno número de usuários precisam aproveitar as vantagens dos recursos de processamento paralelo do cluster e particionar "o mesmo cálculo" entre vários nós.

A paralelização automática de programas continua sendo um desafio técnico, mas os modelos de programação paralela podem ser usados ​​para efetuar um grau mais alto de paralelismo por meio da execução simultânea de partes separadas de um programa em diferentes processadores.

Depuração e monitoramento

O desenvolvimento e a depuração de programas paralelos em um cluster requerem primitivas de linguagem paralela e ferramentas adequadas, como as discutidas pelo High Performance Debugging Forum (HPDF), que resultou nas especificações HPD. Ferramentas como o TotalView foram então desenvolvidas para depurar implementações paralelas em clusters de computador que usam Message Passing Interface (MPI) ou Parallel Virtual Machine (PVM) para a passagem de mensagens.

O sistema da Universidade da Califórnia, Rede de Estações de Trabalho de Berkeley (NOW) reúne dados de cluster e os armazena em um banco de dados, enquanto um sistema como o PARMON, desenvolvido na Índia, permite observar visualmente e gerenciar grandes clusters.

O ponto de verificação do aplicativo pode ser usado para restaurar um determinado estado do sistema quando um nó falha durante uma longa computação de vários nós. Isso é essencial em clusters grandes, visto que, conforme o número de nós aumenta, aumenta a probabilidade de falha do nó sob cargas computacionais pesadas. O ponto de verificação pode restaurar o sistema a um estado estável para que o processamento possa ser retomado sem a necessidade de recalcular os resultados.

Implementações

O mundo Linux oferece suporte a vários softwares de cluster; para clustering de aplicativos, há distcc e MPICH . Linux Virtual Server , Linux-HA - clusters baseados em director que permitem que os pedidos de entrada de serviços sejam distribuídos entre vários nós do cluster. MOSIX , LinuxPMI , Kerrighed , OpenSSI são clusters completos integrados ao kernel que fornecem migração automática de processos entre nós homogêneos. OpenSSI , openMosix e Kerrighed são implementações de imagem de sistema único .

O cluster de computador Microsoft Windows Server 2003 baseado na plataforma Windows Server fornece peças para computação de alto desempenho como o Job Scheduler, biblioteca MSMPI e ferramentas de gerenciamento.

gLite é um conjunto de tecnologias de middleware criado pelo projeto Enabling Grids for E-sciencE (EGEE).

slurm também é usado para agendar e gerenciar alguns dos maiores clusters de supercomputadores (consulte a lista top500).

Outras abordagens

Embora a maioria dos clusters de computador sejam acessórios permanentes, tentativas de computação flash mob foram feitas para construir clusters de curta duração para cálculos específicos. No entanto, os sistemas de computação voluntária em larga escala , como os sistemas baseados no BOINC , tiveram mais seguidores.

Veja também

Conceitos Básicos

Computação distribuída

Sistemas específicos

Fazendas de computadores

Referências

Leitura adicional

links externos