Com o programa instalado, vamos compartilhar o diretório de instalação para que as máquinas escravas possam utilizar os arquivos binários, logs, arquivos temporários e principalmente, o arquivo a ser renderizado.
Nota: Questões como segurança de acesso e performance do compartilhamento estão fora do escopo deste artigo. Além disso o DrQueue não se importa com a topologia de rede, se os IPs são atribuídos de forma manual ou automática (via DHCP) para os clientes. Apenas devemos deixar o nó master com IP fixo, principalmente se você pretende automatizar o serviço.
Para instalar o NFS no Debian, basta rodar o seguinte comando:
# aptitude install nfs-kernel-server portmap nfs-common
Vamos editar o arquivo /etc/exports e acrescentar ao final do mesmo:
/home/drqueue *(rw)
Feito isso, basta iniciar/reiniciar o compartilhamento com o comando:
# /etc/init.d/nfs-kernel-server start
ou
# exportfs -a
se ele já estiver em execução.
Configurando o serviço e iniciando os serviços de master/client
Falta pouco. A configuração do drqueue é bem tranqüila. Dentro de /home/drqueue/etc existem 3 arquivos que devem ser editados, o master.conf, o slave.conf e o drqman.conf. Estes arquivos são responsáveis por indicar para o drqueue aonde estão as pastas logs, tmp e root do programa.
Segue um exemplo do master.conf, slave.conf e drqman.conf, na ordem.
#master.conf
#
# Lines starting with '#' will not be parsed
# Use the following as examples (without the '#' character)
#
logs=/home/drqueue/logs
tmp=/home/drqueue/tmp
db=/home/drqueue/db
bin=/home/drqueue/bin
etc=/home/drqueue/etc
#slave.conf
#
# Lines starting with '#' will not be parsed
# Use the following as examples (without the '#' character)
#
#
logs=/home/drqueue/logs
tmp=/home/drqueue/tmp
pool=Default
#drqman.conf
#
# This lines must be ignored
#
#
logs=/home/drqueue/logs
tmp=/home/drqueue/tmp
db=/home/drqueue/db
Agora vamos criar alguns scripts pra facilitar a chamada do master, slave e drqman. Os scripts master e drqman devem estar na máquina master e o script slave na máquina escrava, todos com permissão de execução.
Criei os scripts como root e os coloquei dentro da pasta /bin, de modo que qualquer usuário possa, na máquina master, submeter seu Job ao cluster. Lembrando que quem de fato lê e escreve no diretório compartilhado é o usuário drqueue e que este usuário e sua pasta deve existir dentro de cada nó do cluster.
drqueue.master:
#!/bin/bash
export DRQUEUE_ROOT=/home/drqueue
export DRQUEUE_MASTER=localhost
$DRQUEUE_ROOT/bin/master
drqueue.slave:
#!/bin/bash
export DRQUEUE_ROOT=/home/drqueue
export DRQUEUE_MASTER=192.168.1.1
$DRQUEUE_ROOT/bin/slave
drqman:
#!/bin/bash
export DRQUEUE_ROOT=/home/drqueue
export DRQUEUE_MASTER=192.168.1.1
$DRQUEUE_ROOT/bin/drqman
Montando o compartilhamento nos clientes:
Para começar a usufruir dos poderes de um render farm, precisamos antes montar o compartilhamento de diretório nos clientes com o comando:
# mount -t nfs 192.168.1.1:/home/drqueue /home/drqueue
Para facilitar podemos colocar isso dentro do /etc/fstab de modo que este diretório será montado automaticamente a cada boot.
# <file system> <mount point> <type> <options> <dump> <pass>
192.168.1.1:/home/drqueue /home/drqueue nfs defaults 0 0
Agora basta chamar o script drqueue.master e drqman na máquina master e chamar o script drqueue.slave na máquina cliente e você terá uma render farm pronta para começar seu primeiro trabalho.