sistema de administración de multiples servidores usando ssh

20
Sistema de administración de múltiples servidores usando ssh Gabriel Orozco Ruiz Velazco FSL 2013

Upload: gabriel-orozco

Post on 22-Jul-2015

383 views

Category:

Technology


0 download

TRANSCRIPT

Sistema de administración de múltiples servidores usando ssh

Gabriel Orozco Ruiz VelazcoFSL 2013

Cómo es que pasamos de esto

A esto

A esto?

Supongamos un ambiente

El nombre de los servers no importa

● DEV

– mxl0295

– mxl0296

– mxl0298

– mxl1122

– mxl1170

● ITG

– fll4020

– fll4021

– fll4026

– fll4027

– fll4028

– fll4029

El nombre de los servers no importa

● PRO (continua)

– fll4189

– fll4190

– fll4191

– fll4195

– fll4199

– fll4204

– fll4205

● PRO

– fll4023

– fll4024

– fll4025

– fll4026

– fll4186

– fll4187

– fll4188

Rápido:

Los servidores de aplicación de ITG tienen problemas. Cuales eran?

El problema crece

Te avisan que cayó un contrato / fuiste agraciado, etc.

Y ahora tienes que soportar adicionalmente otraotra aplicación igual o más compleja que la actual

Lista de servidores y tags

● ~/serverlist.txt

fll4023 apli1 web arm1 lbfll4024 apli1 web arm1 lbfll4025 apli1 web arm2 lbfll4026 apli1 web arm2 lb

fll4186 apli1 app arm1 wlfll4187 apli1 app arm1 wlfll4188 apli1 app arm1 jbossfll4189 apli1 nfs arm1fll4190 apli1 db arm1 oracle

fll4186 apli1 app arm2 wlfll4187 apli1 app arm2 wlfll4188 apli1 app arm2 jbossfll4189 apli1 nfs arm2 wlfll4190 apli1 db arm2 oraclefll4191 apli1 webfll4195 apli2 web arm1 tomcatfll4199 apli2 web arm2 tomcatfll4204 apli2 job tomcatfll4205 apli2 web jboss

Cuidado con los tags, que no se repitan o será un problema

Ahora podemos buscar

● Encuentra los app servers:

grep app server2-list.txt

● Encuentra app servers, brazo2, que usan weblogic

grep app server2-list.txt | grep arm2 | grep wl

Que tal un comando para hacerlo fácil?

#/bin/bash# buscar las etiquetas y mostrar los serverstmp1=/tmp/servers-list.tmp.1tmp2=/tmp/servers-list.tmp.2cp ~/servers-list.txt $tmp1for filtro in $@;do grep “$filtro” $tmp1 > $tmp2 mv $tmp2 $tmp1donecut -d\ -f1 $tmp1

# echo $(cut -d\ -f1 $tmp1) mejor así!rm -f $tmp1

Ya encuentro las cosas.Y ahora que hago?

SSH

● Puedes ejecutar algo en el servidor remoto con solo añadirlo al final de la linea de ssh

ssh usuario@servidor “comando”

La salida de ese comando se manda a tu pantalla local.

● Para automatizar, hay que evitar que te pida password al conectarte (usando llaves)

● Si hay usuarios/cosas diferentes por server, puedes usar ~/.ssh/config

Ir a ejecutar a todos los servers

● Obtiene mi id en todos los servers

for server in $(busca.sh app arm1 wl);do ssh $server “id”;done

● Obtiene el uptime en TODA la plataforma

● Cual server le falta RAM?

● Cual server está más cargado?

● Cual modelo de cpu tiene cada server?

Ok y qué más puedo hacer?

● Otro comandito que le digas el comando y no tengas que teclear el “for server in....do.... done

● Otro comandito que haga un scp a todos los servers, del mismo archivo

● Todos usando el busca.sh como base. Esto quiere decir que si añades un nuevo servidor, o cambias la función de algún server, ya los demás comandos lo saben.

Problemas de esta solución

● Uso de listas “especiales” de servidores, hay que añadirlo al script. (aunque esto es sencillo)

● En algunos servers tu usuario es diferente, y hacer un sólo script se vuelve dificil

● Algunos servers tienen el ssh en puertos diferentes

● Al usar ssh para ejecutar comandos, las variables que se cargan en una sesión normal, no se cargan (ssh “comando” no hace un “login” y no se carga el .bash_profile)

Bienvenido al ~/.ssh/config

● Puedes definir un server como desees:

host myapp-pro-web HostName fll4023.florida.fsl.com Port 2222 User sistemas LocalForward 3129 127.0.0.1:3128 Compression no ForwardX11 yes ServerAliveInterval 30 ServerAliveCountMax 120

Preguntas? Dudas?