Cluster
Tags: node, kubernetes, docker, distributedsystems
Published: 2023-05-24 19:23:02

A palavra "**cluster**", em inglês, significa “aglomerar” ou “agrupar”, dentro da Tecnologia da Informação (TI), cluster também significa integrar dois ou mais computadores para que eles trabalhem simultaneamente no processamento de uma determinada tarefa.

> No entanto, os clusters não necessariamente precisam ter dois ou mais servidores, podemos ter um cluster com apenas um servidor. Então, para ter um cluster com Docker ou Kubernetes, você não precisa ter dois servidores. Entretanto, é importante ter, dentro do cluster, mais de um servidor porque caso ocorra uma falha no primeiro servidor o outro pode assumir o papel, caso seja pré-configurado dessa maneira.

Um **cluster de computador** é um conjunto de computadores fracamente ou fortemente conectados que funcionam juntos para que, em muitos aspectos, possam ser vistos como um único sistema. Os clusters de computador têm cada nó definido para executar a mesma tarefa, controlado e programado por software.

Os componentes de um cluster geralmente são conectados uns aos outros por meio de redes locais rápidas, com cada nó (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, diferentes sistemas operacionais 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 sejam, normalmente, muito mais econômicos do que computadores únicos de velocidade ou disponibilidade comparáveis.

Os clusters de computador surgiram como resultado da convergência de uma série de 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.

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**.

> “A **computação em grade** é um grupo de computadores em rede que trabalham em conjunto, como um super computador virtual, para executar tarefas grandes, como analisar grandes conjuntos de dados e modelagem do clima.” - Fonte: Microsoft Azure.

Em um cluster, 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 para os escravos** e a **outra para a rede de uso geral da organização (pública)**.

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, mas é adicionada uma camada virtual acima deles a fim de parecerem semelhantes.

> Dentro do conceito sobre o que é cluster, o **cluster de servidores** é a junção de várias máquinas (computadores/servidores) que, quando interligadas, elevam o seu potencial de disponibilidade e de capacidade de atuação.

No cluster, cada computador é denominado “nodo” ou “nó”, sendo que não há limites de quantos nodos podem ser interligados.

> **Lembrando**: Um **nodo** ou **nó** (node) representa cada ponto de interconexão com uma estrutura ou rede, independente da função do equipamento representado por ele, seja um ponto de redistribuição ou um terminal de comunicação. A definição de um nó depende da rede e da camada de protocolo referida.

Com isso, os computadores passam a atuar dentro de um único sistema, trabalhando em conjunto no processamento, análise e interpretação de dados, na mesma conexão de rede, informações e/ou realização de tarefas simultâneas.

A função de um cluster é combinar o funcionamento de vários computadores dentro de um mesmo sistema, a fim de potencializar o seu desempenho.

Muitas vezes, a computação em cluster permite o uso de hardwares simples, evitando a necessidade de utilização de servidores complexos ou dos chamados “supercomputadores” para realizar a mesma tarefa, reduzindo, assim, os investimentos.

O **cluster** consiste em computadores fracamente ou fortemente ligados que trabalham em conjunto, de modo que, em muitos aspectos, podem ser considerados como um único sistema. Diferentemente dos computadores em **grade** (grid), computadores em cluster têm cada conjunto de **nós** (nodes), para executar a mesma tarefa, controlado e programado por software.

## Tipos de clusters
Existem vários tipos de cluster. Os mais conhecidos são:

- High Performance Computing Cluster (**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 baixo de gigaflops em computadores comuns e utilizando sistema operacional gratuito, o que diminui seu custo. Ou seja, esse tipo de cluster é utilizado para desempenhar tarefas de alto desempenho, de modo que garantam a máxima performance da atuação. Também conhecido como cluster de alta performance, funciona permitindo que ocorra uma grande carga de processamento com um volume em computadores comuns e utilizando sistema operacional gratuito, o que diminui seu custo.<br />

- Failover ou High Availability Computing Cluster (**cluster de alta disponibilidade**): são clusters cujos 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. Ou seja, garante que uma rede permaneça sempre ativa. Para isso, caso um computador apresente falha e fique fora do ar, outro continua mantendo a rede operante. É aquele que consegue permanecer ativo por um longo período e em plena condição de uso. Além disso, consegue detectar erros se protegendo de possíveis falhas.<br />

- Load Balancing (**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. Ou seja, o tipo de cluster load balancing é uma estrutura na qual todos os computadores são responsáveis pela execução de uma determinada tarefa. Assim, caso um dos equipamentos apresente algum problema, ele é automaticamente retirado do sistema e a função inicial atribuída a ele é dividida entre os demais nós. 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, seu funcionamento será interrompido.<br />

- **Processamento paralelo**: Esse tipo de cluster transforma uma tarefa complexa em várias simples e as distribui entre os nós integrados ao sistema.<br />

Não existe um tipo de cluster mais adequado, por isso, é possível utilizar diferentes tipos paralelamente. A escolha de qual, ou quais, usar depende do objetivo que se pretende alcançar.

## O que significa clusterizar?
**Clusterizar** significa promover o agrupamento de algo. Dentro da Tecnologia da Informação (TI), consiste em integrar um dois ou mais computadores com o objetivo de potencializar a sua eficiência.

No meio corporativo, clusterizar quer dizer unir duas ou mais empresas com o propósito de melhorar suas atuações, aumentar o poder competitivo, permitir acesso a inovações, entre outras funções.

## O que é cluster físico e o que é cluster virtual?
Para deixar o conceito do que é cluster mais completo, é importante que você entenda também a diferença entre **cluster físico** e **cluster virtual**.

O **cluster físico** consiste em uma integração presencial entre dois ou mais computadores.

Já o **cluster virtual** segue o mesmo princípio, ou seja, de integrar computadores em um mesmo sistema, porém por meio de uma rede online.

Esse processo acaba sendo mais dinâmico e garante que mesmo máquinas que estejam distantes fisicamente possam ser conectadas para aumentar o seu desempenho.