Saltar a contenido

Máquinas Virtuales (VM) 💻 y Redes Virtuales (VNet) 🌐 en Microsoft Azure

¿Qué es una Máquina virtual (VM) en Azure? 💻

Una máquina virtual (VM) en Microsoft Azure es un recurso de computación que simula un ordenador físico dentro de la nube. Permite ejecutar sistemas operativos y aplicaciones como si estuvieras usando un servidor o PC real, pero sin necesidad de hardware propio.

Características principales de una VM

  • Ejecuta sistemas operativos.
  • Se puede escalar (aumentar o reducir recursos como CPU o RAM).
  • Es altamente configurable según las necesidades que tengamos.
  • Se paga por uso (modelo de pago por consumo).

Usos comunes

  • Hospedar aplicaciones web.
  • Ejecutar bases de datos.
  • Entornos de desarrollo y pruebas.
  • Servidores de aplicaciones empresariales.
  • Caso de uso ideal: Migrar y mantener aplicaciones o sistemas legacy (antiguos) que necesitan control total y no pueden modernizarse fácilmente.

¿Qué es una Red Virtual (VNet) en Azure? 🌐

Una Virtual Network (VNet) en Azure es una red privada dentro de Azure que permite que los recursos (como máquinas virtuales) se comuniquen entre sí de forma segura.

Es equivalente a una red tradicional dentro de un centro de datos, pero en la nube.

Características principales de una VNet

  • Aislamiento total de otras redes.
  • Comunicación segura entre recursos de Azure.
  • Posibilidad de conectarse a redes locales (on-premise).
  • Segmentación mediante sobredes (subnets).

Componentes importantes

  • Subnets: subdivisores dentro de la red
  • NSG (Network Security Groups): reglas de seguridad para controlar el tráfico.
  • VPN Gateway: conexión entre red local y Azure.
  • Azure Firewall: protección avanzada de red.

Tipos de conectividad en una VNet

  • VNet interna: solo recursos dentro de Azure.
  • VNet peering: conexión entre VNets.
  • VPN Site-to-Site: conexión con red local.
  • ExpressRoute: conexión privada dedicada (alta velocidad).

Relación entre VM y VNet

Las máquinas virtuales (VM) normalmente se crean dentro de una VNet para: - Comunicarse con otras VMs de forma segura. - Controlar el acceso a internet. - Proteger recursos mediante reglas de red.

Sin una VNet, una VM no tendría una red privada adecuada para funcionar en entornos reales.


---- [ PRÁCTICAS ] ----

🔷 1. Crear la red en Azure

¿Qué vamos a configurar?

  • Tres Subredes Públicas: distribuidas en distintas zonas o preparadas para desplegar recursos en distintas zonas.
  • Tres subredes privadas: también distribuidas de forma equivalente, sin exposición directa a internet.

¿Qué debemos tener en cuenta?

  • La VNet será la red principal del ejercicio.
  • Las subredes públicas podrán alojar máquinas virtuales con IP pública.
  • Las subredes privadas no deben tener recursos con IP pública asociada.
  • Para el filtrado de tráfico, utiliza un Network Security Group (NSG).
  • Opcionalmente, puedes dejar preparada la salida a internet para subredes privadas mediante NAT Gateway, aunque no es obligatoria para este ejercicio si no la vas a usar

🔹 1. Diseño de la red antes de comenzar en Azure

  • VNet

    • Nombre: vnet-lab
    • Rango: 10.0.0.0/16
  • Subredes (6 en total)

Tipo Nombre Rango Zona
Pública subnet-public-1 10.0.1.0/24 Zona1
Pública subnet-public-2 10.0.2.0/24 Zona2
Pública subnet-public-3 10.0.3.0/24 Zona3
Tipo Nombre Rango Zona
Privada subnet-private-1 10.0.11.0/24 Zona1
Privada subnet-private-2 10.0.12.0/24 Zona2
Privada subnet-private-3 10.0.13.0/24 Zona3

🔹 2. Crear la VNet (Virtual Network) con sus subredes

Dentro de Azure, buscamos 'Redes Virtuales'

buscar vnet

y ahí dentro le damos a crear

Panel de redes virtuales

Empezamos con los "Datos básicos" donde le asociaremos:

  • Un grupo de recursos que crearemos para esta práctica (podemos hacerlo justo abajo donde aparece "Crear nuevo" y simplemente le ponemos un nombre). Todo lo que esté asociado a ese grupo de recursos actuará como un bloque conjunto, si lo eliminamos, eliminaremos todo lo que pertenezca a ese grupo.
  • El nombre de nuestra red virtual.
  • La región, que es la zona geográfica real donde estan los centros de datos que guardan nuestros servicios contratados en la nube. En nuestro caso '(Europe) West Europe' porque es donde antes suelen publicar las actualizaciones. Estas actualizaciones, en Azure se llaman 'Preview' (vista previa). Pero puedes utilizar cualquier otra según lo que se necesite.

Enlace a los recursos preview según las zonas

Recomendación

puedes ir a echarle un ojo a "Service Health"

Datos basicos de creación


Lo siguiente que modificaremos aquí será el "Address space", la "seguridad", por ahora la dejaremos por defecto.

Aquí ya directamente podemos crear las subredes desde este apartado:

address space

Configuramos las Subredes, en principio dejamos todo por defecto, solo modificamos lo que aparece subrayado en amarillo

subredes

Repetimos lo mismo con las otras subredes hasta que quede así:

subredes completas

Nos aparecerá esta ventana con un resumen de la configuración, donde confirmamos dandole en 'crear'

crear red

Esperamos a que finalice...

completo

Información

En este punto aun las subredes no son privadas ni públicas.

Para que lo sean debemos configurar los recursos que queremos asociar y sobre todo "NSG" donde permitiremos o denegaremos lo que pueden hacer o no esas subredes.

🔹 3. Crear y asociar Network Security Group (NSG)

Vamos a crear un grupo de seguridad para las subredes privadas y las subredes públicas:

  • nsg-lab-private: para la privada.
  • nsg-lab-public: para la pública.

Buscaremos en los recursos de Azure lo siguiente

nsg

Una vez ahí le damos a 'crear'

grupos de seguridad

Asignamos los "Datos básicos"

Después directamente le damos a 'Revisar y Crear'

datos basicos nsg

crear nsg

verificar nsg

Repetimos con 'nsg-lab-public' y debería de quedarnos una cosa así

las 2 nsg


Para hacerla Pública

Dentro de "nsg-lab-public" tenemos que agregar estas reglas.

--> Reglas de entrada:

- puerto 22 (para conectarnos por ssh) en nuestra ip .
- puerto 80 para acceder a la web de lo que haremos más adelante

reglas public

--> Reglas de salida:

No hacen falta

Asociar las Subredes a los NSG

Para ello iremos a las VNets, seleccionamos la que hemos creado y nos vamos a subredes

asociar

Elegimos una subred, en mi caso he seleccionado 'subnet-public-1' y la asociamos a 'nsg-lab-public'

grupo asignado

Repetimos el proceso con todas las demás subredes hasta que quede así

todas subredes agregadas

🔹 4. Salida a internet para subredes privadas mediante NAT Gateway (Opcional)

Para hacer q las subredes tengan acceso a internet (NAT) debemos crear una puerta de enlace de traduccción de direcciones de red.

Buscamos lo siguiente:

buscar nat

Le damos a crear una nueva y empezamos a escribir los datos básicos

alt text

En IP de salida agregamos la dirección ip pública

agregar dir

ip salida

Ahora configuramos las redes, aquí vamos a añadir a que red y subred está asociada esta ip

redes nat


Etiquetas

Otra cosa importante son las etiquetas, pondremos la etiqueta a estos recursos para así poder localizarlos fácilmente.

Aunque ahora mismo solo estoy yo utilizando este espacio, en el momento en el que estemos varias personas puede llegar a ser muy útil saber quien creó cada cosa.

etiquetas

Por último le damos a "Revisar y crear"

Ya tendríamos una dirección pública asociada a esa subred

nat finish


🔷 2. Crear una máquina virtual Linux

Para crearla, necesitaremos el siguiente recurso de Azure:

recurso vm

Una vez ahí en el recurso, le damos a crear uno nuevo

crear vm

Cuando le demos a crear nos aparecerán várias opciones con sus descripciones, en nuestro caso vamos a elegir "Máquina virtual" que es la opción básica.

opciones creacion vm

Recomendación

Hay ciertas herramientas para calcular precios y ver que tipo de máquina es la más eficiente dependiendo de lo que queramos hacer, aquí tienes más información "Price Calculation"


Asignamos los "Datos Básicos"

El mismo grupo de recursos y región anteriores.

datos1


Continuamos con las opciones de disponibilidad

Son formas de evitar que nuestro servicio se caiga, como ahora mismo lo que estamos montando es un laboratorio, no lo vamos a utilizar, así que seleccionamos "No se requiere redundancia de la infraestructura"

Pero, podemos ver que hay más opciones:

  1. Zona de disponibilidad:

    Aquí eliges una zona física dentro de la región y puedes crear varias VMs en distintas zonas

  2. Conjunto de escalas de máquina virtual:

    Forma clásica en la que azure separa VMs en:

    • Distintos Racks (fault domains)
    • Distintos Ciclos de mantenimiento (update domains)

    Por lo que no todas las VMs caen a la vez

  3. Conjunto de disponibilidad:

    Grupo de VMs idénticas que se escalan automáticamente (más complejo)

optns disponibilidad


Continuamos con el "tipo de seguridad"

Elegirémos el más básico el "estandar" pero podemos ver q hay más tipos:

tipo de seguridad


Continuamos con la "imagen" y la "arquitectura de la VM"

imagen

¡CUIDADO! Opción peligrosa [Azure Spot]

Tenemos una opción aquí bastante interesante pero ¡OJO, CUIDADO! es peligrosa, es la opción "Azure Spot"

Hay que tener cuidado porque:

  • Las máquinas vituales son mucho más baratas
  • Pero azure puede quitartelas en cualquier momento

Esto es porque usas capacidad sobrante del datacenter entonces si en algún momento Azure necesita esos recursos puede quitartelos casi sin aviso previo.

Es muy útil para:

  • Procesos batch (scripts, cálculos)
  • Renderizado
  • Machine Learning
  • Jobs que puedes reiniciar

azure spot

azure spot 2


Continuamos con el "tamaño"

tmaño vm


Seguimos con la "Cuenta de administrador"

que le pondremos la siguiente configuración:

cuenta admin

y por último, en los datos básicos, configuramos las "reglas del puerto de entrada"

reglas puerto


Asignamos los "Discos"

discos

Todo lo demás lo dejamos por defecto porque no tenemos discos que añadirle que ya estén creados por lo que continuamos al apartado de "Redes"

Hay también un apartado de opciones avanzadas pero tampoco lo usaremos

discos 3

discos 2


Asignamos las "Redes"

La añadiremos dentro de la subred pública 1

redes


Asignamos la "Administración"

Donde dejaremos todo por defecto

administración


Asignamos la "Supervisión"

Donde lo único que he modificado ha sido quitar el diagnóstico de arranque ya que estamos haciendo una prueba y gasta dinero de forma innecesaria.

supervisión


Asignamos las "Opciones avanzadas"

No modificaremos nada así, lo dejaremos tal y como está

OA 1

OA 2

Por último le ponemos etiquetas que nos sirven para organizarnos cuando tenermo muchos recursos, en este caso no crearemos ninguna pero es importante saber que están.

Le damos a "Revisar y crear" para finalizar

alt text

alt text

Nos aparecerá este mensaje, donde descargaremos la clave privaad y crearemos el recurso.

Una vez nos la descarga podemos moverla a donde queramos.

tip: mi recomendación es llevarla a la carpeta .ssh

alt text

Y después de esto esperamos a que se termine de configurar y se arranque.

Está todo correcto.

alt text


🔷 3. Instalar y configurar Nginx en la máquina virtual

Para ello tenemos que acceder a la máquina virtual.

Ten en cuenta que debes tener el NSG con las reglas de entrada en el puerto 22 para el ssh y al crear la máquina, en el acceso, has puesto que ese va a ser tanto el puerto, como el método que utilizarás para acceder.

Para ver como conectar iremos a la máquina y entraremos en la interfaz de "Conectar"

Ahí nos saldrán las instrucciones, como vemos, tenemos el comando ssh que tenemos que lanzar, lo copiamos y cambiamos la ruta donde hemos guardado la clave (.ssh)

conect maquina

Entramos en nuestra terminal del dispositivo y lanzamos en comando que teníamos:

ssh -i ruta/a/clave_ssh.pem usuario@IP_PÚBLICA

conexión


Una vez dentro, instalamos nginx con el siguiente comando

sudo apt install nginx

alt text

Cuando acabe comprobamos que el servicio está funcionando:

systemctl status nginx

status nginx

y también comprobaremos que nos deja acceder a la página por defecto de nginx desde el navegador con la IP pública de la máquina.

Nota

Aseguraté de que el tráfico HTTP al puerto 80 está permitido.

Lo puedes mirar en NSG.

Ten en cuenta que no soporta HTTPS, si introduces la dirección IP con "https://IP" no funcionará.

nginx defecto

🔷 4. Copiar archivos estáticos a la máquina virtual mediante SSH.

Lo que vamos a hacer en nuestro caso es subir el sitio MkDocs que hemos creado anteriormente.

Para obtener el html que tenemos que subir a la VM lo que haremos en un

mkdocs build
de esta forma se creará una carpeta llamada
site/
con todos los archivos, que será lo que subiremos a la VM.


Una vez tenemos los archivos, los subiremos con scp a la máquina

Desde la máquina local
scp -i ruta/a/clave-ssh.pem -r site/ usuario@IP_PÚBLICA:/home/usuario/

scp

Comprobamos que están en la máquina y los movemos a la carpeta

/var/www/html

donde se alojan los archivos que se muestran en la web.

En la VM de Azure
sudo cp -r /home/azureuser/site/* /var/www/html/

Además le tendremos que dar permisos para que nginx pueda leerlos

En la VM de Azure
sudo chown -R www-data:www-data /var/www/html/

Captura:

archivos nginx


Ahora para acceder solo hace falta buscar la IP pública de la máquina en el navegador y tendremos nuestro apuntes en una web funcional

web