• 101 COSAS QUE PUEDES HACER CON CLOUD OS – Cosa 83

    COSA #83: USO DE LOS SERVICIOS DE GESTION EN MICROSOFT AZURE

     

    Hola amigos, hoy les voy a mostrar cómo los Servicios de Administración o Management Services que nos ofrece Microsoft Azure. Esencialmente lo que se puede obtener con esta característica es una serie de alertas vía e-mail acerca del estado de los servicios que tenemos en Azure.

    En otras palabras, si por ejemplo quiero recibir una alerta cuando el uso de CPU de una de mis máquinas esté por encima del 90% durante 5 minutos puedo hacerlo a través de este servicio. Otro tipo de alertas que puedo recibir están relacionadas con el uso de almacenamiento de una BD SQL Azure o acerca de eventos que sucedan con mi cuenta de almacenamiento de Azure –que es donde están todos mis objetos-

    ¿Cómo lo hago? Es muy simple, veamos:

    Debo ingresar a MANAGEMENT SERVICES (SERVICIOS DE ADMINISTRACION en Español)

    Azure MGMT Services-01

    Debo adicionar una regla usando el botón ADD RULE image

    Ahora, voy a definir una regla para que me avise en caso de que la CPU de una máquina Linux CentOS llegue al 90%:

    Azure MGMT Services-02

    Observen qué tipo de servicios puedo monitorear: CLOUD SERVICE, MOBILE SERVICE, SQL DATABASES, STORAGE, VIRTUAL MACHINE y WEBSITE.

    Azure MGMT Services-03

    En nuestro ejercicio seleccioné VIRTUAL MACHINE. Presiono siguiente image

    Estas son las variables que puedo monitorear:

    Azure MGMT Services-04

    Para este ejercicio voy a seleccionar CPU Percentage y voy a establecer un umbral del 90% durante 10 minutos seguidos. De igual manera debo escribir la cuenta de correo a donde me va a llegar la alarma, que bien puede ser la cuenta de correo del administrador del servicio –es decir la cuenta de acceso a Azure-, una cuenta diferente o ambas. En este ejemplo usé la opción de recibir correo a una cuenta distinta a la cual con la que ingreso a Azure:

    Azure MGMT Services-05

    Presiono image  y ya estoy listo.

    Como para ver el efecto voy a simular una alta carga de CPU en mi máquina. Para simular la carga en Linux existen muchas maneras, como por ejemplo usar una herramienta denominada stress, y hay muchas otras maneras… en mi caso voy a usar una secuencia de comandos muy simple en una sola línea: while true; do true; done (¡Por favor no usen esta secuencia en una máquina Linux de producción!). Dejo que transcurran al menos 10 minutos y me debe llegar una alarma por correo.

    La alarma que me llegó es la siguiente:

    Azure MGMT Services-07

    Tan pronto el inconveniente se solucione llega una alarma como:

    Azure MGMT Services-08

    Como lo han visto hasta ahora, es un procedimiento muy sencillo.

    Bueno, ahora vamos a simular la misma situación con una máquina Windows. Al igual que en Linux, en Windows existen varias maneras de simular carga de CPU. Por ejemplo escribir un número de 19 cifras en la calculadora científica (calc.exe) e intentar obtener el factorial (n!) de dicho número.

    Otra manera de hacerlo es a través de Powershell haciendo un loop casi que infinito (¡Más de 2 billones de veces!):

    foreach ($loopnumber in 1..2147483647) {$result=1;foreach ($number in 1..2147483647) {$result = $result * $number};$result}

    Esto fue sólo un ejemplo, pero en realidad hay muchas maneras de lograrlo.

    En mi caso, voy a usar una herramienta denominada CPUSTRES.EXE, la cual se puede descargar Aquí. Una vez la haya descargado, puedo ejecutarla y generar carga en la máquina. Para que se genere carga podemos configurar la herramienta tal como se ve en la siguiente imagen. Es importante hacer notar que tan pronto se cambien los parámetros el uso de CPU se dispara:

    Azure MGMT Services-11

    Y en efecto, observen cómo se ve el comportamiento de la CPU en el Task Manager:

    Azure MGMT Services-10

    Si la alarma está configurada, llegarán mensajes de correo similares a los que ya les mostré. Es decir, un mensaje cuando se genere la alarma y otro cuando se solucione.

    De igual manera y como lo mencioné anteriomente, también puedo tener alarmas acerca del comportamiento del storage (almacenamiento) en donde almaceno mis objetos de Azure.

    Para poder recibir alarmas del storage primero hay que activar el monitoreo de la siguiente manera: (Voy a poner las imágenes y en donde haya lugar a una explicación lo haré)

    Azure MGMT Services-12

    Se selecciona la cuenta de Storage a la que se le habilitar el monitoreo.

    Azure MGMT Services-14

    Se hace clic en Monitor, y como se observa no está habilitado:

    Azure MGMT Services-15

    Azure MGMT Services-16

    Se habilita para los objetos que se requiera, las posibilidades son BLOBS, TABLES y QUEUES:

    Azure MGMT Services-17

    Se presiona el botón SAVE para guardar los cambios. Esperamos a que se apliquen:

    Azure MGMT Services-19

    Ahora ya estamos listos para definir una alerta, tal como lo hicimos para la máquina Linux y Windows. Es decir, se selecciona Management Services y Add Rule:

    Azure MGMT Services-20

    Se asigna un nombre a la alarma (Storage Alert), una descripción (Alarma de Storage), Tipo de Servicio (Storage), el Nombre del Servicio es el del Storage al que se le activó el monitoreo (portalvhds6l8fx0f8t0h17) y por último el tipo de Servicio o Storage Service que puede ser del tipo Blob, Table o Queue.

    Una vez se defina el tipo de servicio, se puede hacer un monitoreo de diferentes variables, como se ve en la siguiente gráfica:

    Azure MGMT Services-22

     

    El resto de la definición de la alarma consiste en decidir a qué dirección de correo le deberá llegar la misma.

    No olviden que todos los objetos que puedo monitorear son los siguientes: CLOUD SERVICES, MOBILE SERVICES, SQL DATABASES, STORAGE, VIRTUAL MACHINE y WEBSITE

    Bueno, aquí les dejo esta información y espero les haya gustado.

  • 101 COSAS QUE PUEDES HACER CON CLOUD OS – Cosa 65

    COSA #65: HACER BACKUP DE UNA MAQUINA LINUX EN MICROSOFT AZURE

     

    Hola amigos, recientemente hablé de la posibilidad de hacer backup a una máquina Windows hacia la nube pública de Microsoft denominada Microsoft Azure. Simplemente hay que usar una herramienta gratis denominada Azure Backup, la cual se instala en el servidor que se quiere respaldar, se generan certificados digitales para que el proceso sea seguro y ¡Listo!.

    Si quieren saber sobre cómo configurar la herramienta de backup hacia Azure, pueden ver mi post COSA # 29: CONFIGURACIÓN DE WINDOWS AZURE BACKUP

    Si quieren ver cómo se hace un backup hacia la nube usando Azure Backup, pueden ver mi post COSA # 37: WINDOWS AZURE BACKUP

    En los anteriores ejemplos se hizo la configuración para hacer backup a una máquina Windows… ¿Y si es Linux? La herramienta está hecha para plataforma Windows, pero podemos hacer un sencillo “truco” para llevar archivos de una máquina Linux hacia Azure.

    El objetivo final es copiar de alguna manera los archivos de Linux hacia una máquina Windows que tenga configurado un esquema de Azure Backup y una vez estando allí dichos archivos se respalden hacia Azure.

    Existen varias alternativas para ello, por ejemplo usar Samba, lo que permite conectar máquinas Windows y Linux con el protocolo SMB (Server Message Block) para ver las carpetas si se tratara de carpetas compartidas y copiar lo que se requiera. Con tareas programadas y un sencillo script o .bat se puede hacer la copia de archivos a respaldar.

    Si las máquinas no se encuentran en la misma red local usar Samba se complica debido a que los protocolos asociados no son del todo enrutables y a menos que se usen conexiones LAN-to-LAN o VPNs esta tarea no se puede realizar entre sitios remotos. Por lo anterior se puede usar un viejo conocido como lo es el protocolo FTP, el cual vamos a usar en este ejemplo.

    Por supuesto hay que considerar que si se va a hacer un respaldo de una base de datos que tenga archivos abiertos es necesario hacer un respaldo offline previamente. De igual manera hay que tener en cuenta esta situación cuando se respalden aplicaciones con archivos abiertos en memoria para tener una consistencia del respaldo.

    En este ejercicio voy a respaldar una base de datos MySQL y 2 sitios web estáticos que tengo corriendo en un servidor Linux CentOS.

    Voy a hacerle respaldo a la base de datos denominada mysql, que es la base de datos del motor MySQL. Primero verifico que la base de datos exista:

    Backup-Linux-Azure01

    Aquí simplemente me conecté por línea de comandos usando mysql –u root –p y escribí la contraseña del usuario root de MySQL. Luego ejecuté el comando de MySQL show databases; para ver las bases de datos que existen en mi motor que en este caso son las que vienen por defecto.

    Me puedo salir del ambiente usando exit; (Es importante el uso del caracter ; al final)

    Ahora para hacer un backup de la base de datos de MySQL –que en este caso es un export a un archivo plano- uso el comando mysqlsump de la siguiente manera:

    mysqldump -u root  -p'Pa$$w0rd'  mysql > /home/guacharo/dumpbdmysql.sql

    Aquí se está especificando el usuario (root), la contraseña (Pa$$w0rd), la ruta en donde voy a dejar el archivo (/home/guacharo)  y el nombre del archivo de salida (dumpbdmysql.sql), el cual es un archivo plano o ascii:

    Backup-Linux-Azure02

    Si quieren respaldar la tabla mysql.event, pueden usar mysqldump -u root  -p'Pa$$w0rd'  mysql --events > /home/guacharo/dumpbdmysql.sql pero para efectos prácticos en nuestro ejemplo cualquiera de las 2 opciones expuestas funciona.

    Ahora bien, podemos verificar la existencia del archivo respaldado:

    Backup-Linux-Azure03

    Y también su contenido:

    Backup-Linux-Azure04

    Como ya lo había dicho, es un archivo plano. Para verlo simplemente usé el comando more:

    more /home/abarba/dumpbdmysql.sql

    Bueno, este archivo ya es un respaldo de mi base de datos mysql. Ahora voy a respaldar los 2 sitios web que tengo en el servidor y que son sitios estáticos sin base de datos. Estos sitios se ven así:

    Backup-Linux-Azure05

    Backup-Linux-Azure06

    A propósito, estos 2 sitios los saqué de http://www.freewebsitetemplates.com/

    Los sitios se encuentran en la máquina Linux en /var/www/html/hairstylesalon/ y en /var/www/html/lawfirm/ respectivamente, así que puedo respaldarlos usando el comando tar de la siguiente manera:

    tar cvfz /home/abarba/hairstylesalon.tar.gz /var/www/html/hairstylesalon/

    Voy a respaldar la ruta /var/www/html/hairstylesalon/ en el archivo /home/abarba/hairstylesalon.tar.gz que para efectos prácticos es un único archivo comprimido que contiene todos los archivos del sitio web.

    De igual manera respaldo el otro sitio web con tar cvfz /home/abarba/lawfirm.tar.gz /var/www/html/lawfirm/

    Backup-Linux-Azure07

    Ya tengo 2 archivos que son respaldo de mis sitios web, de modo que ya los puedo copiar a la máquina Windows que tiene Azure Backup y que puede hacer respaldos hacia la nube de Microsoft.

    Lo puedo hacer en cualquiera de los dos sentidos, es decir copiar los archivos desde el servidor Linux hacia el servidor Windows o halar los archivos desde el servidor Windows. En este ejercicio puse un servidor FTP en la máquina Linux y luego copiaré los archivos a la máquina Windows.

    El servidor FTP recomendado para Linux es el VSFTP (Very Secure FTP), el cual puedo usar para garantizar que un usuario de FTP quede “enjaluado” de modo que si intenta salirse del directorio no pueda hacerlo y de este modo no pueda afectar archivos de otros usuarios de FTP.

    Prímero instalo el servicio con yum install vsftpd y puedo subir el servicio con service vsftpd start

    Si quiero verificar que esté arriba el servicio puedo usar ftp localhost o netstat -na | grep :21

    Pero falta asegurar el servidor, para ello sugiero revisar el siguiente link de Red Hat. Igual con mucho gusto me pueden contactar si tienen dudas en este punto.

    Bueno, yo ya aseguré mi servidor FTP para que el usuario guacharo no se pueda salir de su entorno FTP.

    Ahora que ya hice lo anterior voy a mi máquina Windows.

    Lo primero que debo hacer es crear un archivo de respuesta para hacer el FTP de manera automática, de modo que pueda programar la tarea para ser ejecutada cuando yo lo requiera, por ejemplo en horas de la madrugada cuando ya haya bajado el sistema, los usuarios no estén conectados y haya hecho un backup en el servidor Linux. El archivo de mi ejercicio contiene lo siguiente:

    open 192.168.1.100
    guacharo
    stick2014$$
    hash on
    prom off
    bin
    mget *.gz
    bye

    Este puede ser un archivo plano con o sin extensión, en mi caso lo nombré server.txt

    Backup-Linux-Azure08

    ¿Qué significa cada una de estas líneas? Paso a explicarlas:

    open 192.168.1.100 – Abrir conexión al servidor FTP Linux con IP 192.168.1.10
    guacharo – Nombre del usuario
    stick2014$$ – Contraseña del usuario
    hash on – Esto es opcional, es para ver el progreso de la copia
    prom off – Que no me pregunte cuando descargo archivos con comodines como * o ?
    bin – Modo binario, así el archivo sea plano o ascii recomiendo usar este modo para garantizar su integridad
    mget *.gz – copiar todos los archivos con extensión .gz que son los que contienen mi respaldo
    bye - Desconectarse el servidor una vez se haya hecho la copia

    ¿Bastante fácil cierto? Una vez tenga estos parámetros puedo ejecutar lo siguiente desde una línea de comandos CMD o un prompt de PowerShell:

    ftp -s:.\server.txt

    En donde server.txt es el archivo que creé previamente con todos los parámetros de conexión.

    Observen cómo funciona:

    Backup-Linux-Azure09

    Una vez la tarea de copia de archivos terminó, se hace desconexión del servidor FTP.

    Ya tengo localmente los archivos de respaldo de los sitios web, observen que el respaldo de la base de datos lo puedo hacer usando un archivo de copia de archivos similar al que usé para descargar los archivos *.gz, sólo debo cambiar la extensión por *.sql:

    open 192.168.1.100
    guacharo
    stick2014$$
    hash on
    prom off
    bin
    mget *.sql
    bye

    Ya el resto es historia, teniendo los archivos localmente en la máquina Windows que tiene conexión a Azure Backup puedo llevar estos archivos a la nube de Microsoft Azure –Arriba se explica cómo configurar un servidor Windows para establecer esa conexión-.

    De este modo hemos hecho respaldo de una base de datos MySQL y dos sitios web de una máquina Linux hacia Azure, usando un salto a través de una máquina Windows que tiene los agentes de backup hacia Azure.

    Recuerden que pueden encontrar más información acerca de Cloud OS de Microsoft Aquí

    Espero les haya gustado esta entrega, ¡Nos vemos pronto!