[Articulo] Azure | Servicios de Cómputo: Introducción desde cero a Máquinas Virtuales en Azure
Los Servicios de Cómputo de Microsoft Azure permiten, entre otras cosas la creación de máquinas virtuales (Virtual Machines) en forma rápida y ágil, con la robustez que proporciona esta plataforma.
Hoy en día existe gran cantidad de sistemas operativos que podemos desplegar con Azure, ya sea Windows ó Linux, y con la posibilidad de contar con imágenes personalizadas aque preparemos con características especiales.
En esta publicación vamos a recorrer los principales conceptos y características de las máquinas virtuales desde cero, como así también algunas funcionalidades clave, compatibilidad actual y consideraciones especiales.
UPDATE: esta publicación fue actualizada el 10/04/2018 en relación a la publicación original del 2016.
[toc]
Introducción
Objetivo y Alcance
Esta publicación tiene como objetivo demostrar cómo las organizaciones pueden beneficiarse con la flexibilidad de las máquinas virtuales en Microsoft Azure, de modo tal de reducir costos de hardware y aprovechar las posibilidades de variedad de sistemas operativos en la nube que podemos tener con Azure.
El alcance de esta publicación es poder recorrer, en alto nivel, los principales conceptos y características de las máquinas virtuales en Azure, en relación a:
- Introducción General: introducción, casos de uso, sistemas operativos soportados y software soportado.
- Tipos de máquinas virtuales existentes y sus instancias.
- Conceptos y Principios de las Máquinas Virtuales en Azure.
Esta publicación intenta brindar una presentación en 360 grados sobre Azure Virtual Machine, no siendo específico ni de bajo nivel sobre algún tema en particular. Para ello, publicaremos otras entradas en TecTimes.
Audiencia
Este documento está dirigido, fundamentalmente, a profesionales de Infraestructura de IT.
Comentarios y Corrección de Errores
Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.
Desarrollo
Introducción a Máquinas Virtuales en Azure
Con máquinas virtuales de Microsoft Azure, se puede fácilmente provisionar, migrar y administrar equipos virtuales en forma similar a cómo se realiza en una infraestructura on-premises, pero en la nube de Azure. De esta forma podemos sacar ventajas de la virtualización sin tener que mantener el hardware físico en el que se ejecuta. No obstante, el administrador aún deberá ocuparse de mantener el sistema operativo virtualizado y ejecutar tareas de configuración, actualización e instalación del software que ejecute.
Las máquinas virtuales de Azure pueden ejecutar Windows, Linux y aplicaciones de terceros, como así también se pueden utilizar máquinas aprovisionadas en forma personalizada para subirlas y ejecutarlas en la nube de Azure.
¿En qué casos elegir Máquinas Virtuales?
Los casos de uso para máquinas virtuales
- Desarrollo y Test – Es una manera rápida y sencilla para crear equipos con configuraciones específicas que faciliten el desarrollo y prueba de aplicaciones para nuestro equipo de desarrollo. Existe el servicio de “Azure Dev/Test” para tal fin, donde se pueden especificar políticas de auto-aprovisionamiento y auto-servicio de equipos para aquellos profesionales no especialistas en Infraestructura.
- Aplicaciones en la Nube –Dado que no siempre una aplicación web puede alojarse en Plataforma como Servicio (PaaS), a veces por motivos de retrocompatibilidad o aplicación de configuraciones específicas hace sentido tenerla en una máquina virtual.
- Datacenter Extendido – Gracias a las capacidades de interconexión que tienen las Virtual Networks de Azure, se puede extender nuestro datancenter on-premieses a máquinas virtuales que estén en la nube, sin necesidad de que las mismas estén accesibles a través de Internet pública.
Sistemas Operativos soportados
Actualmente Azure soporta equipos virtuales con Windows y Linux en base a las siguientes configuraciones:
¿Windows Server 2003? SI! Windows Server 2003 está soportado para despliegue en Microsoft Azure. No obstante, su soportabilidad no se extiende al sistema operativo.
Consideraciones de Software Soportado en Windows VMs
En relación a los roles de Windows Server soportados en Azure, podemos destacar a Febrero de 2015:
- Active Directory Domain Services
- Active Directory Federation Services
- Active Directory Lightweight Directory Services
- Application Server
- DNS Server
- File Services
- Network Policy and Access Services
- Print and Document Services
- Remote Access (Web Application Proxy)
- Remote Desktop Services*
- Web Server (IIS)
- Windows Server Update Services
Roles no soportados para Windows Server en Azure son los siguientes a Febrero de 2015:
- Dynamic Host Configuration Protocol Server
- Hyper-V (Hyper-V role is supported in Azure Ev3, and Dv3 series VMs only)
- Remote Access (Direct Access)
- Rights Management Services
- Windows Deployment Services
Features no soportados para Windows Server en Azure son los siguientes a Febrero de 2015:
- BitLocker Drive Encryption (on the operating system hard disk; may be used on data disks).
- Windows Server Failover Clustering, except for SQL Server AlwaysOn Availability Groups.
- Internet Storage Name Server.
- Multipath I/O.
- Network Load Balancing.
- Peer Name Resolution Protocol.
- SNMP Services.
- Storage Manager for SANs.
- Windows Internet Name Service.
- Wireless LAN Service.
Consideraciones de Software Soportado en Linux VMs
Las siguientes tecnologías Open Source están naturalmente soportadas en máquinas virtuales de Azure:
- Lenguages: PHP, Java, Python, Node.JS.
- Bases de datos: MySQL.
- Servidores Web y de Aplicaciones: Apache, Tomcat.
- Frameworks: WordPress.
La soportabilidad de tecnologías Open Source tiene las siguientes directrices: Microsoft proveerá asistencia SOLO para tecnologías Open Source soportadas. Ahora bien, este soporte está destinado para:
- Problemas que se encuentren durante la instalación o configuración.
- Errores de despliegue encontrados cuando los clientes intentan desplegar la aplicación en las plataformas o servicios de Azure.
- Errores de runtime cuando los cleintes usan las plataformas y servicios de Azure.
- Problemas de performance con aplicaciones que están soportadas y con tecnologías Open Source en la plataforma o servicios de Azure.
Si se requiere soporte en guías de diseño o desarrollo, como así también asistencia en desarrollo, el soporte de Microsoft redireccionará la solicitud hacia la comunidad, ya sea a través de foros o soporte privado.
Tipos y Tamaños de Máquinas Virtuales
Vamos a conocer en alto nivel los detalles de cada una para entender sus diferencias:
Uso General (General Purpose)
Son equipos para un uso equilibrado de la CPU en proporción de memoria. Ideal para desarrollo y pruebas, bases de datos pequeñas o medianas y servidores web de tráfico bajo o medio. Existen las siguientes instancias:
Proceso Optimizado (Compute Optimized)
Son equipos perfectos para el uso elevado de la CPU en proporción de memoria. Bueno para servidores web de tráfico medio, aplicaciones de red, procesos por lotes y servidores de aplicaciones. Existen las siguientes instancias:
Memoria Optimizada (Memory Optimized)
Son equipos con memoria alta en proporción de núcleo. Excelente para servidores de bases de datos relacionales, memorias caché de capacidad media o grande y análisis en memoria. Existen las siguientes instancias:
Almacenamiento Optimizado (Storage Optimized)
Equipos que requieren alto rendimiento de disco y E/S. Perfecto para bases de datos SQL y NoSQL y macrodatos. Existen las siguientes instancias:
GPU (GPU)
Máquinas virtuales especializadas específicas para la representación de gráficos pesados y la edición de vídeo disponibles con una o varias GPU. Existen las siguientes instancias:
Proceso de Alto Rendimiento (High Performance Compute)
Máquinas virtuales de CPU más rápidas y eficaces con interfaces de red de alto rendimiento opcionales (RDMA). Existen las siguientes instancias:
Costos de las Máquinas Virtuales en Azure
Actualmente existe una calculadora, la cual en base a las entradas del usuario calcula el precio aproximado en moneda local para máquinas y otros componentes de Azure: http://azure.microsoft.com/en-us/pricing/details/virtual-machines/
Conceptos y Principios de las Máquinas Virtuales en Azure
Existen algunos principios y conceptos que son importantes tener claros a la hora de utilizar máquinas virtules en Azure y no morir en el intento. Aquí vamos a repasar los que nos parecieron más importantes de destacar.
Disponiblidad
Si bien Azure funciona en varios centros de datos en el mundo, la disponibilidad de los equipos virtuales (VMs) tiene componentes adicionales que el consumidor debe tener en cuenta. Por ejemplo, Microsoft solicitará anualmente algunas horas de actualización de sus nodos de virtualización, provocando que los equipos virtuales que se alojen dentro se apaguen, reinicien o, simplemente, queden algunos minutos fuera de línea.
Si bien existen algunos mecanismos de actualización con soporte en memoria, podría fallar. Para evitar interrupciones de servicio, o mejor dicho para lograr el 99.95% de servicio garantizado en Azure, es necesario tener los equipos virtuales por lo menos de a pares. Estos pares se pueden ubicar en un “Conjunto de Disponibilidad” (Availability Set) para que cuando Azure requiere un mantenimiento, no apague dos equipos que pertenecen al mismo Availability Set en el mismo momento.
Redes
Una máquina virtual (VM) de Azure se debe relacionar con una red virtual (VNet) nueva o existente. Cada máquina virtual (VM) requiere al menos una interfaz de red (NIC) que permite la interconexión entre una máquina virtual y una red virtual (VNet). Una máquina virtual puede contener varias NIC en función del tamaño de la máquina virtual que se cree.
Existen algunas consideraciones a tener en cuenta sobre NIC y VNets:
- Todas las NIC que se conectan a una máquina virtual deben existir en la misma ubicación y suscripción que esta.
- Cada NIC debe estar conectada a una red virtual que exista en la misma ubicación y suscripción de Azure en la que se encuentre la NIC.
- Una vez creada la NIC, puede cambiar la subred a la que la máquina virtual está conectada, pero no la red virtual.
- A cada NIC conectada a una máquina virtual se le asigna una dirección MAC que no cambia hasta que se elimine la máquina virtual.
Direcciones IP
En Azure se pueden asignar estos tipos de direcciones IP a una NIC:
- Direcciones IP públicas: se usan para la comunicación entrante y saliente [sin traducción de direcciones de red (NAT)] con Internet y otros recursos de Azure no conectados a una red virtual. La asignación de una dirección IP pública a una NIC es opcional. Las direcciones IP públicas tienen un cargo nominal y se puede usar un número máximo de ellas por suscripción.
- Direcciones IP privadas: se usan para la comunicación dentro de una red virtual, una red local e Internet (con NAT). Debe asignar al menos una dirección IP privada a una máquina virtual. Para más información acerca de NAT en Azure, lea Información sobre las conexiones salientes en Azure.
Las direcciones IP públicas se pueden asignar a las máquinas virtuales o a los equilibradores de carga con acceso a Internet. Las direcciones IP privadas se pueden asignar a las máquinas virtuales y a los equilibradores de carga internos. Las direcciones IP se asignan a una máquina virtual mediante una interfaz de red.
Existen dos métodos en los que se asigna una dirección IP a un recurso: dinámico o estático. El predeterminado es el dinámico, en el que no se asigna ninguna dirección IP durante la creación. En su lugar, la dirección IP se asigna cuando se crea una máquina virtual o se inicia una máquina virtual detenida. La dirección IP se libera cuando se detiene o se elimina la máquina virtual.
Network Security Groups
Un grupo de seguridad de red (NSG) contiene una lista de reglas de la lista de control de acceso (ACL) que permiten o deniegan el tráfico de red a subredes, NIC, o ambas. Los grupos de seguridad de red se pueden asociar con subredes o con NIC individuales conectadas a una subred. Si un grupo de seguridad de red está asociado a una subred, las reglas de la ACL se aplican a todas las máquinas virtuales de dicha subred. Además, se puede limitar el tráfico que llega a una NIC individual, para lo que se debe asociar un NSG directamente a la NIC.
Básicamente y en forma simple, los NSG (así se conocen por sus siglas) pueden ser nuestros “Firewalls” en nuestros equipos virtuales, cuyas reglas se seguirán y pueden aplicarse masivamente.
Balanceo de Carga
Las Máquinas Virtuales de Azure pueden integrarse a un Balanceador de Carga Virtual (Azure Load Balancer) para proporcionar una alta disponibilidad a las aplicaciones que se ejecutan en una máquina virtual.
Se puede configurar un equilibrador de carga para equilibrar el tráfico entrante de Internet a las máquinas virtuales o equilibrar el tráfico entre las máquinas virtuales de una red virtual.
Mantenimiento y Actualizaciones
El mantenimiento y actualizaciones de una máquina virtual es responsabilidad del adminsitrador de infraestructura de una organización. Microsoft Azure no actualiza, mantiene ni da soporte como parte del servicio.
Seguridad y Cumplimiento
Microsoft Antimalware para Azure es una funcionalidad gratuita de protección en tiempo real que ayuda a identificar y eliminar virus, spyware y otro software malintencionado.
Azure Security Center ayuda a evita y a detectar las amenazas para las máquinas virtuales, además de a responder a ellas. Security Center proporciona funcionalidades de administración de directivas y supervisión de la seguridad integradas en las suscripciones de Azure, ayuda a detectar las amenazas que podrían pasar desapercibidas y funciona con un amplio ecosistema de soluciones de seguridad.
Con respecto al Cifrado, las máquinas virtuales Windows y Linux, se pueden cifrar los discos virtuales en Azure. Los discos virtuales en máquinas virtuales de Windows se cifran en reposo mediante BitLocker. Los discos virtuales en las máquinas virtuales de Linux se cifran en reposo mediante dm-crypt.
Por último vamos a nombrar a Azure Policy, cuyas directivas pueden utilizarse para definir el comportamiento deseado de las máquinas virtuales Windows y de las máquinas virtuales Linux en su organización. Mediante las directivas, una organización puede aplicar varias convenciones y reglas en toda la empresa. La aplicación del comportamiento deseado puede ayudar a reducir el riesgo a la vez que se contribuye al éxito de la organización.
Resguardo y Recuperación
Para realizar copias de seguridad de máquinas virtuales de Azure que ejecutan cargas de trabajo de producción, use Azure Backup. Azure Backup admite las copias de seguridad coherentes con la aplicación para máquinas virtuales Windows y Linux. Azure Backup crea puntos de recuperación que se almacenan en almacenes de recuperación con redundancia geográfica. Cuando se realiza una restauración desde un punto de recuperación, se puede restaurar toda una máquina virtual o solo determinados archivos.
Conclusiones
En el recorrido de esta publicación, hemos visto las posibilidades que Azure nos ofrece sobre máquinas virtuales, pertenecientes al grupo de Servicios de Cómputo.
Entre varias cosas que hemos visto, las máquinas virtaules nos permiten extender nuestra infraestructura local a la nube pudiendo tener sistemas operativos Windows y Linux con múltiples opciones de aprovisionamiento: plantillas pre-configuradas de Microsoft y plantillas personalizadas del usuario. Existen muchas posibilidades de configuración, tanto de hardware como de software, y hasta la posibilidad de instalar equipos con software pre-instalado como SQL Server, Oracle, etc. Sin lugar a dudas, al momento de pensar en desplegar equipos rápidamente sin necesidad de comprar hardware, esta alternativa es sumamente interesante.
Quedaron fuera de scope en esta publicación aspectos como alta disponibilidad, resguardo y recuperación, y otras funcionalidades avanzadas del servicio. El objetivo era introducir al usuario y administrador en las posibilidades que Azure nos ofrece en este segmento, para luego poder avanzar con otros temas que pronto saldrán publicados en TecTimes.
Espero que este artículo les haya sido útil a todos, y por supuesto como siempre estamos abiertos a dudas, consultas y feedback por parte de todos ustedes.
¡Saludos y hasta la próxima!
Referencias y Links
Te dejamos algunas referencias o links interesantes:
- https://support.microsoft.com/en-us/help/2941892/support-for-linux-and-open-source-technology-inazure
- https://support.microsoft.com/en-ie/help/3206074/running-windows-server-2003-on-microsoft-azure
- https://support.microsoft.com/en-ie/help/2721672/microsoft-server-software-support-for-microsoft-azure-virtual-machines
- https://support.microsoft.com/en-us/help/4021388/support-for-32-bit-operating-systems-in-azure-virtual-machines