Archive for abril, 2009


Bien aquí va una herramienta útil para aquellos que realizamos administración de múltiples sistemas en forma remota vía protocolo OpenSSH, la verdad que cuando empecé hace años solo accedía a un par de ventanas con lo cuales no me resultaba molesto por allí realizar repetición de comandos, pero creanme , cuando se necesita mantener mas de 2  servidores he aquí que nos surge la necesidad de algún aplicativo que nos de las bondades que nos da ClusterSSH.

Tal vez aun seguís preguntándote , ¿pero que tipos de tarea puedo realizar en forma simultanea ?, dejame que te de alguna idea para comenzar de las tareas que se puede ejecutar en paralelo:

  • Actualización simultanea de algún aplicativo empaquetado o dist-upgrade (caso de Debian o derivados )
  • Descarga manual de aplicativos que necesitan ser instalados mediante el método convencional (./configure, make, make install)
  • Búsqueda en  Logs de parámetros comunes
  • Actualización de regla genérica en herramienta de firewall.
  • Procedimientos de mantenimiento de base de datos
  • otros….

si sos un Debian User, justo como yo, procedemos a instalarlo mediante:

# apt-get install clusterssh

Una vez instalado el aplicativo y sus dependencias disponemos del ejecutable cssh , el cual dará aparición de una pequeña ventanita como esta:

Pantalla de Inicio de ClusterSSH
Pantalla de Inicio de ClusterSSH

Allí la opción mas útil es la que se encuentra bajo el Menú “Hosts” y se llama “Add Host” , también podemos iniciarla con la combinación de teclas CTRL + PLUS(+) (osea tecla “Control” mas tecla “Mas”), lo que provoca la aparición de esta ventanita:

Ventana de Añadir Host en ClusterSSH
Ventana de Añadir Host en ClusterSSH

Ahora en dicha ventana solo bastaría poner el nombre del servidor en formato URL o Numero IP para acceder al SSH de dicho equipo, asumiendo que lo tengamos corriendo en el puerto típico que es el TCP numero 22, pero sucede comúnmente y a mi me ha pasado que debido a que lo primero q pensaría un oportuno atacante es husmear en dicho puerto para encontrar un server SSH andando, así que lo que suelo hacer es cambiar el puerto y poner uno distinto al 22, relax muchachos o damas, que tenemos 65536 para elegir, exceptuando los típicamente empleados por otros protocolos nos quedan muchos para decantarnos. En fin si tu caso es este, y pusiste un puerto atipico, se lo pasamos en la linea de la ventana de Add Host, escribiendo por ejemplo:

midominio.rechingon.org:2222

por si queres un usuario particular, a ver veamos con ponerlo así

pasokon@midominio.rechingon.org:2222

y listo, ya especificamos user and port.

Ahora , bien tu reacción podría ser , “pero me pone por las bolas tener que andar especificando User and Port, aparte de tipear todo el dominio”, bueno, si te estabas diciendo justamente esto o alguna frase similar de disgusto, podes realizar configuraciones personalizadas creando tu archivo .csshrc, veamos

$ touch ~/.csshrc

$ mcedit  ~/.csshrc

yo uso mcedit o a veces vim para editar archivos como editores de preferencia, y agregamos algunas lineas como las siguientes:

ignore_host_errors = yes

isp1 = usuario@midominio1.com.ar
isp2 = usuario@miotrodominio.net:4444
empresa1 = otrousuario@empresa1.com.ar:5666
empresa2 = usuario@empresa2.com.ar:221
oficina  = yo@miempresa.com.ar:2201
micluster1 = isp1 isp2
micluster2 = empresa1 empresa2 oficina
clusters = micluster1 isp1 isp2 micluster2 empresa1 empresa2 oficina

Bien, expliquemos un poco lo que hacemos aquí, la primer linea si bien en las ultimas versiones dice que esta en status DEPRECATED, yo a algunos servidores que administro no he podido conectarme si no fuera porque esta alli dicha opción, asi q la mantengo en mi archivo .csshrc. Uds vean como les resulta. De las lineas de 2 a 6  defino mis host asociándolos a etiquetas a gusto y placer del usuario, en el caso del ejemplo identifique los hosts de acuerdo a su funcionalidad “isp1” o a un lugar donde pertenezcan, pero en mi preferencia me gusta identificar los host con sus nombres,  particularmente al instalar un servidor suelo asignarle un nombre de mujer, al menos en mi caso es mas fácil recordarlos :).

En las lineas 7 y 8  referencio dichos los Hosts ya definidos de acuerdo a otra etiqueta, que es básicamente un tag cualquiera con el cual los agrupamos, de esta manera podemos iniciar una serie de sesiones en forma paralela con solo cargar el nombre de dicha agrupación (Consejo: no usen una misma password para gestionar el inicio de sesion en diferentes servidores, seria lo mas fácil, pero por favor no lo hagan no es lo mas recomendable).
Finalmente en la linea 9 se define la sección “clusters” , recordar que debe haber una sola sección “clusters” donde iran todas las etiquetas definidas, tanto de hosts y de agrupaciones de host, es importante incluir esta sección , porque sin ella todo lo definido anteriormente no funcionara.
Por mas configuraciones:

$ man cssh

:-P, se los recomiendo, porque aparte de lo descrito esta herramienta tiene algunas otras  funcionalidades útiles para trabajar con las ventanas de sesión iniciadas.

Casi me olvido, una buena alternativa para evitar  la típica validación contra OpenSSH, es el uso de certificados para realizar la conexión contra los servidores.

Ahora a titulo de simple usuario y critico, esta herramienta me ha servido demasiado a la hora de realizar alguna de las tareas arribas mencionadas, de todas formas algo le debo echar en falta, y es la posibilidad de mantener encriptada o cifrada la informacion relativa a los hosts que administro , el hecho de que este allí en un archivo de texto en mi $HOME no es algo que me tenga muy tranquilo. En fin. Es solo mi opinión.
Salud!

Seguramente mucho de nosotros, usuarios de GNU/Linux, en especial los que estamos hace un tiempo en el mundillo hemos lidiado con el dichoso “lilo” , selector de arranque o boot manager como también suele conocercelos, la idea de este programita es instalarse en el sector de arranque de un disco rígido y desde allí ejecutarse para permitirnos durante tiempo de arranque, y apenas leído el disco rígido de nuestra computadora , seleccionar con que sistema operativo de los que tengamos instalados vamos a iniciar sesión, además entre otras opciones los boot managers normalmente nos permiten refinar mas el tipo de parámetros que queremos pasar al sistema operativo que seleccionamos, tales parámetros como opciones del kernel para nuestro núcleo linux tales como partición de arranque , imagen initrd a usar, módulos a cargar , parámetros de dichos módulos, etc..

Bueno, la cosa es que para los que ya lo conocen, LILO ha sido desde hace tiempo la opción preferida, quizás hoy en día tiene mas alternativas  que años atrás, pero la idea siempre fue brindarnos la opción de elegir con que arrancar. Luego de una instalación típica de un gnu/linux , normalmente no necesitamos configurar nada,  la mayoría de los instaladores lo configuran automáticamente, pero en caso de que ese no sea nuestra situación deberíamos saber que  /etc/lilo.conf es el archivo para modificar su configuración.

Lo típico indica que el usuario común lo instala en su disco rigido y sigue con su vida como si nada, pero hoy yo me enfocare en la posibilidad que tenemos de emplear lilo para iniciar un sistema GNU/Linux que se encuentra espejado mediante RAID 1 por software

He aquí un archivo típico de configuración adaptado para iniciar con disco en modo RAID 1 con un sistema con dos disco IDES espejados, de misma capacidad y marca (Ojo, esto no es necesario en RAID por software en GNU/Linux):

# Support LBA for large hard disks.
#
lba32
# Overrides the default mapping between harddisk names and the BIOS’
# harddisk order. Use with caution.
#disk=/dev/hde
#    bios=0x81
#disk=/dev/sda
#    bios=0x80
# Specifies the boot device.  This is where Lilo installs its boot
# block.  It can be either a partition, or the raw device, in which
# case it installs in the MBR, and will overwrite the current MBR.
#
boot=/dev/md0
# Specifies the device that should be mounted as root. (`/’)
#
root=/dev/md0
raid-extra-boot=/dev/hda,/dev/hdc
# Enable map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the
# map smaller.  Using `compact’ is especially recommended when
# booting from a floppy disk.  It is disabled here by default
# because it doesn’t always work.
#
# compact
# Installs the specified file as the new boot sector
# You have the choice between: bmp, compat, menu and text
# Look in /boot/ and in lilo.conf(5) manpage for details
#
#install=/boot/boot-menu.b

# Specifies the location of the map file
#
map=/boot/map

# password=tatercounter2000
#
delay=20
timeout=150
# Boot up Linux by default.
#
default=”Linux”

image=/vmlinuz
initrd=/initrd.img
label=”Linux”
append=”apm:on”
read-only
optional

image=/vmlinuz.old
initrd=/initrd.img.old
label=”LinuxViejo”
append=”apm:on”
read-only
optional

#other=/dev/hda3
#    label=Winchows

De este archivo nos interesan las lineas 14,17, 18, comentemos:

Linea 14:

boot=/dev/md0

Indica el dispositivo de inicio (o booteo), es donde lilo se instala, bla bla! RTFM of lilo; el porque es /dev/md0 y no un tipico /dev/hda o /dev/hdd o lo que fuese es que justamente es un dispositivo que se crea al momento de definir los discos raid por software y adjuntarles los disco reales, sean estos IDE o SATA. Normalmente tienen esa notacion , si fue el primer dispositivo raid creado md0, el segundo md1 and so on…

Linea 17:

root=/dev/md0

Aquí se especifica la  particion  definida como raiz del sistema (/)

Linea 18:

raid-extra-boot=/dev/hda,/dev/hdc

Y esta a mi parecer la mas importante, aqui especificamos cuales son los disco que conforman el dispositivo raid, y en los cuales se escribira lilo al momento de ejecutar su arrancable.

Al terminar de realizar las modificaciones en /etc/lilo.conf, bastaria con ejecutar lilo en linea de comandos como root para que se actualize su contenido en el MBR (Master Boot Record), o inicio de la particion elegida.

server:/# lilo

Added Linux *
Added LinuxViejo
The boot record of  /dev/md0  has been updated.
The boot record of  /dev/hda  has been updated.
Warning: /dev/hdc is not on the first disk
The boot record of  /dev/hdc  has been updated.
server:/#

La linea que sale marcada con asterisco indica que es el kernel seleccionado por defecto para iniciar. Como se observa se actualiza el registro de inicio tanto en el dispositivo RAID md0 como también en cada una de las particiones que lo conforman.

Listo, eso es todo , ya deberíamos tener nuestro sistema listo para que arranquemos con ambos discos o con solo uno de ellos. Se puede probar iniciando y observando como inicia con cualquiera de los disco que arranquen.
Espero haya sido de utilidad este poseo, apropos, casi me olvidaba, al principio mencione alternativas a lilo, una de ellas , y bastante extendida en cualquier instalador actual es GRUB, con muchas mas opciones y bondades que LILO, y también con opción de configurarse para iniciar en modo RAID, pero eso lo veremos en otro post.