Microsoft Azure Web Sites Always On

Cuando un sitio web no recibe peticiones durante un tiempo, el servidor pone el proceso que lo sirve en modo espera. Lo que consigue con ello es la liberación de recursos del sistema cuando el sitio está inactivo. Sin embargo, la principal desventaja de ello es que la próxima vez que se acceda a él, el usuario tendrá que esperar a que el mismo se cargue de nuevo en memoria.

Para evitar esta situación, la plataforma pone a nuestra disposición la opción Always On. Activando dicha característica Microsoft Azure lanzará un ping de manera automática al sitio web, asegurándose de que siempre está activo. Esta característica es importante para escenarios donde tenemos código ejecutándose en segundo plano. Por otro lado, es recomendable habilitar esta característica si estamos trabajando con Web Jobs, para que los mismos no se vean perjudicados por la descarga del sitio.

Para habilitarlo, basta con acceder al apartado CONFIGURE, en la sección general del Web site:

Web sites always on

Es necesario el modo Basic o Standard para poder habilitar esta opción.

Espero que sea de utilidad.

¡Saludos!

Reservar una IP para Microsoft Azure Web Sites

Una de las nuevas características que apareció este año es la reserva de IPs públicas. Sin embargo, a día de hoy estas reservas sólo están disponibles para los servicios Virtual Machines y Cloud Services, por lo que deja fuera de momento al servicio Web Sites.

Una comprobación interesante es que si tenemos varios sitios web dentro de una misma región, podemos comprobar a través de nslookup que la IP pública que utilizan es compartida entre ellos:

nslookup websites

Para conseguir que uno de los sitios tenga su propia IP pública, una opción que tenemos ahora mismo es configurar el binding SSL basado en IP, con el objetivo de forzar una IP reservada para este sitio. Para poder realizar esta configuración, el sitio debe estar en modo Standard y tener configurado un CNAME para el DNS. La forma de cambiar de un modo a otro es bastante sencilla, ya que sólo es necesario modificar el modo en el apartado SCALE:

web hosting plan mode

Para la configuración del dominio para el sitio, podemos recurrir a la siguiente documentación: Configuring a custom domain name for an Azure Web Site. En ella se pueden encontrar los proveedores de dominio más comunes y la forma de configurarlo en cada uno de ellos:

Configuring a custom domain name for a Azure Web Site

Otro requisito para la configuración del SSL binding es obtener un certificado. Es posible utilizar uno firmado por nosotros mismos, por lo que haremos uso de MakeCert para su creación. Esta acción podemos llevarla a cabo a través de Developer Command Prompt for VS2013, ejecutando lo siguiente:

makecert -r -pe -b 07/19/2014 -e 07/19/2019 -eku 1.3.6.1.5.5.7.3.1 -ss My -n CN=www.returngis.net -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -len 2048

Es muy importante saber que el Subject Name (-n) debe coincidir con el dominio personalizado que hemos asociado al sitio web. En la documentación oficial se explican otros métodos para obtener este certificado. Para poder subirlo a la plataforma es necesario exportar el mismo junto con la clave privada (.pfx). Para ello, podemos acceder al apartado de certificados de nuestra máquina y hacer uso de la acción export, o bien podemos utilizar PowerShell para realizar la misma tarea:

$mypwd = ConvertTo-SecureString -String "!MyPassW0rd" -Force -AsPlainText
get-childitem cert:\currentuser\my -dnsname www.returngis.net | export-pfxcertificate -filepath H:\download\sslcert.pfx -password $mypwd

Accedemos al portal y subimos el pfx a través de la sección certificates:

SSL Certificates

Los certificados y datos utilizados son fictícios. En ningún caso se está mostrando información real.

Una vez que el certificado está subido correctamente, basta con seleccionar los valores en la sección ssl bindings:

ssl bindings section

Justo en este momento se nos alertará de que este cambio en la configuración supone un aumento en la facturación, ya que SSL supone un coste adicional.

SSL binding pricing impact

Más información.

Una vez guardados los cambios, el apartado de quick glance se actualizará de este estado:

VIP No Ip-based SSL Binding

A este otro:

Virtual IP Address for Azure Web Site

Espero que sea de utilidad.

¡Saludos!

OpenCMS en Microsoft Azure Web sites

Uno de los retos de la semana pasada fue subir OpenCMS a la plataforma Microsoft Azure. Después de valorar diferentes escenarios (Cloud Services, Web sites o IaaS), en este post voy a contar cómo es posible montar este CMS sobre Microsoft Azure Web sites.

Creación del sitio web

El primer paso antes de la instalación es la creación del sitio web dentro de la plataforma Microsoft Azure. Para ello, hacemos clic sobre el botón New > Compute > Web site > Quick create y elegimos un nombre para el DNS del sitio y un hosting plan.

new web site opencmsazure

Una vez que la creación del sitio haya finalizado, accedemos al apartado CONFIGURE y activamos Java. Confirmamos además que el servidor seleccionado en Tomcat y guardamos los cambios.

Web site Java version and Web container Tomcat

Descarga de OpenCMS

Una vez que tenemos el web site preparado, necesitamos descargar el archivo .war desde la página oficial del gestor de contenidos.

Podemos utilizar un cliente FTP, o el propio Explorador de Windows, para acceder al web site y copiar el archivo dentro de /site/wwwroot/webapps/:

opencmswar webapps

MySQL

Si bien es cierto que OpenCMS soporta diferentes bases de datos, en este post vamos a crear una base de datos MySQL, haciendo uso de la App Store de la plataforma: Hacemos clic en New > Store. Se abrirá un cuadro de diálogo donde seleccionamos ClearDB MySQL Database:

ClearDB MySQL Database

En cuanto al plan a elegir, la inercia lleva a utilizar el modo free. Sin embargo, después de varias pruebas tuve varias instalaciones fallidas debido al número de conexiones que se llevan a cabo durante la importación de los módulos. El plan que más se ajustó, al menos durante la instalación, fue el plan Saturn. Sería necesario testear si es posible modificar el plan por uno inferior una vez que la instalación haya completado.

Plan Saturn and mysql name

Aceptamos la configuración para la creación de la nueva base de datos.

Instalación de OpenCMS

El último paso es la instalación de OpenCMS sobre Microsoft Azure Web sites. La URL a la que debemos acceder es http://[YOUR_WEBSITE_NAME].azurewebsites.net/opencms/setup:

opencms setup

Una vez que se han comprobado el acceso al directorio, que Java está instalado, el tipo servidor web, etcétera, es necesario facilitar los datos de conexión a la base de datos. Para obtener los mismos, debemos acceder al apartado de Add Ons en el menú lateral de la plataforma, seleccionar la base de datos MySQL y hacer clic sobre la opción Manage del menú inferior:

Addon MySQL Manage

Esta opción nos abrirá una nueva ventana a la página de www.cleardb.com, donde podremos localizar la información en la sección Endpoint Information:

cleardb endpoint information

Con la información seleccionada en la imagen anterior, podemos completar la siguiente sección de asistente:

MySQL Database setup OpenCMS

Es recomendable hacer uso de distintas credenciales para la instalación y la conexión al CMS. En este post se utilizan las mismas con el objetivo de simplificar los pasos.

Si los datos proporcionados son los correctos, se validará la conexión a la base de datos, mostrará un aviso relacionado con la variable max_allowed_packet (se obviará en este post), solicitará la eliminación de la base de datos con el objetivo de volver a crearla, se confirman los módulos a instalar, mantenemos las opciones por defecto del asistente y comenzamos con la importación de los módulos. Este proceso puede tardar varios minutos:

Import Modules

Comprobación de la instalación

Una vez que haya finalizado el asistente, el último paso es comprobar que la instalación ha finalizado correctamente. Para ello, debemos acceder a http://[YOUR_WEBSITE_NAME].azurewebsites.net/opencms/opencms/.

OpenCMS on Azure

Ampliando los frontales

Gracias a Microsoft Azure Web sites, la forma de escalar el servicio es bastante sencilla, ya que sólo debemos seleccionar el tamaño y el número de frontales a través de la sección SCALE, en el apartado Capacity:

Scale capacity OpenCMS

De manera automática, el contenido desplegado durante la instalación será replicado al resto de los nodos.

Espero que sea de utilidad.

¡Saludos!