-
Notifications
You must be signed in to change notification settings - Fork 1
Documentação PXE
"The Preboot eXecution Environment (PXE, also known as Pre-Execution Environment; sometimes pronounced 'pixie') is an environment to boot computers using a network interface independently of data storage devices (like hard disks) or installed operating systems." (Wikipedia)
Como os nós do cluster não possuem disco rígido, todos os nós "puxam" o sistema operacional pela rede a partir do master. Para isso, usamos o PXE. A ideia geral é:
- O computador é ligado, e na sequência de boot chega na opção "network boot". Ele então procura na rede por um servidor de DHCP
- Esse servidor de DHCP, que está configurado no master, envia um endereço IP e serve por TFTP um sistema mínimo de boot
- Esse sistema mínimo de boot carrega um kernel, também pelo TFTP, e monta o / sobre NFS
O cliente precisa ter uma opção de network boot habilitada na BIOS, acima das opções de boot locais. Em alguns nós também foi necessário habilitar a "LAN Option ROM".
Como todos os nós compartilham a mesma imagem, todos inicializam seu hostname como "abacus-pxe". Foi criado um script para renomear cada nó baseado no seu IP, que é executado automaticamente durante a sequência de boot (gethname).
1- Servidor de DHCP / TFTP
Tanto o DHCP quanto o TFTP são servidos pelo dnsmasq, e configurados em /etc/dnsmasq.conf. Esse arquivo contém as diretivas "dhcp-host" associando os endereços de MAC das placas dos clientes com os IPs corretos. Ele também configura o TFTP para ser servido a partir do diretório /var/lib/tftpboot, e faz com que o arquivo servido durante o boot do cliente seja o /var/lib/tftpboot/pxelinux.0.
2- Configuração do PXElinux
A configuração do PXE é feita no arquivo /var/lib/tftpboot/pxelinux.cfg/default, que especifica quais arquivos de kernel estão disponíveis para serem servidos, qual é o mount-point do sistema de arquivos, e outras opções.
3- Sistema operacional servido por NFS
O sistema operacional está montado no master no diretório /var/lib/nfsroot. Além disso, o diretório /home é montado sobre o /home do master, assim como o diretório /cluster_bin. Precisamos verificar se o diretório /cluster_bin ainda tem algum uso.
O /etc/network/interfaces dos clientes está configurado para "eth0 manual" para não entrar em conflito com a atribuição de IP pelo DHCP.
4- Gerenciamento de updates:
Feito por apt-get, normalmente. Importante: Quando o kernel for atualizado, é necessário copiar os novos initrd e vmlinuz para o diretório /var/lib/tftpboot, e reconfigurar o arquivo "default" para apontar para os novos vmlinuz-* initrd.img-*
5- Logs:
Para evitar que todos os nós tentem escrever nos mesmos arquivos, os logs de sistema estão em diretórios chamados /var/log/abacus0000-...23. A configuração para que cada nó escreva no lugar correto é dada pelo arquivo /etc/rsyslog.d/10-perhostname.conf. A rotação de logs é gerenciada pelo master.
Fonte principal de documentação:
Outros tutoriais: