¿QUÉ ES «CLUSTERSSH»?

cluster-sshClusterSSH es una herramienta para hacer idénticos cambios en varios servidores al mismo tiempo. El comando ‘cssh’ abre un xterm (en este caso una ventana SSH) en todos los hosts especificados además de una consola de administración. Cualquier texto escrito en la consola se replica en todas las ventanas xterm y a su vez tenemos la posibilidad de editar cualquiera de las ventanas de forma individual.

ClusterSSH consta de 3 comandos (cssh, crsh, ctel) que permiten controlar varias sesiones ssh, rsh o telnet respectivamente, nosotros solo nos centraremos en el comando «cssh» con el cual realizaremos conexiones a través de Secure Shell.

Esta utilidad está diseñada para la administración de un clúster, la misma configuración o comandos que se ejecutan en la consola de administración se deben ejecutar en cada nodo del clúster. Realizar estos comandos de una sola vez a través de esta herramienta garantiza que todos los nodos se mantengan sincronizados. Para más información podemos visitar la wiki del proyecto en la plataforma de desarrollo GitHub: https://github.com/duncs/clusterssh/wiki.

En la web de Sourceforge http://sourceforge.net/projects/clusterssh/ se encuentra disponible el código fuente en formato «tar.gz» para varias plataformas; GNU/Linux, BSD, Mac OSX y Oracle Solaris. Una vez desempaquetado el fichero y ubicados en el directorio ejecutaremos desde la SHELL los comandos para el script de perl:

perl Build.PL
./Build
./Build test
./Build install

La instalación es más fácil haciendola desde los repositorios de la distribución ya sea con «apt-get» o «aptitude» para Debian y derivadas o a través de «yum» o «dnf» para Red Hat, Fedora o CentOS. Además evitamos errores de Modulo y tener que instalarlo con «cpan» como en mi caso. Comento la instalación desde código fuente porque al ser usuario de Mac OSX he tenido que compilar el paquete, de todas formas se puede hacer por el camino más fácil si tenemos instalado «Homebrew» http://brew.sh/ ejecutando el comando «brew install csshx» o haciendo uso de cualquiera de los restantes gestores de paquetes como «Fink» o «MacPorts».

Mencionar que para sistemas MS Windows disponemos de una utilidad muy parecida llamada «PuTTYCS» que se puede descargar de su web http://www.millardsoftware.com/puttycs.

 

¿Cómo funciona?

La sintaxis básica del programa es:

«cssh usuario@servidor1 usuario@servidor2 usuario@servidor3»

De esta manera, se abrirán tantas consolas SSH como argumentos le pasemos al programa (en este caso 3) y una pequeña ventana adicional (la consola del cluster) en la que cada comando que ingresemos será ejecutado en todos los terminales de los servidores ssh en los que tengamos iniciada sesión.

Desde ahí todo lo que introduzcamos se replicará al resto de terminales SSH abiertas. En este caso, si en los 3 servidores tenemos la misma contraseña para el user «usuario», podemos introducirla en la ventana de clusterSSH y presionar intro. De esta forma, debería hacer login en las otras 3 consolas de los servidores que le hemos pasado como parámetros (servidor1, servidor2, servidor3). Si después de hacer login ejecutamos en la consola de clusterSSH cualquier comando, por ejemplo «pwd», el resultado se mostraría en las 3 consolas xterm de los servidores en los que estamos conectados.

Adjunto una captura de la conexión desde mi MacBook Pro a 2 maquinas virutales con Debian, en la cual se aprecian las 2 ventanas xterm de cada servidor y la consola de administración de clusterSSH.

ClusterSSH

 

Archivos de configuración

«$HOME/.ssh/config» «$HOME/.csshrc» «/etc/csshrc» «/etc/hosts»

El fichero «$HOME/.ssh/config», desde aquí podemos definir los usuarios con los que conectamos a los equipos remotos, siguiendo la siguiente sintaxis:

# Entradas en $HOME/.ssh/config
Host servidor1
HostName servidor1.local ó IP
Port 2222
User usuario

Host servidor2
HostName servidor2.local ó IP
Port 2222
User usuario

Host servidor3
HostName servidor3.local ó IP
Port 2222
User usuario

En Host podemos darle el nombre que queramos, pero Hostname debe ser el nombre de host real o la dirección IP de la máquina, usaremos la entrada Port si quisiéramos indicar un puerto diferente al puerto por defecto y en User el usuario que le indiquemos. Si usamos el nombre de la maquina en vez de la dirección IP tendremos además que agregar las correspondientes entradas en el fichero «/etc/hosts»:

«Dirección IP» servidor1.local
«Dirección IP» servidor2.local
«Dirección IP» servidor3.local

De esta manera para conectar con los hosts remotos sólo tendriamos que introducir:

«cssh servidor1 servidor2 servidor3»

 

Configuración de un clúster SSH

Para formar un cluster con las maquinas que queremos gestionar tendremos que editar el fichero «$HOME/.csshrc», estos cambios se aplicarían para el usuario en cuestión, si quisiéramos que la configuración afectara a todos los usuarios del sistema, tendríamos que modificar el fichero «/etc/csshrc», ambos deberán tener la siguiente sintaxis:

clusters = cluster1 cluster2 ……..clusterN (Se definen los clusters que queramos gestionar).
cluster1 = servidor1 servidor2 ……servidorN (Se definen las maquinas que forman parte de un cluster).
cluster2 = servidor1 servidor2 servidor3 ……servidorN

 

Ejemplos de como usar el programa:

«cssh servidor1 servidor2» (Para abrir sesiones ssh en maquinas determinadas).

«cssh cluster1» (Para abrir conexiones con todas las maquinas que se encuentren detalladas en la sección cluster1)

Como podemos ver, ahora la gestión es mucho más sencilla y la aplicación es de gran útilidad a la hora de tener divididos los servidores según distintas funcionalidades, por ejemplo:

clusters = recursos srvweb público

recursos = servidor1 servidor2
srvweb = servidor3 servidor4
público = server5 server6

Por último, os dejo un video de Youtube en el que podéis ver el funcionamiento del programa brevemente.

Espero que el post haya sido de interés. opcion

Saludos cordiales.

 

6 Respuestas a “¿QUÉ ES «CLUSTERSSH»?

    • Buenas Sergio, disculpa si tardo en responder pero actualmente estoy tan liado que no estoy ni publicando posts……tengo esto un poco abandonado. Respecto a tu pregunta yo nunca he trasteado el tamaño de las ventanas cuando lo he usado porque la verdad el número de servidores que he tenido que atender al mismo tiempo no era exagerado, pero si se puede modificando el fichero de configuración (~/.csshrc). Tendrías que añadir algo parecido a esto:

      terminal_size = 80×24
      console_position = +0+0
      window_tiling = yes
      always_tile = yes

      De todas formas tienes toda la información en la pagina de desarrollo del proyecto, en sourceforge.net, te dejo el enlace a un hilo en el que se comenta tu pregunta, espero que te sirva de ayuda y gracias por la visita.

      https://sourceforge.net/p/clusterssh/mailman/message/21150218/

      Me gusta

  1. Hola!
    Estoy configurando Cluster ssh en Mac.
    Ya tengo el csshX y me funciona pasando en linea de comando los servidores.
    Pero querría configurar etiquetas, por ejemplo:
    csshX cluster1.

    Donde y como puedo hacer eso?
    En mi mac no existe el fichero $HOME/.csshrc, se crea y se ponen ahi las etiquetas y lo coge por defecto?

    Gracias y saludos.

    Me gusta

    • Buenas tardes Víctor, sino lo crea la instalación…créalo tu para poder configurar los clusters ….buscalo también en /etc…. aunque ahí la configuración sería global y no por usuario…..hace ya años que no lo uso…ya que opté hace bastante tiempo por Ansible para automatizar tareas y demás…. supongo que con las versiones posteriores será igual….sino te recomiendo que leas la documentación oficial de la aplicación…. gracias por la visita y saludos cordiales

      Me gusta

    • Acabo de darme cuenta que la documentación ya no está en el enlace que le puse a Sergio en la anterior consulta…..el proyecto está en GitHub
      Y parece que ha cambiado y mejorado mucho más….te dejo el enlace
      github.com/duncs/clusterssh
      Saludos

      Me gusta

  2. Buenas de nuevo para que te sea mas fácil…..acabo de ver en la documentacion de github que el fichero ahora parece estar en la ruta:
    «/etc/csshrc» «$HOME/.clusterssh/config»
    This file contains configuration overrides – the defaults are as
    marked. Default options are overwritten first by the global file,
    and then by the user file.

    Saludos!!

    Me gusta

Deja un comentario