Optimización de máquinas virtuales en Azure mediante aprovisionamiento previo e IA
1. Rápido y excitante: Optimización de las
implementaciones de máquinas virtuales
rápidas y confiables
John Barreto
Microsoft MVP
Luis Beltrán
Microsoft MVP
3. Composición de una máquina virtual
Máquina virtual
Red virtual
Grupo de seguridad de red
Interfaz de red
Dirección
IP
Disco Disco
Subred
Almacenamiento de diagnóstico
SO
Imagen
Tamaño
Disponibilidad
5. Captura previa en Azure
Reduce el costo de la latencia entre el nodo y el almacenamiento
Determina el contenido del sistema operativo necesario localmente en el
nodo
6. Almacenamiento de
diagnóstico
• Ubicación para almacenar
registros de diagnóstico y
capturas de pantalla de
consola de la máquina virtual
invitada
• Cuenta de almacenamiento
administrada
• Administrado por Azure
• Creado previamente
7. Predecir
Analizar el uso en
Azure y predecir
mediante IA
Aprovisionamient
o previo
Preparar las
máquinas virtuales
antes de que llegue
la solicitud del
cliente
Activar
Aplicar las
configuraciones
finales y entregar
la máquina virtual
Máquinas virtuales aprovisionadas previamente
8. Predecir
Millones de máquinas virtuales implementadas cada día
Varias configuraciones de máquina virtual para predecir
Datos
históricos
Bucle de comentarios
Decisión
final
Resultados previstos e
incertidumbre de la predicción
11. ¿Qué puede hacer?
Regla general: Lo último es lo mejor
Recomendaciones específicas para imágenes
Usar las últimas versiones de la distribución
Usar la versión de imagen "más reciente"
Colocar las imágenes en el repositorio de imágenes de la plataforma de Azure o en Shared Image
Gallery
SKU de máquinas virtuales prémium frente a SKU de máquinas virtuales estándar
Dimensionamiento
Premium Storage y Standard Storage
Zonas de disponibilidad y conjuntos de escalado de máquinas virtuales con
orquestación flexible frente a Conjunto de disponibilidad
12. Para investigar un poco más...
Captura previa: Las imágenes de máquina virtual deben tener 1 MB de espacio libre
https://docs.microsoft.com/es-mx/azure/marketplace/azure-vm-create-certification-
faq#vm-images-must-have-1mb-free-space
Diagnósticos de arranque: Diagnósticos de arranque de Azure: Azure Virtual Machines
https://docs.microsoft.com/es-mx/azure/virtual-machines/boot-diagnostics
Convenciones de nomenclatura de los tamaños de máquinas virtuales de Azure
https://docs.microsoft.com/es-mx/azure/virtual-machines/vm-naming-conventions
Microsoft Learn
https://docs.microsoft.com/es-mx/learn/modules/azure-well-architected-performance-
efficiency/
13. Para investigar un poco más...
Artículos sobre predicción
Búsqueda heurística basada en la correlación para el aprovisionamiento inteligente de máquinas virtuales en sistemas de
nube | Actas de la Conferencia de la AAAI sobre Inteligencia Artificial
https://ojs.aaai.org/index.php/AAAI/article/view/17467
Aprovisionamiento inteligente de máquinas virtuales en la informática en la nube (ijcai.org)
https://www.ijcai.org/proceedings/2020/0208.pdf
Conjuntos de escalado de máquinas virtuales con orquestación flexible: Azure Virtual
Machines
https://docs.microsoft.com/es-mx/azure/virtual-machines/flexible-virtual-machine-scale-
sets
Regiones y zonas de disponibilidad en Azure
https://docs.microsoft.com/es-mx/azure/availability-zones/az-
overview?context=/azure/virtual-machines/context/context
La eficiencia del rendimiento es la capacidad de que la carga de trabajo pueda escalar para satisfacer las demandas que requieren los usuarios de manera eficiente. Las principales formas de lograr la eficiencia del rendimiento incluyen el uso de la escala de manera adecuada y la implementación de ofertas de PaaS que tienen la escala integrada.
Nosotros somos:
John Barreto, consultor senior en la nube, mentor y speaker con más de 14 años de experiencia en la industria del software trabajando con startups, pequeñas y medianas empresas, además de Microsoft MVP en System Center Cloud, Datacenter Management y Quantum Computing
y Luis Beltrán, Microsoft MVP en Developer Technologies e Inteligencia Artificial, actualmente culminando estudios de doctorado en Ingeniería Informática y con más de 10 años de experiencia en el desarrollo de soluciones informáticas integrales y docencia en el sector de tecnología.
En esta session hablaremos de cómo optimizar las implementaciones de máquinas virtuales de una forma rápida y confiable.
Orador
Sabemos que cuando alguien quiere una máquina virtual de Azure, la quiere en línea de forma rápida. Tanto si se hace presionando un botón en el portal como si hace una llamada al API, el resultado deseado es el mismo. Clic. Vamos a mostrarle cómo se produce el aprovisionamiento de las máquinas virtuales, y luego le explicaremos lo que sucede “tras bambalinas” con algunas funcionalidades internas de la plataforma que pueden acelerar su experiencia. Posteriormente, le compartiremos algunas recomendaciones sobre cómo aprovechar estas tecnologías.
Orador (esta diapositiva debe comentarla sobre la animación correspondiente)
Clic
La creación de una máquina virtual casi nunca significa un solo recurso, es decir, una máquina virtual por sí sola. Como vimos en la presentación sobre las plantillas de ARM, la creación de una máquina virtual incluye la generación o el uso de muchos recursos adicionales, algunos obligatorios y otros solo necesarios según la carga de trabajo y los objetivos.
Clic. Tiene la interfaz de red, o NIC, que es la interconexión entre la máquina virtual y la red virtual.
Clic. Luego, se tiene un grupo de seguridad de red junto con una subred
Clic. y esa subred es parte de la red virtual o VNet.
Clic. Si la carga de trabajo necesita más datos, puede tener discos de datos asociados.
Clic. Si quiere obtener información sobre la máquina virtual durante la fase de arranque, puede obtener los registros de diagnóstico y capturas de pantalla en una cuenta de almacenamiento.
Clic. Finalmente, tiene la dirección IP a fin de poder interactuar con la máquina virtual.
Clic x4. Además de los recursos adicionales, hay decisiones que hay que tomar para la máquina virtual: el tamaño y el tipo de máquina, el sistema operativo, la imagen, la distribución y la versión, y las opciones de disponibilidad.
Hay muchas opciones entre las que elegir según sus necesidades de carga de trabajo. Vamos a compartir cómo puede optimizar el rendimiento y la confiabilidad.
Y le daré un anticipo de algunas funcionalidades de la plataforma que puede aprovechar para mejorar su experiencia en la nube de Azure.
Orador
Cuando se piensa en el aprovisionamiento de recursos convencional, todo sucede bajo demanda. Como cliente, puede iniciar sesión en Azure Portal o abrir una ventana de la CLI (línea de comandos) para crear la máquina virtual que desee. Cuando llega esa solicitud, la máquina virtual y todos los recursos asociados que vimos en la diapositiva anterior son generados en tiempo de ejecución. Así que construimos la máquina se aprovisionan todos los recursos, lo cual puede asemejarse a la instalación de Windows en un equipo portátil por primera vez. En el caso de Windows pasamos por el programa de instalación de Windows y, luego, el agente de aprovisionamiento de Windows; en el caso de Linux, es CloudInit.
Este proceso consiste en reunir todos los recursos en el momento de la solicitud: la propia máquina virtual, las NIC, las cuentas de almacenamiento, los discos de datos, etc. Con el tiempo, Microsoft ha implementado optimizaciones para crear estos recursos de forma más rápida y mejorar la experiencia. Sumerjámonos en un viaje para que aprenda a aprovecharlos.
Orador
La primera optimización de la que quiero hablar es la Captura previa o Prefetch. Cuando Azure estaba empezando, Microsoft tomó la decisión de poner el disco del sistema operativo en un almacenamiento remoto. De esta manera, si hubiera algún problema en el nodo host, se podría poner en marcha otra máquina virtual en un nuevo nodo y el usuario no se vería afectado por la pérdida de datos. Esta confiabilidad adicional era a cambio de rendimiento. De todos los pasos que tienen lugar en el aprovisionamiento convencional, hay uno específico que es el que más tiempo lleva, y es el que vamos a optimizar aquí. El objetivo de la captura previa es reducir la latencia que se produce entre el nodo y el almacenamiento llevando el contenido del sistema operativo al nodo host antes de que lo necesiten. Como no podemos llevar todo el almacenamiento, tratamos de determinar qué se requiere con la mayor precisión posible.
Cuando se publica una nueva imagen en los repositorios de imágenes de Azure, ya sea en el repositorio de imágenes de la plataforma o en la Shared Image Gallery, se invoca el servicio de captura previa en segundo plano. Lo que hará este servicio es traer una máquina virtual de ejemplo con esa imagen para conocer la actividad del disco del sistema operativo que tiene lugar durante el arranque y el aprovisionamiento. Estos metadatos se capturan y se vuelven a colocar en el disco del sistema operativo, lo que se conoce como Estampado de Metadatos de Captura Previa. Cuando una máquina virtual arranca en el nodo host, comprobará si hay metadatos de captura previa y los leerá.
Así que, consejo número uno:
Si crea su propia imagen, asegúrese de que el primer 1 MB del disco del sistema operativo esté vacío para que sea posible estampar los metadatos de captura previa. De esta forma, se garantiza que la imagen se ha capturado previamente y se producirán importantes ganancias en la latencia. Si crea su imagen a partir de una base aprobada, no debe preocuparse por esto.
Orador
Otra optimización es el diagnóstico de arranque administrado. Los diagnósticos de arranque son una función de depuración de las máquinas virtuales de Azure que permite dictaminar la existencia de errores de arranque de las máquinas virtuales. Esta característica permite al usuario observar el estado de su máquina virtual mientras arranca y se aprovisiona mediante la recopilación de información de registro y capturas de pantalla. Es importante mencionar que para habilitar esta funcionalidad debe seleccionar una opción de almacenamiento de estos datos.
Antes solo se podía elegir entre aprovechar una cuenta de almacenamiento administrada por el usuario o desactivar la función. En el caso de la cuenta de almacenamiento administrada por el usuario, si no tiene ya una, tendrá que crearla, lo que significa que se creará otro recurso en tiempo de ejecución junto con la máquina virtual. Con la nueva opción de cuenta administrada, puede obtener los diagnósticos sin necesidad de administrar o ni siquiera crear una cuenta de almacenamiento para ello. Estas cuentas de almacenamiento se crean con antelación, lo que hace que la latencia en la que incurre este recurso de la máquina virtual asociada sea mínima, y Azure administra estas cuentas, lo que le facilita el trabajo.
El consejo número dos entonces es aprovechar las cuentas de almacenamiento administradas para las máquinas virtuales si es posible a fin de reducir la latencia del aprovisionamiento de la máquina virtual, así como la sobrecarga de administración.
Orador
La siguiente funcionalidad de la plataforma de la que vamos a hablar se denomina máquinas virtuales aprovisionadas previamente, la cual busca eliminar la mayor parte posible de la creación de recursos en tiempo de ejecución.
Hay tres pasos generales en el servicio de aprovisionamiento previo. Clic El primero es la predicción, donde Microsoft analiza las implementaciones de máquinas virtuales en Azure y predice lo que se necesitará de la plataforma en el futuro mediante funcionalidades de IA. Clic Esa predicción se utiliza para preparar las máquinas virtuales antes de que llegue una solicitud, manteniéndolas en un estado "parcialmente aprovisionado". El último paso sería la activación, donde se aplican las configuraciones finales específicas de la solicitud del cliente y las máquinas virtuales se le entregan en un estado totalmente aprovisionado.
¿Qué significa todo esto para usted como cliente? Lo primero es la latencia considerablemente menor que se experimenta en la implementación de las máquinas virtuales. Se elimina la necesidad de provisionar completamente la máquina virtual cuando llega una solicitud, lo que afecta de manera muy positiva al tiempo que se tarda en crearla. Lo segundo es la confiabilidad. Como las máquinas virtuales que siguen este camino ya están en funcionamiento y no pasan por un reinicio, hay menos interacciones en las que las cosas podrían ir mal.
Analicemos cada fase con un poco más de detalle.
Orador
Cada día se implementan millones de máquinas virtuales en Azure. Los algoritmos de Microsoft examinan el historial de todas las implementaciones de máquinas virtuales y predice cuáles necesitarán los clientes en el futuro. Como hemos visto al principio, hay muchas opciones diferentes de máquinas virtuales disponibles para los clientes. Todas estas propiedades pueden agruparse en dos categorías desde la perspectiva del servicio de aprovisionamiento previo: las que son inmutables y las que no. ¿Qué hace que algo sea inmutable? La respuesta es: si necesita una recompilación. No puedo convertir una máquina Linux en una máquina Windows, así que necesito predecir el sistema operativo. Tampoco puedo crear una imagen de Debian y transformarla en una imagen de Databricks, así que necesito predecir la imagen de la máquina virtual. Por otro lado, sí puedo cambiar el nombre de usuario, la contraseña o el nombre de la máquina. Este es el principio que nos guía hacia lo que tenemos que prever frente a lo que gestionamos sobre la marcha. Lo crea o no, el número de configuraciones posibles de máquinas virtuales se acerca a las 70 000.
Clic: Una nota rápida sobre el algoritmo: los talentosos científicos de datos de Microsoft crearon un nuevo marco para abordar mejor este problema. El componente de predicción prevé las demandas futuras y modela la incertidumbre de la predicción (que es inevitable), y el componente de mejora lleva a cabo la optimización probabilística teniendo en cuenta la experiencia más beneficiosa para el cliente. A continuación, pasa por un periodo de entrenamiento para maximizar la calidad de la solución y luego finaliza el plan de aprovisionamiento previo. Por supuesto, esta es una descripción muy simplificada; si está interesado en saber más, hay un par de vínculos a artículos académicos al final de la presentación. .>>
El último paso de la fase de predicción es la entrega de las N mejores configuraciones de máquinas virtuales y el recuento sugerido de cada una.
En resumen, tener un patrón coherente para sus implementaciones permite maximizar esta funcionalidad.
Orador
El siguiente paso es el aprovisionamiento previo. Una vez recibida la predicción, pasará por otro nivel de filtrado de la plataforma con el fin de determinar el número máximo de predicciones, mantener el equilibrio con las necesidades de capacidad, etc.
Desde la perspectiva de la plataforma, en realidad parece que en este momento solo estamos creando una máquina virtual como de costumbre. La única diferencia es que en este caso se etiqueta como máquina virtual aprovisionada previamente para indicar una funcionalidad especial. Dentro del equipo invitado es donde se aprecia la diferencia, y se entiende que no se trata de una máquina virtual normal. Entrará en un modo en el que se espera que se suministre la configuración específica para el cliente. Básicamente esto significa que tenemos un agente que se ejecuta dentro del invitado que está haciendo toda la magia.
Desde el punto de vista de la seguridad, queremos resaltar el hecho de que estas máquinas virtuales no tienen dirección IP pública ni conectividad a Internet. Esto significa que nadie puede conectarse a ellas y que están seguras en un estado inactivo.
Orador
El último paso es la Activación. Cuando una solicitud llega a Azure con una configuración de máquina virtual que coincide con una que se ha creado previamente, se puede proporcionar esa máquina virtual a ese cliente. Los agentes salen del modo de espera al suministrarles la información que buscan <<el nombre de usuario, la contraseña y el nombre de la máquina>>, y se puede iniciar el proceso para terminar de aprovisionar la máquina virtual y entregarla. Se produce una transferencia de recursos y comienza la facturación del cliente, por lo que Microsoft libera la máquina virtual y es totalmente propiedad y responsabilidad del cliente.
Hay algunos detalles técnicos realmente innovadores que suceden en esta fase para las máquinas virtuales aprovisionadas previamente, pero estos ingredientes del proceso realizado por Microsoft deben permanecer en secreto así que no serán revelados.
Orador
La gran pregunta que probablemente quede en su cabeza al final de todo esto es ”de acuerdo, es un gran material, pero ¿cómo lo aprovecho?". Dado que las máquinas virtuales aprovisionadas previamente son una funcionalidad interna de la plataforma, los clientes no tienen ninguna interacción directa con ella. Como hemos dicho antes, hay alrededor de 70 000 configuraciones de máquinas virtuales, así que ¿cómo se pueden optimizar de cara a las predicciones? Pasemos a algunos consejos para ello.
En general, el término "lo último es lo mejor" es una buena regla general que se puede seguir para maximizar sus implementaciones con las funcionalidades del servicio de aprovisionamiento previo, ya sea para la imagen, la oferta de características, el tamaño de la máquina virtual, etc.
Centrémonos en las imágenes: El uso de las versiones de distribución más recientes publicadas de Windows o Linux le asegura compatibilidad a nivel de imagen. A la hora de especificar la versión, elegir la última disponible ayudará a aumentar la previsibilidad. Y el último punto, que es esencial, es aprovechar el repositorio de imágenes de la plataforma de Azure o Shared Image Gallery a fin de garantizar el acceso a las mismas.
Finalmente, hablemos de tamaños y tipos de máquinas virtuales.
Tanto si optimiza la CPU, el almacenamiento o la memoria, cada familia de máquinas virtuales tiene opciones de SKU prémium o estándar. Estas terminologías corresponden más o menos a la existencia de una "s" en el nombre de la máquina virtual, pero hay excepciones. Un ejemplo sencillo sería el de las máquinas virtuales de uso general de la familia D: hay una serie Dv4 que es estándar y una serie Dsv4 que se considera prémium. Esto representa el tipo de stack en que se ejecuta: Prémium en lo más último, y estándar en lo más antiguo. Para un mejor rendimiento, opte por las SKU de máquina virtual prémium. Otro apunte sobre las máquinas virtuales es que es necesario asegurarse de que tengan el tamaño adecuado. El número máximo de IOPS, también conocido como rendimiento de almacenamiento, dependerá del tamaño de la máquina virtual y del tamaño del disco. Le recomendamos que se incline por de mayor capacidad para reducir la posibilidad de limitación de IOPS durante el aprovisionamiento de la máquina virtual. Por supuesto, esto también supone buscar un equilibrio con el costo.
La misma filosofía se puede aplicar a Premium Storage frente a Standard Storage: elija Premium para un mejor rendimiento y confiabilidad.
También hay varias ofertas de disponibilidad para las máquinas virtuales. Si le es posible, opte por las zonas de disponibilidad más nuevas o los conjuntos de escalado de máquinas virtuales con orquestación flexible más recientemente publicados, a fin de mejorar la experiencia de aprovisionamiento y la predicción y obtener otros beneficios: escalabilidad rápida, facilidad de uso, y personalización entre otros.
La combinación de estos junto con las máquinas virtuales aprovisionadas previamente es buena, rápida y excitante.
Muchas gracias por su atención. Aquí hay algunos vínculos a recursos relacionados con la charla que vamos a compartir en el chat en unos instantes.
Ahora vamos de vuelta en vivo para responder sus preguntas finales