Executa remotamente comandos, mas ainda tem controle do host

5

Eu tenho algumas máquinas Linux por aí e queria criar uma rede de computadores em cluster. Haverá 1 monitor que seria para o controlador. O controlador executaria um script que executaria uma tarefa e dividiria a carga nos computadores.

Digamos que eu tenha 4 computadores conectados ao controlador. Eu queria compilar um programa usando o GCC, mas queria dividir o trabalho de três maneiras. Como eu faria isso?

Qualquer ajuda seria apreciada.

    
por C. McEvoy 06.07.2016 / 01:53

2 respostas

0

Você pode tentar fazer um Beowulf Cluster . Você configura um host como mestre e o restante como nós. Isso tem sido feito no passado por outros, incluindo a NASA como a entrada da wikipedia no Beowulf Cluster diz.

Criar seu próprio farm de computadores em cluster pode custar mais em energia do que você ganha em recursos de computação.

Eu não tentei isso sozinho, mas eu sempre quis dar uma chance.

    
por 06.07.2016 / 02:06
2

distcc pode ser usado para compilar códigos em várias máquinas.

A partir das informações do pacote debian distcc :

Package: distcc

Description-en: simple distributed compiler client and server

distcc is a program to distribute compilation of C or C++ code across several machines on a network. distcc should always generate the same results as a local compile, is simple to install and use, and is often significantly faster than a local compile. distcc does not require all machines to share a filesystem, have synchronized clocks, or to have the same libraries or header files installed.

Homepage: http://distcc.org/

Para outras tarefas, é muito mais complicado do que um script "executar uma tarefa e dividir a carga nos computadores". Você precisará usar um agendador (por exemplo, slurm ou torque - ambos empacotados para a Debian e a maioria das outras distribuições. Minha preferência é para slurm ).

Em outras palavras, transforme sua coleção de máquinas linux em um cluster. Isso não é particularmente difícil de ser feito, mas é uma boa quantidade de trabalho e requer muita leitura e compreensão (e muito do que você lê será relevante para grandes clusters de HPC em universidades ou laboratórios de pesquisa, mas não é realmente relevante para um pequeno cluster doméstico).

Observe que, se você quiser executar programas que distribuam a carga de trabalho por várias máquinas no cluster simultaneamente, eles precisarão:

  1. esteja realizando um trabalho adequado para ser executado em paralelo (por exemplo, o trabalho pode ser dividido em pequenos blocos que podem ser processados separadamente, com os resultados combinados posteriormente)

  2. têm acesso compartilhado aos recursos necessários (por exemplo, um servidor NFS para ler e gravar arquivos)

E também:

  1. precisam ser escritos especificamente para se comunicar com outras instâncias em execução em outros nós do cluster (por exemplo, usando um MPI biblioteca como Open MPI )

OR

  1. tem um processo mestre de controle que faz a comunicação e o controle, que é o que o distcc faz.
por 06.07.2016 / 06:05