Script para Cluster Beowulf
Bem vindo! Nessa documentação irei te ensinar como você pode realizar atividades em um cluster beowulf de maneira mais "automatizada" através de um script em bash.
Configure o arquivo hosts da sua máquina
Na sua máquina, você deve declarar quem é o node1 e quem é o node2 e atribuir um IP para eles. Para fazer isso você deve alterar o arquivo hosts
, para isso, execute o seguinte comando:
nano /etc/hosts
Agora você pode modificar o arquivo, use meu arquivo hosts como referência.
127.0.0.1 localhost
127.0.1.1 node1
10.0.0.12 node2
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# LEMBRE-SE! Mude os IPs e os hostnames de acordo com sua necessidade, um IP e hostname que sirvam para mim podem não servir para você e vice-versa.
Vamos criar uma chave SSH para podemos conectar nosso cluster.
Antes de tudo, você deve mudar uma linha em um arquivo de configuração do Debian executando o seguinte comando:
nano /etc/ssh/sshd_config
# Altere a linha que contém "PermitRootLogin", ela deve ficar desse jeito:
PermitRootLogin yes
Para aplicar as alterações feitas, reinicie o serviço sshd
, você pode usar o comando sudo systemctl reboot
Para a conexão do cluster funcionar, precisamos da chave SSH. Somente assim as máquinas poderão comunicar-se entre si com segurança e agilidade. Execute o seguinte comando nos dois nodes para gerar a chave SSH:
ssh-keygen
# Agora é só dar enter até cansar
Após isso, vamos criar um arquivo de configuração ssh nos dois nodes para automatizar a "passagem" das chaves SSH de um node para o outro Execute esse comando:
nano ~/.ssh/config
Certo, falta colocar as configurações dentro do arquivo, então copie e cole as informações abaixo:
Host node1
Hostname node1
User root
Host node2
Hostname node2
User root
# LEMBRE-SE! Mude o 'hostname' de acordo com sua necessidade
Além disso, mude as permissões do arquivo de configuração nos dois nodes:
chmod 600 ~/.ssh/config
Por fim, execute esses comandos, nos dois nodes, para "enviar" a chave ssh de um node para o outro:
ssh-copy-id node1
ssh-copy-id node2
Baixando o nosso cluster.sh
Baixe o arquivo "cluster.sh" que pode ser encontrado no repositório desse trabalho no github, através desse repositório. Você também pode clonar o repositório para ter acesso a esse script:
sudo apt install git
git clone https://github.com/EduardoVasconceloss/cluster-beowulf-MATA58.git
Funcionalidades do cluster.sh
O nosso cluster tem 7 funcionalidades, sendo elas:
-
mostrar
: função que executa o comandols
-
copiar
: função que executa o comandocp
-
mover
: função que executa o comandomv
-
definir_permissoes
: função que executa o comandochmod
-
criar_usuario
: função que executa o comandouseradd
-
criar_grupo
: função que executa o comandogroupadd
-
deletar
: função que executa o comandorm
Executando o nosso cluster.sh
Para executar o cluster, você deve executar o script:
./cluster.sh
Caso o cluster não esteja executando, você pode tentar mudar as permissões do arquivo:
chmod +x cluster.sh
Obs: O comando só será executado em um node caso seja executado nos dois. Se um arquivo não puder ser exluído no node1, ele não será excluído em nenhum node.
Ao executar o cluster, irá aparecer uma linha com a informação "Digite um comando: ", agora você tem sete opções de comandos para executar.
- mostrar: Para executar a funcionalidade
mostrar
, rode um comando com essa estrutura:
mostrar /caminho/para/o/arquivo
- copiar: Para executar a funcionalidade
copiar
, rode um comando com essa estrutura:
copiar /caminho/de/origem/para/o/arquivo/ /caminho/de/destino/para/o/arquivo
# Você também pode mover pastas
mover -r /caminho/de/origem/para/a/pasta/ /caminho/de/destino/para/a/pasta/
- mover: Para executar a funcionalidade
mover
, rode um comando com essa estrutura:
mover /caminho/de/origem/para/o/arquivo/ /caminho/de/destino/para/o/arquivo
# Você também pode mover pastas
mover -r /caminho/de/origem/para/a/pasta/ /caminho/de/destino/para/a/pasta/
- definir_permissoes: Para executar a funcionalidade
definir_permissoes
, rode um comando com essa estrutura:
definir_permissoes +x /caminho/para/o/arquivo
- criar_usuario: Para executar a funcionalidade
criar_usuario
, rode um comando com essa estrutura:
bash
criar_usuario seu_nome
- criar_grupo: Para executar a funcionalidade
criar_grupo
, rode um comando com essa estrutura:
criar_grupo seu_grupo
- deletar: Para executar a funcionalidade
deletar
, rode um comando com essa estrutura:
bash
deletar /caminho/para/o/arquivo