Clustering / balanceamento de carga para aplicativos sem cluster

3

Perdoe-me se eu usar qualquer um desses termos incorretamente.

Eu estou querendo saber se existe algum tipo de software que permita que meus dois "junte" dois computadores juntos, de modo que um aplicativo que não conheça clusters possa utilizar seus recursos de computação combinados? Por "cluster inconsciente" quero dizer um aplicativo que não é projetado para compartilhar o trabalho em vários serviços. Meu entendimento é que o armazenamento em cluster é habilitado pelo aplicativo específico por sua arquitetura, de forma que as mensagens com várias instâncias do aplicativo coordenam o compartilhamento de trabalho. Em vez disso, estou procurando algo que permita o armazenamento em cluster no nível do sistema operacional ou de virtualização, para que qualquer aplicativo possa ser essencialmente armazenado em cluster.

Caso contrário, também estou me perguntando sobre o seguinte cenário: Temos 3 aplicativos diferentes que chamaremos de A, B e C. Temos dois computadores de núcleo único. A qualquer momento, digamos que qualquer combinação desses aplicativos será intensiva da CPU. Nos casos em que apenas 2 desses aplicativos são muito ativos, um deles foi transferido para um servidor diferente. Em poucas palavras, algum tipo de embaralhamento automático dinâmico da carga da aplicação.

Já ouvi falar de máquinas virtuais que podem ser migradas em máquinas físicas enquanto estão ativas, mas estou querendo saber se isso pode ser feito automaticamente em resposta à atividade da CPU de um aplicativo ou VM?

    
por AaronLS 06.08.2009 / 13:41

3 respostas

3

Você pode virtualizar toda a imagem do sistema operacional e executar seus aplicativos nesses diferentes sistemas operacionais virtualizados e mover esses sistemas operacionais para complementar suas cargas. Este é o modelo ESX / Virtualization. Provavelmente, ele pode ser rastreado até os sistemas operacionais mainframe IBM, onde eles virtualizaram a máquina, em vez de criar um sistema operacional que pudesse executar vários programas ao mesmo tempo.

As migrações de hardware para hardware não são super rápidas e você vai gastar muita sobrecarga em coisas como a memória do sistema operacional em cada instância virtual.

Outra opção é usar algo que apresente uma única imagem do sistema operacional para os programas clientes, mas que, na verdade, seja executado em vários computadores ao mesmo tempo. Um exemplo desse modelo é mosix . O Mosix estende o Linux de tal forma que um programa em execução pode, em algumas situações, ser movido de um hardware para outro. O programa em si não percebe isso (assim como normalmente não se importa se ele se move de um processador para outro em um computador normal com 2 CPUs). Haverá alguma sobrecarga com isso, mas pode valer a pena investigar.

    
por 06.08.2009 / 14:14
1

Se você instalar cada aplicativo em uma VM diferente, então sim, ele poderá ser migrado ao vivo usando qualquer tecnologia de VM de nível corporativo fornecida

O

armazenamento em cluster para software não clusterizável é possível se você estiver procurando por clusters de failover. Use uma VM e, se o host morrer, migre a VM para outro host ou use softwares como o XOsoft WANsync, NeverFail, DoubleTake, etc.

o compartilhamento de recursos é um pouco mais complicado, e o software geralmente precisa estar ciente do cluster, mais ainda - ele deve ser capaz de trabalhar em clusters de balanceamento de carga, não apenas em failover.

    
por 06.08.2009 / 14:01
1

Como o MOSIX parece estar associado ao MPI, parece apropriado mencionar que havia uma tecnologia concorrente chamada PVM (Parallel Virtual Machine). Pode ser útil explorar se existe algum sistema operacional de cluster semelhante ao MOSIX projetado com base no PVM também. Eu usei o PVM para executar tarefas C ++ em paralelo usando vários servidores Linux como um único HW em cluster. Por exemplo, a execução de Consultas SQL em linhas de RDBMS importantes pode ser particionada.

Além de fornecer uma interface de transmissão de mensagens, o PVM torna a comunicação de rede transparente e suporta a computação paralela flexível em sistemas de cluster heterogêneos.

Caso você esteja usando o Myrinet Switch HW, uma versão otimizada do PVM pode ser usada; veja link .

Eu vi alguns slides sugerindo que o Mosix pode ser usado com tecnologia MPI ou PVM, mas não tenho certeza.

    
por 27.09.2012 / 09:09

Tags