Primero: Acceso sin password
Teclear 16 veces tu password cada vez que vas a arrancar un cluster consume demasiado tiempo asi que...
Una forma de administrar múltiples servidores mediante ssh, sin tener que dar cada vez que entramos a cada uno el password es usar pares de llaves publicas/privadas para la autentificación en estos servidores (esto sólo funciona como root).
Una vez logeados como root, primeramente deberemos generar la llave pública en el servidor "Maestro"
ssh-keygen -t rsa
En pantalla deberá aparecer algo como:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/rob/.ssh/id_rsa):
Damos un para dejar los archivos por default para las llaves.
A continuación se nos pide una frase de password, la cual dejaremos en blanco para efectos de poder entrar sin password a los servidores, (pero autentificando la sesión con la llave privada que solo tendremos nosotros)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/rob/.ssh/id_rsa.
Your public key has been saved in /home/rob/.ssh/id_rsa.pub.
The key fingerprint is:
a6:5c:c3:fb:19:94:0d:06:a1:a6:29:58:fa:80:0a:bc usuario@localhost
Para dejar la frase en blanco solo teclea en un par de ocasiones
Con lo anterior has creado dos archivos en tu directorio .ssh, id_rsa que es tu llave privada e id_rsa.pub que es la llave pública.
Para usar este par de llaves en un servidor basta con agregar la llave pública en su archvio .ssh/authorized_keys, por ejemplo, si solo se va a acceder de nuestro equipo, podemos ejecutar:
ssh server "mkdir .ssh; chmod 0700 .ssh"
scp .ssh/id_rsa.pub server:.ssh/authorized_keys
La primera instrucción crea el directorio .ssh en la cuenta del usuario en el servidor "esclavo", la segunda instrucción, copia nuestra llave pública sobre la lista de llaves autorizadas en dicho servidor.
De aqui en adelante podremos acceder al servidor mediante ssh, en la cuenta con la que estemos trabajando en el servidor "maestro" sin necesidad de teclear el password.
La seguridad de este método será tan buena, como protegida se encuente nuestra llave privada
Para mas información puede consultarse el excelente libro "Linux Server Hacks" de Rob Flickenger publicado por O`Reilly
Segundo: Archivo con los hosts
Al arrancar pvm puede proveersele como parámetro un archivo que contiene una lista con los nombres de los nodos a agregar al cluster, de esta forma no es necesario hacer un add para cada uno de ellos.
Por ejemplo, en mi cluster el archivo se llama /root/maquinas y tiene el siguiente contenido:
maquina2
maquina3
maquina4
maquina5
maquina6
maquina7
maquina8
maquina9
maquuna10
maquina11
maquina12
maquina13
maquina14
maquina15
maquina16
nótese que la maquina1 no aparece, debido a que es el nodo maestro del cluster y desde ahi se ejecuta el comando
pvm /root/maquinas
lo cual agrega los otros 15 nodos para hacer un total de 16
Tercero: shell script para ejecutar un comando en todos los esclavos del cluster
para esto hay que grabar un archivo en /root/bin con el nombre cluster con el siguiente script:
maquinas=`cat /root/maquinas`
for HOST in $maquinas
do
ssh $HOST $*
done
la primera línea tiene acentos graves y genera una variable maquinas con una lista de las computadoras contenidas en el archivo del segundo tip.
el ciclo for, recorre la lista de almacenada en maquinas y va almacenando cada una en la variable HOST.
$* equivale a todos los parámetros con los que el script haya sido ejecutado.
una vez guardado asegúrate de que el script tiene permisos de ejecución con el comando:
chmod 770 /root/bin/cluster
para probar la funcionalidad del comando puedes ejecutar:
cluster hostname
lo cual debe desplegarte el nombre de host de cada nodo en el cluster.
de esta forma, podrás por ejemplo, desactivar el cortafuego en todos los nodos antes de iniciar pvm con el comando:
cluster service iptables stop
No hay comentarios:
Publicar un comentario