cluster ssh y X forwarding

(resuelto)

Administro varias máquinas idénticas que uso para lanzar simulaciones, con lo que me viene muy bien cssh (cluster ssh: lanza sesiones de ssh a varios servidores y replica la entrada de teclado). El caso es que hasta hace no mucho utilizaba xhost + export DISPLAY, pero he decidido cambiar a X forwarding (por seguridad y comodidad).

El problema es que al lanzar el cssh a las 10 máquinas a la vez, obtengo 3 tipos de resultados:
Last login: Mon Mar 28 11:48:00 2005 from xxxxx
xxxx@baiona8 xxxx $

Last login: Mon Mar 28 11:52:23 2005 from xxxxxx
/usr/bin/xauth:  error in locking authority file /home/grupo/franjva/.Xauthority
xxxx@baiona4 xxxx $

Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Mon Mar 28 11:48:00 2005 from xxxxxx
xxxx@baiona7 xxxx $


Es decir, o bien entra correctamente, o bien falla el lock de .Xauthority, o bien... pasa lo tercero XD, respectivamente. En el segundo caso, al intentar lanzar una aplicación X, ocurre lo siguiente:
xxxx@baiona4 xxxx $ xfig
X11 connection rejected because of wrong authentication.
X connection to localhost:11.0 broken (explicit kill or server shutdown).

y en el tercero:
xxxx@baiona7 xxxx $ xfig
Xlib: connection to "localhost:11.0" refused by server
Xlib: Invalid MIT-MAGIC-COOKIE-1 key
Error: Can't open display: localhost:11.0


Las máquinas en las que ocurren los errores son aleatorias. A veces en unas entra bien, otras veces falla con alguno de los errores. Y al hacer ssh a pelo, todo va perfecto.

Vamos, que el problema es que al intentar entrar en todas a la vez, pasa lo que pasa. O bien no puede lockear .Xautorithy, o bien el warning de "No xauth data".

¿Alguna solución? Lo ideal sería que el cssh dejase un cierto tiempo configurable entre sshs a distintas máquinas, pero no. Y no se perl como para parchearlo. Si alguien conoce un sustituto para cssh que permita x forwarding sin problemas, también me vale :).

Gracias.

(edit)

Bueno, ya no hace falta. He parcheado cssh para que espere 0.5 segundos entre cada ssh. Por si a alguien le interesa (que por el nº de lecturas del hilo va a ser que no XD) aquí está el parche:
*** /tmp/cssh   Mon Mar 28 17:30:53 2005
--- cssh        Mon Mar 28 17:30:36 2005
***************
*** 196,202 ****
  }
 
  # disable X11 forwarding if using ssh - fixes problem with redhat machines
! $path_method.=" -x " if($path_method =~ /ssh$/);
 
  if($options{v} || $options{d})
  {
--- 196,202 ----
  }
 
  # disable X11 forwarding if using ssh - fixes problem with redhat machines
! $path_method.=" " if($path_method =~ /ssh$/);
 
  if($options{v} || $options{d})
  {
***************
*** 567,573 ****
                # NOTE - ssh -x to disable forwarding of X11 sessions due to problem
                # on redhat systems
                system("$user_config{'default.terminal'} $user_config{'default.terminal_options'} $place -title '$method:$serv' -e $^X $user_config{'default.cchp_path'}/cchp $debug -s $user_config{'default.cchp_sleep'} -k $user_config{'default.keep_open'} -x $servers{$serv_name}[2] -y $TIOCSTI -z $KILLOFF $path_method -p $port $user_config{'default.cx_args'} $serv &") == 0 or warn("Could not create session to $serv: $! ");
!
                if(!sysopen($servers{$serv_name}[3], $servers{$serv_name}[2], O_WRONLY))
                {
                        unlink($servers{$serv_name}[2]);
--- 567,573 ----
                # NOTE - ssh -x to disable forwarding of X11 sessions due to problem
                # on redhat systems
                system("$user_config{'default.terminal'} $user_config{'default.terminal_options'} $place -title '$method:$serv' -e $^X $user_config{'default.cchp_path'}/cchp $debug -s $user_config{'default.cchp_sleep'} -k $user_config{'default.keep_open'} -x $servers{$serv_name}[2] -y $TIOCSTI -z $KILLOFF $path_method -p $port $user_config{'default.cx_args'} $serv &") == 0 or warn("Could not create session to $serv: $! ");
!               system("sleep .5");
                if(!sysopen($servers{$serv_name}[3], $servers{$serv_name}[2], O_WRONLY))
                {
                        unlink($servers{$serv_name}[2]);

Ahora todo va perfecto.
Como un 'side note'... ¿realmente ves recomendable ejecutar LO MISMO en varias máquinas a la vez?

Suena como una EvilThing(TM) para según qué cosas ¿no?

Salu2.Ferdy
Principalmente son simulaciones de matlab. Normalmente una máquina (XP 2600+) necesita 1 día o 2 para calcular una simple probabilidad de error, y necesito varias para representar una curva. Es realmente cómodo lanzar una simulación en todas a la vez y que cada máquina haga la parte que le corresponde en base a su hostname (baionaX). Además, el automatizarlo reduce la posibilidad de equivocaciones.

También para emerge -Duatv --newuse world y para editar ciertos ficheros de configuración. Para administración es más peliagudo, pero siempre tengo cuidado, y soy bastante vago :P.
¿ No te has planteado un cluster openmosix para lo del matlab ?

Para administración es más peliagudo


Si, por eso me había asustado :P

emerge -Duatv --newuse world


*shrug* --deep (-D) es malo, muy malo. Actualiza librerías que no es necesario actualizar y es muy propenso a b0rkage. Yo he dejado de usarlo tras ver cómo tenía algunas cosas (revdep-rebuild)

Salu2.Ferdy
Ferdy escribió:¿ No te has planteado un cluster openmosix para lo del matlab ?

Lo cierto es que tenía en la cabeza que era más complicado de lo que es. Acabo de leer el manual y parece realmente simple. Aunque también he leido que matlab usa threads desde la 6 (uso la 7), con lo que en openmosix dará problemas (memoria compartida).
Me tienta probar en 3 máquinas (últimamente no tienen mucha carga) y si va bien, extenderlo. Desde luego facilitaría aún más el trabajo. Y siempre puedo volver al matlab 5, del que también tenemos licencias.

Gracias por el tip ;).

Ferdy escribió:*shrug* --deep (-D) es malo, muy malo. Actualiza librerías que no es necesario actualizar y es muy propenso a b0rkage. Yo he dejado de usarlo tras ver cómo tenía algunas cosas (revdep-rebuild)

Sí, en estas máquinas debería limitarme a -u. Aunque por ahora no he tenido ningún problema con dependencias. Es una mala costumbre traída de casa (en donde me pongo nervioso al pensar que hay una versión de libxyz más moderna que la que tengo instalada XD).
Narf escribió:Lo cierto es que tenía en la cabeza que era más complicado de lo que es. Acabo de leer el manual y parece realmente simple. Aunque también he leido que matlab usa threads desde la 6 (uso la 7), con lo que en openmosix dará problemas (memoria compartida).
Me tienta probar en 3 máquinas (últimamente no tienen mucha carga) y si va bien, extenderlo. Desde luego facilitaría aún más el trabajo. Y siempre puedo volver al matlab 5, del que también tenemos licencias.

Gracias por el tip .


Uff la verdad es que es tentadora la idea [sonrisa] , yo también tendré que hacer calculo intensivo devido a hacer simulaciones de montecarlo en matlab, lástima que los ordenadores que tengo sean tan poco potentes [decaio] ...

Narf escribió: Es una mala costumbre traída de casa (en donde me pongo nervioso al pensar que hay una versión de libxyz más moderna que la que tengo instalada ).


[qmparto] [qmparto] [qmparto]
el_salmon escribió:Sois unos frikis de cuidao [pos eso]
queda claro, no? [carcajad] [carcajad]


1 Saludo
5 respuestas