Windows Azure Virtual Machines

Otra de las grandes noticias de la plataforma es que tenemos la posibilidad de crear máquinas virtuales en la nube!

Resumiendo y simplificando un poco podemos decir que es una especide Hyper-V en la nube, dónde podemos desplegar cualquier tipo de sistema operativo, ya sea de plataforma Microsoft o de plataforma Linux, sí, Linux.

Utilizando este tipo de máquinas tendremos todo el control sobre la máquina, sobre lo que instala, se actualiza y demás…pero claro, a costa de tener que hacer más cosas, tener que gastar más tiempo y dinero en tares que no son propias de la aplicación. En un entorno PaaS como el que teníamos disponible hasta hace poco nos podemos centrar en el desarrollo de la aplicación y olvidarnos de muchos aspectos de la infraestructura.

Disponer en un entorno de máquinas virtuales con estado también nos va a permitir otros escenarios, como la instalación de un SQL Server, un SharePoint, un Active Directory o cualquier otro producto que consideremos.

En este post vamos a ir viendo cómo es posible crear una máquina virtual y poco a poco iré entrando en detalle en alguna cosa que hay que conocer si queremos trabajar con VM de Azure.

Desde el portal de Windows Azure podemos crear una VM, usando por ejemplo la galería:

49

En la galería podemos encontrar ya algunas plantillas que podemos usar para crear nuestra máquina virtual; Windows 2008. Windows 2012, CentOS, SUSE, OpenSUSE, Ubuntu etc

Estas son simplemente algunas de las que a día de hoy existen, pero seguro que cada vez habrá más. Por ejemplo, existe ya una preview de una plantilla que instala SQL Server 2012.

A su vez también Microsoft dispone de diversos partners que ofrecen también distribuciones Linux certificadas que pueden desplegarse en Windows Azure.

Claro está, podríamos también subir nuestras imágenes (plantillas) o generarla a partir de una máquina ya desplegada.

50

El siguiente paso nos pide que le demos un nombre a la máquina y una contraseña para el usuario administrador.

Otro tema de los temas importantes es que debemos elegir el tipo de máquina que queremos usar, que marca los recursos asignados.

Como podéis ver se elige el tamaño de la máquina, como se hace cuando se despliega un Cloud Service (Web-Worker role). Eso realmente es así porque, aunque aquí no lo veamos, cuando Windows Azure aprovisiona una nueva máquina virtual está creando un Cloud Services implícito dónde despliega una máquina virtual con estado.

51

En el siguiente paso podemos elegir si queremos crear la máquina en un servicio independiente o si queremos conectarla a otra máquina.

52

Dos máquinas conectadas estarán en el mismo grupo de disponibilidad. En este caso lo que hace Windows Azure es desplegarla dentro del mismo servicio.

Windows Azure ofrece para una máquina un SLA del 99,9%, 99,95% si ponemos dos dentro del mismo grupo de disponibilidad, es decir, dentro del mismo servicio. Cuando le pedimos a la plataforma que las establezca en el mismo grupo ésta coloca cada máquina virtual en un fault domain diferente para asegurar que si una máquina cae la otra esté disponible.

60

Si la máquina la establecemos como standalone podemos crear un nuevo grupo de disponibilidad, para que cuando creemos la segunda máquina podamos asociarla.

Es importante comentar, que para escalar las máquinas virtuales no disponemos de las mismas capacidades que si usáramos Cloud Services.

Por ejemplo, si queremos tener dos máquinas en balanceo, somos nosotros los que tenemos que crear las dos máquinas conectadas, dentro del mismo grupo de disponibilidad.

Dos máquinas que están dentro del mismo grupo de disponibilidad están dentro del mismo servicio, se pueden comunicar entre ellas y se las puede configurar para que balanceador de Windows Azure haga balanceo sobre un determinado puerto.

53

Recordad también, que Windows Azure dispone de un API de administración REST que permite realizar todas las acciones que están disponibles en el portal, ya que éste hace uso del mismo API que cualquiera de nosotros podría utilizar.

Así mismo existen Sdks para trabajar desde plataforma Microsoft, Linux y MAC. https://www.windowsazure.com/en-us/develop/downloads/

Una vez terminados los pasos del Wizard Windows Azure se encargará de aprovisionar la máquina.

 

54

En la parte inferior podremos ver diversas acciones que podemos hacer; conectarnos a la máquina, reiniciarla, pararla, añadirle un disco, quitárselo, generar una imagen (plantilla) a partir de la máquina virtual o borrarla.

Si la máquina es Windows nos podremos conectar por RDP, si es Linux podremos usar otras herramientas como Putty o VNC si lo instalamos.

55

Un concepto que es importante tener claro es la diferencia entre discos e imágenes. Los dos son ficheros VHDs que se almacenan en Windows Azure Storage, pero sirven para cosas diferentes.

Cuando creamos una máquina virtual, ésta monta un disco que está en el storage.

Cuando creamos una máquina desde una imágen, se hace una copia del VHD y se monta el disco a partir de la copia.

Nosotros podemos crear imágenes con la acción “capture” (tras haber hecho un sysprep) o simplemente subir nuestros propios VHDs. Se pueden migrar máquinas que estén en un entorno local  Hyper-V a la nube simplemente  subiendo el VHD (o viceversa), sin ninguna acción adicional.

Una máquna virtual tiene que tener cómo mínimo un disco, el del sistema operativo, pero también se le pueden asociar (attach) discos adicionales de datos.

El disco del sistema operativo puede tener como máximo 127 Gb y puede tener discos adicionales hasta 1TB. El número de discos depende de cada versión.

56

Otro tema importante a conocer son los endpoints, que no son más que los puertos y protocolos a través de los cuáles se podrá acceder desde fuera de Windows Azure.

A nivel de comunicación, recordad que dos máquinas dentro del mismo grupo de disponibilidad se pueden comunicar sin problemas. Si queremos escenarios más complejos con conectividad entre diferentes máquinas virtuales, aplicaciones desplegadas en Cloud Services o incluso con entornos on-premise, tendremos que usar Virtual Network, otra de las novedades de la plataforma.

También, si queremos que las IPs de las máquinas se mantengan, tendremos que usar Virtual Network.

Por defecto, cuando se crea una máquina virtual, se crea un único endpoint para permitir la conexión remota, RDP en el caso de máquinas Windows.

57

Se pueden añadir los endpoints que se consideren, indicando el puerto y el protocolo.

Si dos máquinas están en el mismo grupo de disponibilidad podremos crear un endpoint simplemente asociándolo a otro que ya exista. De esta manera, Windows Azure sabrá que tiene que balancear la carga entre las N máquinas del grupo de disponibilidad para el puerto y protocolo indicado.

58

Como podéis ver, se puede elegir el protocolo UDP, otra de las novedades de la nueva versión!

También por último destacar que existe un campo que nos pide el puerto público y otro para el puerto privado.

De esta manera, una aplicación que haga uso de un puerto, podemos exponerla por otro puerto y será el balanceador el que se encargue de redirigir el tráfico del puerto público al privado.

Tanto el protocolo UDP como el “post forward” de puertos está también disponible para Cloud Services, lo que por ejemplo va a posibiltar escenarios dónde desde fuera de la nube podamos realizar conexiones contra instancias concretas de un servicio.

59

Windows Azure Web Sites (5/5): Conectarse a MySQL

Como veíamos en post anteriores la nueva versión de Windows Azure ofrece la posibilidad de disponer de base de datos MySQL.

El portal permite crear una base de datos MySQL, pero comentar que este servicio no es ofrecido directamente por Microsoft, sino por cleardb, uno de los numerosos partners que están colaborando con Microsoft para ofrecer soluciones sobre Window Azure.

35

A través del portal no se puede realizar la administración. En este post veremos cómo poder conectarnos a las base de datos usando MySQL WorkBench.

Desde el portal de administración podemos ver los datos del servidor y de la base de datos y éstos son los que tendremos que usar.

29

30

En este caso estoy usando MySQL WorkBench, pero podría ser cualquier otro cliente de MySQL.

 

31

32

Podemos añadir una nueva conexión, indicando los valores que hemos obtenido desde el portal de administración de Windows Azure.

33

Una vez hecho, ya estaremos conectados y podremos hacer las labores que necesitemos sobre la base de datos.

34

Windows Azure Web Sites (4/5): Integración con TFS y Git

Como hemos comentado en varias ocasiones, Windows Azure Web Sites permite integrarse con TFS y con Git. A continuación veremos cómo configurar esta integración y qué nos puede aportar.

Desde el portal de administración podremos acceder a ambas opciones, sólo puede configurarse una a la vez.

36

Si seleccionamos la opción de integración con TFS deremos indicar la URL de nuestro TFS Preview (TFS Preview es la versión en la nube de Team Foundation Server).

Si no disponemos de una cuenta podremos crearnos una directamente, el servicio en la nube a día de hoy es gratuito.

Si no conocéis la versión en la nube de TFS os recomiendo este video de mi compañero Jose Luis Soria.

37

Una vez tenemos nuestro servicio e indicamos la URL, nos autenticaremos con nuestro LiveID. Nos saldrá una ventana como la siguiente ya que ya estamos autenticados.

38

Seleccioamos el proyecto de TFS al cual queremos conectarnos:

39

Y ya está, el Web Site está “linkado” al proyecto de TFS Preview!

Una vez que lo tenemos unido, tenemos que ver cómo podemos trabajar y cómo podemos desplegar aplicaciones que está en el TFS a nuestro Web Site.

40

 

Desde Visual Studio 2010 (o 2012) podremos conectarnos a TFS Preview, empleando la URL del mismo, dónde una vez autenticados podremos ver los proyectos que existen.

Comentar que si usáis Visual Studio 2010 es necesario instalarse una actualización que permite conectarse a esta versión, versión que usa autenticación con LiveID.

41

42

Una vez nos conectamos al TFS, la manera de funcionar es cómo trabajar con un Team Foundation Server on-premise, no hay ninguna diferencia! Podemos subir nuestros fuentes, trabajar con workItems, tener informes etc…Casi toda la funcionalidad de la que dispone una versión on-premise.

La única peculiaridad que tenemos que conocer, es que cuando hemos unido el Web Site al proyecto de TFS se ha creado una build de integración continúa, que provoca que cada vez que se hace un checkin se compile la solución y se despliegue de forma automática en el Web Site.

Si creamos un nuevo proyecto, una aplicación ASP.NET MVC por ejemplo, y hacemos checkin, podremos ver cómo se lanza una nueva build.

43

 

45

Esta build no tiene nada especial, salvo que se le indica que debe desplegar el resultado de la compilación en un Web Site de Windows Azure.

46

 

Una vez que termine la ejecución de la build podremos acceder al site a través de la URL y ver el site desplegado!

28

 

y en la pestaña de despliegues podremos ver un histórico de los despliegues realizados y si quisiéramos, volver a una versión anterior.

 

47

 

Y finalmente mencionar, que si quisiéramos la integración con Git el sistema sería muy similar, pero usando Git con herramienta cliente. Desde el portal se ofrece la opción de descargarse un cliente Git y los comandos básicos que permiten desplegar la aplicación usando Git.

48

Windows Azure Web Sites (3/5): Desplegar desde Visual Studio y WebMatrix

En los post anteriores veíamos como de fácil es posible crear un WordPress y cómo conectarnos por FTP.

En este post veremos cómo es posible usar WebMatrix y Visual Studio para desplegar Web Sites en Windows Azure. Con el primero usaremos el WordPress creado anteriormente y para ver el segundo caso crearemos un nuevo Web Site dónde desplegar una aplicación ASP.NET MVC.

Si partimos de WordPress creado anteriormente, veremos que en la parte inferior tenemos un botón “WebMatrix”.

16

Si seleccionamos esta opción podemos descargarnos el Web Site a nuestro equipo, usar WebMatrix para realizar modificaciones y desplegar los cambios de forma muy sencilla.

Si no lo tenemos instalado no es necesario hacer nada, el proceso de descarga se encarga de instalar WebMatrix si es necesario, descargarse los ficheros, instalar MySQL etc…todo para poder tener el entorno de desarrollo en nuestro equipo local.

17

Una vez tenemos descargado el portal, haremos las modificaciones que creamos convenientes, pudiendo publicar los cambios a través de la acción “Publicar», la cuál nos mostrar un wizard de publicación similar a este que muestro a continuación, donde se indican los ficheros que han sido modificado y por tanto, lo que se desplegarán al Web Site de Windows Azure.

 

18

y desde la opciones de configuración podemos ver la configuración del servidor dónde se está realizando el Web Deploy, que no son más que los datos del servidor de Windows Azure.

19

Una vez que hemos visto como desplegar desde WebMatrix, veremos cómo hacer lo mismo con Visual Studio, en este caso, publicando una aplicación ASP.NET MVC 4.

Lo primero será crear un Web Site:

20

Una vez lo tenemos, crearemos desde Visual Studio una aplicación ASP.NET MVC 4. En este caso la aplicación es lo de menos, nos vale con lo que se genera por defecto. No hay que hacer ningún cambio especial para poder funcionar en Windows Azure.

22

23

Una vez que tenemos la aplicación, podremos usar la acción “Publicar” para hacer un Web Deploy directamente sobre el Web Site recién creado.

Desde el portal de Windows Azure podemos descargar los datos del servidor sobre el cuál hacer el despliegue, los cuáles importaremos en el wizard de publicación.

Como veis el proceso es prácticamente igual que el visto con WebMatrix, pero desde Visual Studio.

21

24

25

26

27

 

Una vez realizada la acción ya tendremos el portal disponible!

 

28

Windows Azure Web Sites (2/5): Conexión por FTP

En el post anterior comentábamos que había varias maneras de acceder a un Web Site, por ejemplo para desplegar o actualizar una aplicación.

Una de ellas es conectarnos por FTP.

Para ello, lo único que tenemos que hacer es establecer las credenciales con las que queremos conectarnos.

Tanto si queremos usar la integración con Git como si queremos usar la conexión FTP es necesario hacer este paso ya que ninguno de estos dos métodos permite autenticación con LiveID.

09

13

 

Una vez lo hayamos hecho, ya podemos usar cualquier cliente FTP, en este caso uso FileZilla, para conectarnos y actualizar el contenido.

14

15

Más sencillo imposible!

Windows Azure Web Sites (1/5): No puede ser más fácil!

Como seguro que todos ya sabéis el pasado 7 de junio Microsoft anunció la disponibilidad de nuevas y esperadas funcionalidades en Windows Azure.

Durante los próximos post quiero enseñaros de manera resumida las mejoras incluidas en la plataforma, las cuáles sin lugar a duda, ponen a Windows Azure como una de las mejores soluciones de Cloud del mercado.

He decidido empezar por Windows Azure Web Sites, una tecnología tan sencilla como potente, que viene a simplificar enormente el despliegue de aplicaciones Web en Windows Azure.

Lo primero que hay que tener en cuenta, es que Azure Web Sites no viene para nada a sustituir a Cloud Services (Web/Worker roles), sino es una alternativa posible para ciertos tipos de aplicaciones más sencillas, que no necesitan de la versatilidad y potencia que puede ofrecer Cloud Services (antes Hosted Services).

Windows Azure Web Sites, simplificando, puede entenderse como una especie de hosting dónde de forma rápida y sencilla podremos desplegar aplicaciones Web en ASP clásico, ASP.NET, PHP o Node.js.

Además de poder desplegar nuestras aplicaciones web,una de las gran ventajas es que tiene plantillas para generar web sites con diversos gestores de contenidos,lo que hace que desplegar un WordPress o un Drupal sea cuestión de minutos.

A modo de resumen, algunas peculiaridades son:

  • Soporta ASP clásico, ASP.NET, PHP y Node.js.
  • Puedes desplegar aplicaciones que usen el Framework 2.0 o 4.0.
  • Desde un site pueden usarse otros servicios de Windows Azure; SQL Azure, sistemas de almacenamiento, AppFabric cache, Service bus…
  • Pueden usarse base de datos MySQL.
  • Se integra perfectamente con Visual Studio y WebMatrix.
  • Puede accederse por FTP.
  • Dispone de integración con Git y TFS.
  • Permite usar un entorno compartido o un entorno reservado.
  • En el entorno compartido existe la posibilidad de disponer hasta 10 Web Sites gratuitos.
  • De momento no se pueden subir certificados propios.
  • En modo reservado permite a día de hoy “custom domains”, el modo shared no ( de momento).

y si lo comparamos con Cloud Services, algunas de las cosas que no pueden hacerse son:

  • No permite desplegar aplicaciones multilayer, Web Sites es para aplicaciones que corren todo en la misma máquina.
  • No se pueden personalizar aspectos de la máquina, como podría ser modificar la configuración del IIS.
  • No permite aplicaciones con autenticación Windows.
  • No permite conectarse por RDP.
  • No se pueden instalar componentes adicional, como se hace con las startups tasks.
  • No dispone de un entorno de producción y staging.
  • No se integra con la característica de redes virtuales.
  • No permite usar Azure Connect.
  • De momento no existe información disponible sobre el tipo de SLA que estará disponible para esta nueva funcionalidad.

Para empezar a conocer esta funcionalidad lo primero que es necesario hacer es solicitar el acceso a estas características a través del portal de Windows Azure.

Una vez disponemos de la funcionalidad, es inmediato, ya podemos empezar a trabajar! En este post veremos un ejemplo muy sencillo de cómo es posible crear un WordPress casi sin ningún esfuerzo. Recordad por ejemplo cómo lo hacemos cuando queremos desplegar en un Web Role, tiene un poco más de trabajo.

01

Una vez accedemos al nuevo portal, el cuál como seguro que ya sabéis está hecho en HTML5, podremos crear un nuevo Web Site desde el menú inferio, el cuál nos ofrece diferentes opciones. Una de ellas, la que nos interesa ahora, permite crear un nuevo Web Site a partir de una galería que contiene los gestores de contenido open source más populares; WordPress, Drupal, DNN, Umbraco etc…

Recordad también, que Windows Azure dispone de un API de administración REST que permite realizar todas las acciones que están disponibles en el portal, ya que éste hace uso del mismo API que cualquiera de nosotros podría utilizar.

Así mismo existen Sdks para trabajar desde plataforma Microsoft, Linux y MAC. https://www.windowsazure.com/en-us/develop/downloads/

02

Una vez seleccionamos la opción de crear un Web Site desde la galería podemos seleccionar el tipo de Web Site que queremos generar, en este caso, un WordPress.

03

El siguiente paso, tal y como hacemos con Cloud Services, es elegir la URL pública a través del cuál estará disponible el WordPress que queremos generar.

y como cosa importante, nos indica que se creará una base de datos MySQL.

04

Como podéis ver desde el portal podemos crear una base de datos MySQL, pero comentar que este servicio no es ofrecido directamente por Microsoft, sino por ClearDB, uno de los numerosos partners que están colaborando con Microsoft para ofrecer soluciones sobre Window Azure. También hay otros partners para poder disponer de cosas interesantes como MongoDB o Lucene.

A través del portal no se puede realizar la administración de la base de datos que se cree en este paso, es ClearDB el que ofrece MySQL como servicio. Como veremos más adelante en algún otro post podremos usar cualquiera de las herramientas que ya existen para conectarnos a la base de datos de MySQL.

05

y ya está!

Una vez hecho sencillos paso el servicio aprovisionará un nuevo Web Site desde la plantilla de WordPress, que por defecto se aprovisiona en modo compartido.

06

07

 

Si accedemos a la URL que nos proporciona el Web Site podemos llegar a ver el nuevo portal recién creado, una vez que hayamos rellenado la pantalla de configuración de WordPress que nos aparece la primera vez que accedemos a un WordPress recién instalado.

08

 

y ya por último, desde el portal administración, podemos disponer de número información que nos vendrá muy bien para realizar labores de administración.

Como veremos en los siguientes post, podremos integrar el Web Site con Git o TFS, acceder por FTP, ver contadores de rendimiento del estado de la máquina etc…

También desde aquí podremos configurar si la funciona en modo compartido (convive con otras aplicaciones) o en modo reservado.

El modo compartido permite hasta 10 Web Sites de forma gratuita durante 1 año con cuotas relativas al tráfico de salida (165 Mb/día), almacenamiento (1 Gb) y base de datos (20 MB MySQL). Echadle un ojo a este enlace que habla sobre la política de precios para Web Sites.

El modo reservado permite configurar el tipo de máquina y recursos que quieres disponer y lógicamente, pagar por ello.

09

10

11

12

Registro abierto para el SQL Server Tour Madrid

Como ya os comenté anteriormente desde Plain Concepts estamos realizando una serie de eventos gratuitos sobre SQL Server 2012, principalmente centrado de temas de escalabilidad, bussiness intelligence y Big Data.

Toda la información, agenda y registro la podéis encontrar aquí; http://www.plainconcepts.com/SQLServerTour/

Para la sesión de Madrid tuvimos que cerrar el registro porque nos quedamos sin aforo, pero finalmente tendremos una sala más grande…incluso de más 🙂

Eso sí, el evento es mañana miércoles, día 13 de junio.

Si estás interesado, estás a tiempo de venir. https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032513290&Culture=es-ES 

Agenda:

09:30 – 10:15 Novedades SQL Server 2012

10:15 – 11:00 Escalabilidad y disponibilidad: Always On

11:00 – 11:15 Café

11:15 – 12:00 Gestión de la Calidad y Versionado de Datos: DQS y MDS

12:00 – 13:00 Optimización de Cargas Masivas de Datos

13:00 – 14:00 Comida

14:00 – 15:30 BISM y PowerView

15:30 – 17:00 Big Data: Apache Hadoop, Hadoop on Azure y SQL Server 2012

Y sino siempre nos puede seguir por Twitter; #SQLTour