Gestión, uso y aplicación de Azure Storage Queue

El Azure Queue storage es un servicio cuyo objetivo consiste en el almacenamiento de un gran número de mensajes, los cuales pueden ser accedidos desde cualquier lugar a través de llamadas autenticadas mediante HTTP o HTTPS. Para llevar a cabo este almacenamiento se emplea una estructura de datos basada en la cola.

Creación de una cola en Azure

El primer paso para poder utilizar una cola de empieza por la creación de una storage account. Este proceso no conlleva dificultad alguna y es bastante dirigido. Lo primero que hay que hacer es entrar en el portal de azure, y después pulsar en New > Data + Storage > Storage Account

azure storage account 1

A continuación nos solicitarán los diversos datos de la storage account, nombre, tipo de localización, etc. Un punto muy importante a tener en cuenta es la selección del modo de creación de la cuenta: modo clásico o modo RM (resource manager), ya que la gestión y uso de las colas de momento no es posible hacerla en Powershell en modo RM, pero sí en modo clásico.

Una vez creada la cuenta, aparte de las colas, contamos con servicios de ficheros, tablas y blobs.

azure storage account 2Y entre la información que nos ofrece el panel de nuestra storage account creada sobre las colas, todo lo necesario (nombre de la cuenta, claves de acceso y cadenas de conexión) para poder acceder a este recurso externamente.

azure storage account 3

Gestión de la storage account en Powershell

Hay que diferenciar aquí lo que se puede hacer en modo clásico o modo RM. En ambos modos, se pueden llevar a cabo las siguientes operaciones sobre la cuenta:

  • Creación.
  • Eliminación.

El modo RM permite además de otras cosas, por ejemplo, regenerar la storage key de una cuenta

Uso de las colas

En lo que se refiere al uso del servicio de las colas (creación, eliminación), así como las operaciones típicas sobre estas (inserción de un mensaje, extracción…), solo es posible hacerlo en modo clásico, puesto que en el modo RM no hay cmdlet disponibles de momento para ello. En los ejemplo se muestran los mismos.

Ejemplos

Como ejemplos sencillos de creación, inserción de un elemento, extracción del mismo y eliminación de una cola, tendríamos los siguientes:

En .NET, puede actuar indistintamente sobre una storage account creada en modo clásico o RM:

En Powershell, sólo se puede utilizar una cola creada de una storage account creada en modo clásico:

Y esto es todo por mi parte. Espero haber mostrado un poco este servicio y las posibilidades del mismo.

Despliegue de plantillas json con azure resource manager

A través de JSON es posibles generar plantillas que automaticen despliegues en Azure Resource Manager, lo que nos permite en pocos minutos construir complejas infraestructuras en Azure RM.

¿Qué es JSON?.

JSON (JavaScript Object Notation) es un formato para el intercambios de datos, básicamente JSON describe los datos con una sintaxis dedicada que se usa para identificar y gestionar los datos. JSON nació como una alternativa a XML, el fácil uso en javascript ha generado un gran número de seguidores de esta alternativa. Una de las mayores ventajas que tiene el uso de JSON es que puede ser leído por cualquier lenguaje de programación. Por lo tanto, puede ser usado para el intercambio de información entre distintas tecnologías.

¿Cómo desplegamos una plantilla JSON?.

Hay múltiples formas de desplegar una plantilla JSON:

  • A tráves de powershell.
  • A tráves de Visual Studio.
  • A través del portal de Azure.

Está última alternativa es la que vamos a comentar en nuestro blog hoy.

Despliegue de una plantilla JSON desde el portal de Azure RM.

Lo primero que tenemos que hacer es conectarnos al portal de Azure RM, desde el enlace https://portal.azure.com.

Una vez que hayamos abierto sesión, vamos a la opción de nuevo,marketplace,todo y realizamos una busqueda con el concepto JSON.

image

En el resultado nos aparecera una opción que es Implementación de plantillas

image

Una vez seleccionada, elegimos la opción Crear

image

Nos aparecera un menú con las opciones de configuración de la plantilla, debemos rellenarlos todos correctamente para poder terminar la configuración.

Errores tan comunes cómo nombres no permitidos o recursos ya existentes nos impedirán terminar satisfactoriamente el proceso de aplicación de la plantilla.

image

La primera opción y muy importante es la de Editar plantilla, a través de esta opción definimos la plantilla JSON. En nuestro ejemplo vamos a utilizar una plantilla muy interesante que nos permite desplegar un balanceo de Internet en Azure RM, con dos máquinas virtuales, una red virtual, dos NICs, un storage y un balanceador.

Simplemente pegamos la plantilla sobre el editor y elegimos la opción de guardar

image

Una vez guardada la plantilla, a través de la opción Parámetros configuraremos todos aquellos datos que han sido definidos dentro de la plantilla como elementos a configurar

image

Una vez que hemos rellenado los campos definidos en la plantilla, debemos seleccionar la suscripción sobre la que vamos a asociar los nuevos recursos

image

También tendremos que asociar un Grupo de recursos a los recursos que vamos a crear

image

Por último tendremos que crear los Terminos legales de la plantilla y ya podemos proceder a su creación

Después de unos pocos minutos si todo ha sido definido correctamente tendremos todos los recursos creados y configurados.

¿De dondé puedo descargar las plantillas?.

https://azure.microsoft.com/en-us/documentation/templates/

https://github.com/Azure/azure-quickstart-templates

 

Espero que os pueda ser útil esta entrada en nuestro blog.

José María Genzor

jmgenzor@plainconcepts.com

Mantén tu Azure PowerShell al día con PowerShell Get

Probablemente mientras estoy escribiendo estas líneas, un nuevo servicio o característica está apareciendo en Azure. Para mantenernos a la par con este ritmo tan frenético de evolución necesitamos tener las herramientas con las que operamos en Azure igualmente actualizadas. Mi compañero Manuel Marín dedica la mayoría de sus publicaciones a las herramientas de línea de comandos multiplataforma, disponibles para Windows, OSX y GNU/Linux; mientras que servidor se centra en PowerShell. Actualmente las herramientas de Azure para PowerShell se pueden instalar de dos formas:

  • Mediante Web Platform Installer, WebPI para los amigos. Se trata de una herramienta que nos permite instalar automáticamente componentes, en su gran mayoría para uso con IIS. En ocasiones encontramos paquetes individuales no relacionados necesariamente con el mundo web, como es el caso de las herramientas de administración de Azure a través de PowerShell. Esta forma de instalación es realmente intuitiva, amena y se hace mediante interfaz gráfica.
  • Desde la Galería de PowerShell, usando PowerShell Get. Esta forma de instalación es también trivial e incluso más rápida que la basada en WebPI, pero se realiza a través de línea de comandos desde la propia PowerShell. Nos vamos a centrar en este método, ya que es mucho más sencillo de mantener al día.

Dado que nos vamos a centrar en el método de la Galería de PowerShell, conviene no mezclar ambos métodos de instalación. Así que en el caso de que hayamos instalado las herramientas mediante WebPI, las desinstalaremos convenientemente desde Programs and Features. Una vez desinstalado procedemos con PowerShell.

La Galería de PowerShell

La Galería de PowerShell no es ni más ni menos que un repositorio central de scripts y módulos de PowerShell, disponibles para descargarse al estilo apt-get desde nuestra línea de comandos. Para poder descargar estos elementos, se vale a su vez de un módulo llamado PowerShellGet. ¿Cómo lo obtenemos? Dependerá de nuestra versión de Windows:

  • Windows 10 / Windows Server 2016. No es necesario hacer nada, ya tienes todo lo necesario.
  • Windows 7 SP1 / Windows Server 2008 R2 SP1 , Windows 8.1 / Windows Server 2012 (R2). Hay dos opciones:

image

Instalando los módulos de Azure

Teniendo ya nuestro PowerShellGet preparado –recuerda que si estás en Windows 10, ¡no tenías que hacer nada!-, instalar las herramientas de Azure es completamente trivial. Basta con ejecutar este script como administrador del sistema:

Esto nos debería dar una salida por pantalla pantalla similar a la siguiente:

image

¿Hecho? Empezar a trabajar con Azure desde PowerShell será tan sencillo como:

Actualizando o desinstalando módulos

Y esto es lo mejor, ya que mantener al día nuestra herramienta se vuelve realmente trivial:

Y la desinstalación:

Sabiendo esto, es incluso posible programar una tarea que vele por que nuestras herramientas se mantengan actualizadas ejecutando los cmdlets necesarios en los momentos adecuados.

¡Happy PowerShell y Azure!

Enlace relacionado: Cómo instalar y configurar Azure PowerShell

Monitorizar eventos con PowerShell

En una entrada anterior de este blog, se describía un sencillo sistema con el que monitorizar el espacio libre en los discos de un sistema. Esto ayuda a prevenir problemas como que un servidor de máquinas virtuales se quede sin espacio prematuramente, lo que provoca un bloqueo total de todos los sistemas virtualizados.

Montar un sistema de notificaciones push para un sencillo script que vigila el espacio libre en disco puede parecer un poco overkill para la situación, así que… ¿Por qué no intentar exprimirlo un poco mas? Siguiendo en la línea de monitorizar de un servidor hay una parte que es especialmente útil, sobre todo para diagnosticar problemas: El visor de eventos.

Se abre el telón: Get-EventLog

Este pequeño cmdlet se encarga de leer los eventos del sistema, permitiendo además capacidades de filtrado para poder obtener aquellos que sean de interés para el usuario. La forma más básica de usarlo es invocándolo con el parámetro “-list” ,  que devuelve un listado de todos los logs que se pueden consultar.

Para consultar un log en concreto, se usa “Get-EventLog –LogName <nombreLog>”, donde nombreLog puede ser, por ejemplo “Application” o cualquier otro valor devuelto por la opción “-list”. Además de consultar un log determinado, se puede filtrar de varias formas diferentes, como por ejemplo con el parámetro “-newest <cifra>”, para recoger los últimos cifra eventos registrados en el sistema, o el parámetro “-entrytype <tipo>” para filtrar la respuesta por los siguientes tipos: Error, FailureAudit, Information, SuccessAudit o Warning. Cada uno de estos tipos se corresponde con los tipos que se pueden encontrar en el Visor de Eventos.

Juntando las piezas

Se tiene un sistema para enviar notificaciones, se tiene algo que se desea monitorizar, se tiene una forma de acceder a lo que se quiere vigilar, y se tiene un temporizador con el que invocar todo automáticamente. Con estas cuatro piezas, ya es posible montar un sistema que vigile los eventos generados en el sistema. En este caso, el script solicita los eventos de error guardados en el log “Application”, que se hayan generado en la última hora.

El resultado

Ejecutar este script, genera la siguiente salida en PowerShell (el resultado obviamente cambiará en función del momento y del equipo utilizado).

resultShell

Y como no podía ser de otra forma, slack recibe la notificación directamente desde el script PowerShell. En entornos en los que sea necesario vigilar específicamente una aplicación se pueden hacer filtrados adicionales, no ya a nivel de consulta de Get-EventLog, sino utilizando el famoso Where-Object para filtrar, por ejemplo, por una subcadena del mensaje de error que resulte de especial interés.

slack

Finalmente, y al igual que el script de monitorización de discos del que ya hablamos antes, se puede crear una tarea programada periódica que compruebe el registro de eventos en busca de errores.

Conclusiones

Como se ha visto en el código, se pueden pedir los eventos para la última hora, o para cualquier intervalo de tiempo. Teniendo en cuenta que consultar el registro de eventos puede ser una operación costosa (dependiendo del número de eventos se esté consultando), sería deseable que el intervalo mínimo de consulta de eventos sea una hora, en vez de unos pocos minutos, cuando se está consultando un log que tenga un tamaño apreciable.

Una alternativa interesante consiste en programar un trigger de la tarea programada para que se dispare con un evento, en vez de a un intervalo prefijado. De esta forma, si se tiene conocimiento sobre el tipo de evento que se quiere vigilar, se puede obtener la notificación push prácticamente en el momento en el que se lanza el evento. Esto se puede ver más claramente en la siguiente captura de pantalla. Aunque en este caso, cabe la posibilidad de usar un script mucho más específico, que mande la notificación push adecuada, sin tener que entrar a leer los eventos del registro, filtrarlos, y generar el mensaje automatizado.

newTrigger

Evento: Conectando Microsoft Azure con Amazon Web Services (Almería)

¡El próximo jueves 18 de febrero vuelvo a las tierras del sur donde estaré dando una reedición de la sesión que Alberto Marcos y servidor dimos en el Global Azure BootCamp 2015!

  • Título: Conectando Microsoft Azure con Amazon Web Services
  • Fecha: jueves, 18 de febrero de 2016
  • Hora:  12:15 – 14:15
  • Ubicación: Sala de Grados del Edificio de Gobierno – Universidad de Almería, Almería
  • Abstract: ¡Microsoft Azure y Amazon Web Services pueden vivir juntos! En esta charla mostraré cómo podemos establecer un escenario híbrido que nos permita conectar ambas plataformas de cloud computing y una serie de escenarios de ejemplo donde podemos aprovechar esta integración.
  • Registro: No es necesario registrarse, ¡entrada libre!
  • Ponente: Carlos Milán Figueredo – Enterprise Team Lead (Plain Concepts)

¡Allí os espero!

StorSimple Virtual Array, un nuevo miembro en la familia

Esta semana me gustaría hablar de otra solución dentro de la familia StorSimple, que Microsoft nos presentó a mediados del mes de Diciembre del año pasado. Se trata del StorSimple Virtual Array. De momento está en preview, y el servicio sólo figura en dos DataCenters. Veamos en qué consiste y qué nos ofrece.

StorSimple Virtual Array (Storsimple VA 1200), supone otra manera de proporcionarnos storage híbrido. Esta vez la solución no viene de la mano de un dispositivo físico , sino que se trata de una máquina virtual  que descargaremos desde el portal clásico de Azure, y  alojaremos en un Hypervisor de nuestro Datacenter. Gracias a ella podremos expandir nuestra capacidad de almacenamiento a la nube, así como  plantear escenarios de backup y  disaster recovery.

Requisitos mínimos del Virtual Array

Para poder desplegarlo debemos reservar una serie de recursos , y asociarlos a la máquina virtual:

  • Número de procesadores: 4
  • Memoria RAM : 8 GB
  • Tamaño disco: para sistema : 80GB y para datos: 500GB
  • Una interfaz de red virtual

Los Hypervisores soportados como host deben ser Windows 2008 R2 SP1 o superior y VMware ESXi 5.5 o superior.

Características

El dispositivo permite  2 modos de funcionamiento: como  File Server empleando SMB o como dispositivo iSCSI. Los volúmenes pueden estar alojados únicamente en local o puede emplearse  un almacenamiento en dos niveles (local y en la nube), en el que para provisionarlo, se deberá disponer en local de al menos un 10% del espacio total.  Para poder gestionar y configurar  el virtual Array tenemos a disposición varias herramientas :

– Interfaz web local: es un portal web al que accederemos introduciendo la ip de nuestra VM. Permite administrar gran parte de las características: el modo, los volúmenes, etc.

– StorSimple Manager: se trata del panel de Azure desde el que controlaremos los dispositivos StorSimple.

– Command Line Interface:una interfaz de comandos en Powershel para poder interactuar con el Virtual Array,

Limitaciones de almacenamiento

En cuanto al almacenamiento encontramos las siguientes:

– Capacidad máxima: cada Virtual Array puede gestionar como máximo 64 TB (entre la nube y local) o 6,4TB si se trata de almacenamiento local.

– Volúmenes: para almacenamiento local y en la nube un máximo de 20TB y, para local 2TB.

Asímismo el espacio va a estar siempre condicionado al que tengamos disponible en nuestra infraestructura.

Backup y disaster recovery

Es aquí donde podemos ver las posibilidades que ofrece,  permitiendo hacer cloud snapshots, backups incrementales y bajo demanda.  Estos backups se registrarán en un catálogo, que  podremos seleccionar posteriormente, ofreciéndonos a su ver la posibilidad de restaurar los archivos en otra ubicación. Gracias a la característica de Item Level Recovery, implementada en su modo de funcionamiento como File Server, los usuarios podrán restaurar ellos mismos elementos eliminados,

En cuando a los escenarios de disaster recovery, podremos hacer failover de un virtual array,  y restaurarlo en otro que tengamos previamente activo en nuestro StorSimple Manager.

Architecture

Después de tener una visión general del producto, podemos decir que es una herramienta bastante completa para pequeña empresa, combinando soluciones de almacenamiento y backup en un solo elemento. Y con esta conclusión me despido hasta el próximo post.