Diferencia entre revisiones de «Teoría sobre virtualización e computación na nube»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 87: Línea 87:
 
:capacidade de asignar e liberar automaticamente recursos segundo a demanda, de xeito dinámico e flexible.
 
:capacidade de asignar e liberar automaticamente recursos segundo a demanda, de xeito dinámico e flexible.
 
;Dispoñibilidade:
 
;Dispoñibilidade:
−
capacidade dun sistema para permanecer operativo e accesible a pesar de fallos de hardware ou software. A alta dispoñibilidade conséguese mediante redundancia, replicación e balanceo de carga.
+
:capacidade dun sistema para permanecer operativo e accesible a pesar de fallos de hardware ou software. A alta dispoñibilidade conséguese mediante redundancia, replicación e balanceo de carga.
  
 
'''Esquema resumo:'''
 
'''Esquema resumo:'''

Revisión del 18:55 10 sep 2025

Introdución á virtualización e á computación na nube

Conceptos básicos

Virtualización fronte a emulación

A emulación consiste en reproducir mediante software o funcionamento dun hardware distinto ao real. Isto permite executar sistemas operativos ou aplicacións deseñadas para outra arquitectura, pero adoita implicar unha perda considerable de rendemento, xa que cada instrución debe ser traducida.

A virtualización, pola contra, aproveita os recursos de hardware reais (especialmente as extensións de virtualización presentes en procesadores modernos) para crear máquinas virtuais illadas. Cada máquina virtual (VM) pode executar o seu propio sistema operativo coma se fose un equipo independente, pero compartindo o mesmo hardware físico. A diferenza clave é que a virtualización é moito máis eficiente que a emulación.

Característica Emulación Virtualización
Rendemento Baixo Alto
Compatibilidade Alta (pódese emular outra arquitectura) Limitada á arquitectura do hardware
Uso típico Consolas antigas, probas de software en hardware diferente Centros de datos, servidores, nube privada

Virtualización fronte a contedores

A virtualización tradicional crea máquinas virtuais completas, cada unha co seu propio sistema operativo, kernel e aplicacións. Isto implica máis consumo de recursos, pero ofrece un maior illamento e compatibilidade.

Os contedores, pola súa parte, comparten o mesmo kernel do sistema operativo anfitrión e illan unicamente as aplicacións e as súas dependencias. Isto fai que sexan moito máis lixeiros e rápidos de despregar, aínda que ofrecen un illamento menor fronte ás VM.

Aspecto Máquinas virtuais (VMs) Contedores
Sistema operativo Cada VM ten o seu propio SO completo Comparten o kernel do SO anfitrión
Consumo de recursos Alto (cada VM precisa memoria e CPU propios) Baixo (só cargan aplicacións e dependencias)
Illamento Moi alto Medio
Velocidade de inicio Segundos ou minutos Milisegundos
Uso típico Aplicacións tradicionais, múltiples SOs nun mesmo hardware Microservizos, despregues masivos na nube

Tipos de hipervisores (tipo 1 e tipo 2)

Un hipervisor é o software encargado de crear e xestionar máquinas virtuais. Existen dous tipos principais.

Hipervisor tipo 1 (bare-metal)
execútase directamente sobre o hardware físico, sen necesidade dun sistema operativo anfitrión. Ofrece maior rendemento e está pensado para contornas profesionais (ex. VMware ESXi, Microsoft Hyper-V Server, Proxmox, Xen).
Hipervisor tipo 2 (hosted)
execútase por riba dun sistema operativo anfitrión. É máis sinxelo de instalar e usar, aínda que menos eficiente (ex. VirtualBox, VMware Workstation).
Característica Hipervisor tipo 1 Hipervisor tipo 2
Onde se executa Directamente no hardware Sobre un sistema operativo anfitrión
Rendemento Alto Medio
Complexidade Maior, precisa configuración avanzada Menor, máis sinxelo de usar
Exemplos VMware ESXi, Xen, Proxmox, Hyper-V Server VirtualBox, VMware Workstation

Computación na nube: IaaS, PaaS, SaaS

A computación na nube baséase en ofrecer recursos e servizos a través de Internet. Distínguense varios modelos:

IaaS (Infrastructure as a Service)
o provedor ofrece infraestrutura virtualizada (máquinas virtuais, redes, almacenamento). O cliente ten control sobre o sistema operativo e o software.
Exemplo: Amazon EC2, Microsoft Azure VMs.
PaaS (Platform as a Service)
ademais da infraestrutura, ofrécese unha plataforma completa para desenvolver e despregar aplicacións sen preocuparse pola xestión do sistema operativo.
Exemplo: Google App Engine, Heroku.
SaaS (Software as a Service)
o servizo ofrécese directamente ao usuario final como unha aplicación dispoñible en liña. O cliente só usa a aplicación sen xestionar infraestrutura nin plataforma. Exemplo: Gmail, Microsoft 365, Dropbox.
Modelo Que xestiona o provedor Que xestiona o cliente Exemplos
IaaS Hardware, rede, almacenamento SO, aplicacións Amazon EC2, Azure VMs
PaaS Infraestrutura + Sistema operativo + Middleware Aplicacións Google App Engine, Heroku
SaaS Todo (infraestrutura + plataforma + aplicación) Só o uso Gmail, Microsoft 365, Dropbox

Escalabilidade, elasticidade e dispoñibilidade

Na contorna da nube, tres conceptos resultan fundamentais:

Escalabilidade
capacidade dun sistema para aumentar ou reducir recursos (CPU, memoria, nodos, etc.) en función da carga de traballo.
Elasticidade
capacidade de asignar e liberar automaticamente recursos segundo a demanda, de xeito dinámico e flexible.
Dispoñibilidade
capacidade dun sistema para permanecer operativo e accesible a pesar de fallos de hardware ou software. A alta dispoñibilidade conséguese mediante redundancia, replicación e balanceo de carga.

Esquema resumo:

  • Escalabilidade → Aumentar/reducir recursos.
  • Elasticidade → Adaptación automática en tempo real.
  • Dispoñibilidade → Manter o servizo activo e accesible.

Ferramentas de virtualización clásica

Hipervisores

A virtualización clásica baséase no uso de hipervisores para crear e xestionar máquinas virtuais. Estes permiten executar varios sistemas operativos nun mesmo hardware físico, compartindo recursos de forma eficiente e segura. A continuación preséntanse as principais ferramentas de virtualización empregadas tanto a nivel doméstico como profesional.

VirtualBox

VirtualBox Guest Additions Logo 2009-2010.png

VirtualBox é un hipervisor de tipo 2, desenvolvido inicialmente por Sun Microsystems e actualmente mantido por Oracle.

  • É multiplataforma: funciona en Windows, Linux e macOS.
  • Permite crear e executar máquinas virtuais con numerosos sistemas operativos convidados (Windows, Linux, BSD, Solaris, etc.).
  • Ofrece funcionalidades como instantáneas (snapshots), carpetas compartidas, soporte USB e integración do rato/teclado entre anfitrión e convidado.
  • Moi empregado en contornas educativas e para probas de software, pola súa sinxeleza de uso e ser de código aberto (licenza GPL).

QEMU

256px-Qemu logo.svg.png

QEMU (Quick Emulator) é unha ferramenta de emulación e virtualización multiplataforma de código aberto.

  • Pode funcionar coma emulador completo, permitindo executar sistemas operativos doutras arquitecturas (x86, ARM, PowerPC, RISC-V, etc.).
  • Combinado con KVM* en Linux, pode funcionar como hipervisor de alto rendemento, empregando directamente as extensións de virtualización do procesador.
  • Moi empregado en investigación, desenvolvemento de sistemas operativos e contornas onde se precisa probar software en diferentes arquitecturas.

KVM

256px-Kvmbanner-logo2 1.png

KVM (Kernel-based Virtual Machine) é unha tecnoloxía de virtualización integrada no kernel de Linux desde a versión 2.6.20.

  • Converte o kernel de Linux nun hipervisor de tipo 1, ao permitir crear máquinas virtuais que executan sistemas convidados illados.
  • Utiliza as extensións de virtualización dos procesadores (Intel VT-x ou AMD-V).
  • Escalable e eficiente, é moi usado en servidores e nubes privadas.
  • Xeralmente combínase con ferramentas coma QEMU (para emulación e xestión de hardware virtual) e libvirt (para administración).
  • É a base de moitas solucións de nube privada, coma OpenStack.

Hyper-V

Hyper-V é a tecnoloxía de virtualización de Microsoft.

  • Está dispoñible en Windows Server e tamén en versións profesionais de Windows 10/11.
  • É un hipervisor de tipo 1 (execútase directamente sobre o hardware), aínda que integrado no sistema operativo.
  • Ofrece soporte para máquinas virtuais Windows e Linux.
  • Inclúe funcionalidades como snapshots, migración en quente (Live Migration) e integración coa nube de Microsoft Azure.
  • Moi empregado en empresas con infraestruturas baseadas en tecnoloxías Microsoft.

Proxmox VE (Virtual Environment)

Proxmox VE é unha plataforma de virtualización de código aberto que integra hipervisores e ferramentas de xestión.

  • Combina KVM (para máquinas virtuais) con LXC (para contedores lixeiros).
  • Inclúe unha interface web intuitiva que facilita a administración de máquinas virtuais, redes e almacenamento.
  • Soporta funcionalidades avanzadas como alta dispoñibilidade, clustering, copias de seguridade e replicación.
  • Está especialmente orientado a servidores e centros de datos que precisan unha solución completa e gratuíta de virtualización.

Resumo

  • VirtualBox: doado de usar, ideal para uso persoal e educativo.
  • QEMU: moi flexible, con emulación de arquitecturas e integración con KVM.
  • KVM: hipervisor nativo de Linux, moi empregado en servidores.
  • Hyper-V: solución de Microsoft, integrada en Windows e Azure.
  • Proxmox VE: plataforma completa, combina KVM e contedores, con xestión avanzada vía web.
Ferramenta Tipo de hipervisor Plataforma principal Puntos fortes Casos de uso típicos
VirtualBox Tipo 2 Windows, Linux, macOS Fácil de usar, multiplataforma, snapshots Educación, probas de software, uso persoal
QEMU Emulador + integración con KVM Linux, multiplataforma Emula múltiples arquitecturas, moi flexible Investigación, desenvolvemento de SO, probas en diferentes arquitecturas
KVM Tipo 1 (integrado en Linux) Linux Alto rendemento, nativo no kernel, escalable Servidores, nube privada, datacenters
Hyper-V Tipo 1 (integrado en Windows) Windows Server, Windows 10/11 Pro/Enterprise Integración con Azure, snapshots, Live Migration Empresas con ecosistema Microsoft
Proxmox VE Tipo 1 (baseado en KVM + LXC) Linux (Debian) Plataforma completa, interface web, soporte de clusters Centros de datos, servidores con alta dispoñibilidade

Virtualización baseada en contedores

Os contedores permiten executar aplicacións illadas, compartindo o kernel do sistema operativo anfitrión. Son máis lixeiros que as máquinas virtuais, polo que se usan masivamente en despregues modernos, especialmente no contexto de microservizos e DevOps.

Contedores lixeiros

Linux Containers (LXC)

Linux Containers (LXC) é unha das primeiras tecnoloxías de contedores dispoñibles en Linux.

  • Baseado en funcionalidades do kernel (cgroups e namespaces) que permiten illar procesos, recursos de CPU, memoria, rede e almacenamento.
  • Permite crear contedores que se asemellan a un sistema operativo lixeiro, cun espazo de usuarios propio.
  • É máis próximo á virtualización tradicional, pois cada contedor pode executar múltiples procesos como se fose un sistema completo.
  • Úsase para escenarios onde se precisa illamento lixeiro pero con flexibilidade semellante a unha máquina virtual.

Docker

Docker é a tecnoloxía de contedores máis popular e estendida.

  • Introduciu un enfoque sinxelo para crear, distribuír e executar aplicacións en contedores.
  • Baseado en imaxes: cada contedor créase a partir dunha imaxe que define todo o necesario (aplicación + dependencias).
  • Dispón de **Docker Hub**, un rexistro público de imaxes preparado para compartir e reutilizar.
  • Mellor integrado con ferramentas DevOps, CI/CD e plataformas de orquestración como Kubernetes.
  • Moi empregado en desenvolvemento, probas e despregue en produción.

Podman

Podman é unha alternativa a Docker, desenvolvida pola comunidade de Red Hat.

  • Compatible co formato de imaxes de Docker (OCI), polo que pode usar as mesmas imaxes.
  • Non require un daemon en segundo plano como Docker, o que aumenta a seguridade e reduce a superficie de ataque.
  • Permite executar contedores en modo **rootless**, é dicir, sen permisos de administrador.
  • Inclúe tamén a ferramenta **Buildah** (para crear imaxes) e **Skopeo** (para xestionar rexistros).
  • Moi empregado en contornas empresariais que requiren estándares abertos e maior seguridade.

Nomad (HashiCorp)

Nomad é unha ferramenta de HashiCorp que vai máis alá da simple execución de contedores: é un orquestrador lixeiro de cargas de traballo.

  • Permite despregar e xestionar contedores (Docker, Podman, etc.), pero tamén aplicacións non conteinerizadas.
  • É máis sinxelo que Kubernetes, centrado na facilidade de uso e integración co resto do ecosistema HashiCorp (Consul, Vault, Terraform).
  • Moi útil en organizacións que precisan unha solución de orquestración máis lixeira que Kubernetes, con menor complexidade de instalación e mantemento.

Resumo

  • LXC: contedores máis próximos ás máquinas virtuais, flexibles e completos.
  • Docker: estándar de facto en contedores, fácil de usar e masivamente adoptado.
  • Podman: alternativa a Docker, máis segura e sen daemon central.
  • Nomad: solución de orquestración lixeira, soporta contedores e cargas tradicionais.

Orquestración e plataformas de contedores

A medida que o uso de contedores medrou, xurdiu a necesidade de ferramentas que xestionen a súa execución en gran escala. Estas ferramentas de orquestración permiten despregar centos ou milleiros de contedores, garantindo a súa dispoñibilidade, escalabilidade e comunicación entre eles.

Kubernetes

Kubernetes (K8s) é a plataforma de orquestración de contedores máis usada no mundo.

  • Desenvolvida inicialmente por Google e agora mantida pola Cloud Native Computing Foundation (CNCF).
  • Automatiza o despregue, a xestión e a escalabilidade de aplicacións en contedores.
  • Funciona mediante un clúster de nodos:
    • Nodo mestre: xestiona o estado global, planificación e control.
    • Nodos traballadores: executan os contedores.
  • Funcionalidades clave: escalado automático, balanceo de carga, actualizacións sen interrupción, autoxestión fronte a fallos.
  • Moi usado en contornas de produción e nubes públicas (Google Cloud, Azure, AWS).

MicroK8s

MicroK8s é unha versión lixeira de Kubernetes, desenvolvida por Canonical (empresa detrás de Ubuntu).

  • Pensada para instalacións sinxelas en equipos locais ou servidores pequenos.
  • Permite ter un clúster Kubernetes funcional cun só comando de instalación.
  • Moi útil para probas, contornas de desenvolvemento ou pequenas empresas que non precisan a complexidade de Kubernetes completo.
  • Soporta extensións opcionais (DNS, dashboard, storage, etc.) que se poden activar con facilidade.

k3s

k3s é outra distribución lixeira de Kubernetes, desenvolvida por Rancher.

  • Está optimizada para dispositivos con poucos recursos (IoT, edge computing, clusters pequenos).
  • Requere menos memoria e CPU que Kubernetes estándar.
  • Fácil de instalar e manter, cun binario único.
  • Moi empregado en proxectos de computación na periferia (edge) ou en contornas educativas e experimentais.

OpenShift

OpenShift é unha plataforma empresarial baseada en Kubernetes, desenvolvida por Red Hat.

  • Inclúe Kubernetes como núcleo, pero engade ferramentas e servizos adicionais que facilitan o desenvolvemento e o ciclo de vida das aplicacións.
  • Ofrece un ecosistema completo: control de acceso, integración continua, rexistro de imaxes, monitorización, etc.
  • Pode despregarse en nubes privadas, híbridas ou públicas.
  • É unha solución máis enfocada a empresas que buscan unha plataforma lista para produción con soporte comercial.

Resumo

  • Kubernetes: estándar de orquestración, potente pero complexo.
  • MicroK8s: versión lixeira e sinxela de instalar, ideal para desenvolvemento.
  • k3s: Kubernetes ultralixeiro, optimizado para IoT e edge computing.
  • OpenShift: plataforma empresarial baseada en Kubernetes, con servizos adicionais e soporte comercial.

Infraestrutura como código e automatización

A medida que as infraestruturas informáticas medraron en tamaño e complexidade, fíxose necesario contar con ferramentas que permitan **automatizar a súa creación, configuración e mantemento**. Aquí é onde entra o concepto de **Infraestrutura como Código (IaC, Infrastructure as Code)**.

A idea principal é tratar a infraestrutura (servidores, redes, almacenamento, contedores) do mesmo xeito que se trata o código dunha aplicación. É dicir:

  • Defínese mediante ficheiros de configuración ou scripts.
  • Pódese versionar con sistemas como Git.
  • Pode executarse e repetirse de forma automática, reducindo erros humanos.

As vantaxes principais da IaC son:

  • Reproducibilidade: pódense crear contornas idénticas (produción, desenvolvemento, probas) con poucos comandos.
  • Escalabilidade: facilita engadir ou retirar recursos automaticamente.
  • Automatización: aforra tempo ao evitar configuracións manuais repetitivas.
  • Seguridade e control: todos os cambios quedan rexistrados en código, o que facilita auditorías e reversións.

Dentro deste ámbito existen diferentes ferramentas que cumpren papeis específicos, e que resumiremos a continuación.

Ansible

  • Ferramenta de automatización e xestión de configuración.
  • Usa ficheiros YAML (playbooks) para describir as accións a executar nos servidores.
  • Non require axente nos equipos, comunícase a través de SSH.
  • Moi usado para instalar software, configurar servizos e aplicar cambios en gran escala.

Vagrant

  • Ferramenta pensada para crear contornas de desenvolvemento reproducibles.
  • Permite definir máquinas virtuais con configuracións predeterminadas mediante un ficheiro chamado `Vagrantfile`.
  • Integra con VirtualBox, VMware, Hyper-V ou mesmo contedores Docker.
  • Moi útil para desenvolvedores que precisan traballar en equipos idénticos ao de produción.

Packer

  • Ferramenta especializada en crear imaxes de máquinas virtuais ou contedores de forma automatizada.
  • Permite xerar imaxes listas para diferentes plataformas (VirtualBox, VMware, AWS, Azure, Docker, etc.) a partir dunha única configuración.
  • Moi usada en combinación con Vagrant ou con sistemas de nube para despregar servidores con imaxes estándar.

Resumo

  • Ansible: automatización e configuración de sistemas.
  • Vagrant: creación de contornas de desenvolvemento reproducibles.
  • Packer: xeración automática de imaxes para máquinas virtuais e contedores.

Almacenamento e sistemas distribuídos

Coa expansión da virtualización e da computación na nube, o almacenamento converteuse nun dos piares fundamentais das infraestruturas modernas. Non abonda con ter discos locais nun servidor: cómpre dispoñer de solucións que permitan:

  • **Escalar** o espazo de almacenamento segundo as necesidades.
  • **Replicar** os datos para garantir a seguridade fronte a fallos.
  • **Ofrecer alta dispoñibilidade**, de xeito que os servizos sigan funcionando incluso se cae un nodo.

O almacenamento distribuído baséase en combinar múltiples servidores (ou nodos) que traballan conxuntamente para ofrecer un único sistema de almacenamento. Isto garante:

  • **Redundancia:** os datos gárdanse en varios nodos, polo que non se perden se un falla.
  • **Escalabilidade horizontal:** engadindo novos nodos increméntase a capacidade.
  • **Rendemento:** pódese mellorar ao distribuír a carga entre varios equipos.

Dúas solucións de código aberto moi empregadas neste ámbito son **Ceph** e **GlusterFS**.

Ceph

  • Sistema de almacenamento distribuído de alto rendemento.
  • Ofrece diferentes interfaces de acceso:
    • RADOS (obxectos)
    • CephFS (sistema de ficheiros)
    • RBD (discos en bloque, usado en proxectos como OpenStack).
  • Moi usado en contornas de nube e grandes centros de datos.
  • Destaca pola súa capacidade de escalar a centos ou milleiros de nodos.
  • Autoxestionado: reequilibra automaticamente os datos cando se engaden ou eliminan discos/nodos.

GlusterFS

  • Sistema de almacenamento en rede distribuído e escalable.
  • Permite montar múltiples servidores de almacenamento como se fosen un único sistema de ficheiros.
  • Moi sinxelo de configurar en comparación con Ceph.
  • Orientado a contornas que precisan alta dispoñibilidade e escalabilidade moderada.
  • Úsase en proxectos onde se require un sistema de ficheiros compartido por varias máquinas virtuais ou contedores.

Resumo

  • Ceph: máis complexo, pero moi potente e escalable; ideal para grandes nubes privadas e datacenters.
  • GlusterFS: máis sinxelo de despregar; ideal para proxectos medianos que precisan almacenamento compartido e redundante.

Plataformas de nube privada e híbrida

Coa evolución da virtualización e a computación na nube, moitas organizacións precisan xestionar os seus propios recursos de xeito semellante ás grandes nubes públicas (AWS, Azure, Google Cloud). Para iso existen as plataformas de nube privada e nube híbrida.

Nube privada
os recursos de computación, rede e almacenamento pertencen a unha organización e xestiónanse de forma interna. Permite maior control e seguridade, aínda que require máis esforzo de administración.
Nube híbrida
combina unha nube privada con servizos dunha nube pública, permitindo mover cargas de traballo entre ambas segundo as necesidades (ex. picos de demanda).

Estas plataformas permiten ofrecer IaaS (Infrastructure as a Service) dentro dunha organización, con funcionalidades como:

  • Creación e xestión de máquinas virtuais baixo demanda.
  • Redes virtuais e balanceo de carga.
  • Almacenamento distribuído.
  • Autenticación e control de acceso.
  • Interfaces web e API para desenvolvedores e administradores.

A solución máis coñecida e empregada neste ámbito é OpenStack.

OpenStack

  • Proxecto de código aberto nacido en 2010 da colaboración entre Rackspace e NASA.
  • Permite construír nubes privadas e híbridas con servizos equivalentes aos de provedores comerciais.
  • Estrutura modular: cada compoñente encárgase dunha parte da infraestrutura. Exemplos:
    • Nova: xestión de máquinas virtuais (compute).
    • Neutron: xestión de redes virtuais.
    • Cinder: almacenamento en bloques.
    • Swift: almacenamento de obxectos.
    • Keystone: autenticación e autorización.
    • Horizon: panel web de administración.
  • Altamente escalable: pode funcionar en pequenos clusters ou en grandes centros de datos.
  • Amplamente usado por universidades, provedores de servizos e organizacións que precisan controlar a súa propia nube.
  • Conta cunha gran comunidade de desenvolvedores e empresas que ofrecen soporte comercial (Red Hat, Canonical, etc.).

Resumo

  • Nube privada: control interno, máis seguridade, máis responsabilidade de xestión.
  • Nube híbrida: combina nube privada con pública para flexibilidade e escalado.
  • OpenStack: plataforma de código aberto modular e escalable, estándar de facto en nubes privadas.

Tendencias actuais e conclusións

  • Contedores fronte a máquinas virtuais: usos recomendados
  • DevOps, GitOps e integración coa nube pública
  • Futuro da virtualización e a computación na nube