Como um cluster de várias máquinas para atuar como um para executar várias máquinas virtuais nesta máquina de aparência única? [duplicado]

8

Como é preciso ter vários computadores e fazê-los agir como um só, de modo que todos os seus processadores e memória sejam combinados agora e você esteja executando qualquer aplicativo de tal forma que você os execute em um único computador muito rápido. Tal que ele pode ser usado para executar máquinas virtuais (em software como vmware).

Com qual sistema operacional isso pode ser feito? Ou que software é necessário?

    
por user2387 07.08.2012 / 11:53

3 respostas

12

O tipo de cluster que se apresenta como um único sistema operacional com muita memória, várias CPUs e pode executar o que normalmente seria executado na versão não clusterizada desse sistema operacional é chamado de Imagem única do sistema . Isso leva vários nós de cluster e faz exatamente o que você disse, mescla-os em uma única instância do sistema operacional.

Isso não é comumente feito porque é extremamente difícil criar um sistema desse tipo corretamente, e os sistemas que se agrupam no nível de aplicativo ao invés do nível são muito mais fáceis para configurar e, muitas vezes, executar muito melhor.

A razão para a diferença de desempenho tem a ver com suposições. Um processo em execução em um sistema operacional pressupõe que todos os recursos disponíveis sejam locais. Um processo pronto para cluster (como um farm de renderização) assume que alguns recursos são locais e outros remotos. Por causa das diferenças de suposição de como os recursos são alocados são muito diferentes.

Adotar um sistema operacional de nó único de uso geral, como o Linux, e convertê-lo em um cluster de estilo SSI exige muita reformulação dos componentes internos do kernel. Conceitos como a localização da memória (consulte também: ) são extremamente importantes em tais um sistema, e o custo de mudar um processo para uma CPU diferente pode ser muito maior. Em segundo lugar, um conceito não presente no Linux, localidade da CPU, também é muito importante; Se você tiver um processo multi-threaded, ter dois processos em execução em um nó e dois em outro pode executar muito mais lento do que todos os quatro em execução no mesmo nó. Cabe ao sistema operacional fazer escolhas locais versus remotas para processos que são cegos a essas distinções.

No entanto, se você tiver um aplicativo pronto para cluster (como aqueles listados pelo Chopper), o próprio aplicativo tomará decisões locais / remotas. O aplicativo está totalmente ciente das implicações locais e remotas das operações e agirá de acordo.

    
por 07.08.2012 / 13:26
3

Nota: não sou especialista neste tópico.

A maneira como eu entendo você, seu interesse em clusters de computadores de alto desempenho (em oposição a outras abordagens de cluster, como High-Availability ou Balanceamento de carga . O que você provavelmente quer é Super -, Grid - ou Computing distribuído.

How does one take multiple computers and make them act as one, such that all their processors and memory are combined now and you are running any application such that yo are running them on a single very fast computer.

Sem hardware especializado (veja, por exemplo, interconexão do Torus ou InfiniBand ) você está limitado a conectar os computadores usando Ethernet (o que significa que você pode fazer computação distribuída ou em grade). Mas você não deve esquecer ou subestimar a diferença de velocidade de um barramento de computador local de alta velocidade em oposição à Ethernet!

Agora, a questão de se a computação em grade ou distribuída é algo que você deve se esforçar para alcançar é altamente dependente das tarefas que você deseja realizar. Com um gargalo como o Ethernet, a computação em grade ou distribuída só faz sentido para takts / aplicativos que não precisam ser muito responsivos e precisam executar tarefas muito intensivas em computação. Que (amplamente desqualifica qualquer aplicativo que não seja de natureza científica. Além disso, o aplicativo provavelmente deve ser programado de uma maneira que possa aproveitar totalmente a natureza distribuída do host.

Se você ainda estiver interessado, aqui está uma lista de sistemas operacionais compatíveis: Imagem única do sistema

    
por 07.08.2012 / 14:43
2

Não existe uma maneira super comum de 'clustering', é um termo usado para fazer com que vários servidores executem uma função, mas há milhares de funções diferentes que você pode querer executar.

Por exemplo, há clusters de banco de dados (digamos, clusters Oracle RAC ou MSSQL) que apenas para carga de banco de dados podem ser configurados para agir como um - geralmente para desempenho e / ou resiliência.

O mesmo vale para outros tipos de clusters, digamos, farms de renderização CGI, eles trabalham juntos para renderizar quadros para o próximo blockbuster da Pixar ou algo assim. O mesmo vale para clusters usados para computação científica (estudo de genes, física de partículas e até decaimento nuclear).

Então, quando falamos sobre um 'cluster', o que realmente queremos dizer é 'um cluster fazendo xxxxx'.

Então, se você tem uma função que gostaria de espalhar por vários servidores, avise-nos e tentaremos sugerir algumas opções para esse caso de uso.

    
por 07.08.2012 / 12:18

Tags