Please enable JavaScript.
Coggle requires JavaScript to display documents.
Virtualización y Procesamiento Distribuido - Coggle Diagram
Virtualización y Procesamiento Distribuido
Fundamentos y tecnologías de Virtualización.
Introducción
Definición
Abstracción de los recursos (normalmente CPU, memoria RAM, y disco duro) de un ordenador
Simular la existencia de un recurso que, a la hora de interactuar con él, no ofrezca diferencias aparentes con respecto al uso del recurso real.
Utilidad
Simulación de servidores que ofrezcan varios servicios en una misma máquina
Proporciona aislamiento
Migración en caliente de MV de un servidor físico a otro
Mayor facilidad para la creación de entornos test
Administración centralizada y mas simlpe
Flexibilidad a la hora de dotar recursos
Inconvenientes
Rendimiento inferior
Solo se puede usar el hardware que esté gestionado o soportado por el software de virtualización utilizado
Una avería afecta a todas las entidades
Conceptos básicos
Anfitrión o host
Máquina que posee el software de virtualización sobre el que se ejecutan las MV
Huésped o guest
MV que tiene acceso limitado al hardware físico
Hypervisor o VMM
Capa de software que se encarga de manejar los recursos del sistema físico exportándolos a la MV. Es el núcleo de todo software de virtualización
HVM (Hardware-assisted Virtual Machine)
Máquinas virtuales que se benefician de las extensiones específicas de las CPU de Intel y AMD
Tipos de virtualización
Virtualización de recursos
Encapsulamiento
Ocultación de la complejidad de un recurso mediante una interfaz simplificada
Memoria virtual
Técnica realizada por el SO de un ordenador gracias a la cual las aplicaciones "creen" disponer de una memoria de trabajo contigua, cuando en realidad podría estar fragmentada e incluso con ciertos de esos fragmentos en el disco duro
Virtualización de almacenamiento
Abstracción del almacenamiento físico
Virtualización de red
Mediante el cual se crea uno o varios espacios de direccionamiento virtual en una subred
Unión de canales Ethernet
Consiste en utilizar varias interfaces de Ethernet que haya en un ordenador como si fueran una sola, con el objetivo de obtener redundancia o aumentar la velocidad, se suele llamar RAIN
Virtualización de la plataforma
Tipo de virtualización más conocido
Consiste en esconder los recursos físicos del host al sistema operativo, mostrándole otra máquina (virtual) con la que trabaja realmente
Formas:
Cómo se implementa la MV
Cuánto se implica el hardware en ella
Virtualización parcial
Se virtualiza parte del hardware, pero no todo
Permite compartir recursos y, sobretodo, aislar los procesos
No permite varias instancias separadas de sistemas operativos invitados. No sería realmente una MV
Virtualización nativa
Se virtualiza el hardware suficiente para permitir que un sistema operativo invitado, diseñado para la misma CPU que tiene el host, se ejecute de forma aislada
El hypervisor puede usar virtualización por hardware. Si la CPU es compatible
Emulación o simulación
Igual a la anterior, pero el SO del sistema invitado está diseñado para una CPU con una arquitectura completamente diferente
Muy utilizado para permitir la creación de software para nuevos procesadores antes de que estén físicamente disponibles
No puede usar virtualización por hardware
Virtualización a nivel del sistema operativo
Las máquinas virtuales comparten el sistema operativo con el host
El kernel proporciona múltiples espacios de usuario aislados
Es el propio kernel del SO el que se usa para implementar el entorno de dichas máquinas virtuales
No obstante, las aplicaciones que corren en SO invitado lo siguen viendo como un sistema autónomo, al igual que en los anteriores tipos de virtualización
Paravirtualización
El hypervisor ofrece una API especial que sólo puede usarse mediante modificación del SO invitado
Las llamadas a dicha API se conocen como hypercalls
Ventajas:
Menor complejidad del hypervisor
Posibilidad de optimización desde el punto de vista del SO invitado
Suele ser muy rápida
Tipos de Hipervisores
Tipo I o nativo
El hypervisor interactuán directamente con el hardware del sistema anfitrión
Tipo II o no nativo
Se ejecutan como una aplicación de un sistema operativo existente
Su uso conlleva una sobrecarga de rendimiento porque deben utilizar el sistema operativo del host para acceder y coordinar los recursos del hardware del sistema anfitrión
Virtualización basada en hipervisores versus virtualización a nivel de sistema operativo
Diferencias
En la virtualización a nivel de sistema operativo, las máquinas virtuales se gestionan de manera muy similar a los procesos normales del sistema
Los sistemas basados en hypervisor, no dejan al sistema operativo el total control sobre el hardware, sino que es el hypervisor el que se hace cargo de los drivers para discos, tarjetas de red...
Ventajas sobre la virtualización basada en hypervisores
El software de virtualización puede ser más pequeño, porque comparte más funcionalidades con el núcleo del sistema operativo
Se permiten usar funcionalidades del sistema operativo de muy bajo nivel, que normalmente no están soportadas en el hypervisor
Si un dispositivo es controlado por el sistema operativo, entonces estará disponible en la máquina virtual
El sistema Anfitrión y Anatomía de la Máquina Virtual en KVM
Componentes
Kernel-based Virtual Machine (KVM)
Módulos (kVM*)
Quick EMUlator (QEMU)
Librería libvirt
Archivos de configuración XML
Principales Funcionalidades
CPU and memory Overcommiting
Kernel Same-page Merging (KSM)
Disk I/O throttling
Automatic NUMA balancing
Virtual CPU (VCPU) hot add
Virtualización anidada
Recursos de la Máquina Virtual (MV)
CPU Virtual (VCPU)
En virtualización nativa, una MV utiliza un procesador idéntico al del anfitrión
Las instrucciones no privilegiadas son ejecutadas por un procesador del anfitrión
Las privilegiadas por el hypervisor de forma segura
Cada procesador de una MV tiene su propio repertorio de registros, buffers y estructuras de control
Si el anfitrión posee varios procesadores, entonces una MV podrá disponer de varios procesadores virtuales
Las MVs pueden utilizar tres tipos de dispositivos
Dispositivos emulados
Controladoras emuladas
Dispositivos paravirtualizados
Dispositivos físicos del anfitrión
El acceso a memoria principal de una MV se realiza a través del hipervisor que:
Proporciona a las MVs un espacio de memoria contiguo
Mapea las memorias de las MVs en los dispositivos de almacenamiento del anfitrión de virtualización. Esto se realiza de forma transparente a las MVs
Tipos de memoria
No paginada
Reside en memoria principal, prioriza rendimiento
Paginada
Puede ser transferida al área de intercambio. Prioriza escalabilidad
Virtual Function I/O (VFIO)
Virtualización de E/S de raíz única (Single Root I/O Virtualization, SR-IOV)
Funciones físicas (PF)
Funciones virtuales (VF)
Almacenamiento
Se proporciona a partir del espacio de almacenamiento que el sistema anfitrión proporciona para este fin
Controladoras de almacenamiento paravirtualizadas
Controladoras de almacenamiento emuladas
Contenedores de almacenamiento
Se pueden desplegar en:
Espacios de almacenamiento local
Almacenamiento compartido mediante protocoles de red
Las unidades de almacenamiento que utilizan las MVs se denominan imágenes de disco
Propiedades
Expansión dinámica (Dynamically Expanding/Dynamic Disk)
Se reserva su tamaño al crearlo (Fixed/Prellocated DIsk)
Se asocia a un disco físico o partición física (Linked/Physical Disk)
Primero temporal y luego disco virtual (Undo/Undoable Disk)
Escrituras cuando el SO de la MV las ordena (Persistent Disk) o descartar y reiniciar al reinicar la MV (Nonpersistent Intependent Disk)
Accesos en archivo de log de sesión y posteriormente de forma voluntaria se actualiza el disco (Append Disk)
Contenido de disco mediante estructura jerárquica de imágenes (Differencing Disks). Se parte de una inicial (Baseline Virtual Disk) y se van generando adicionales (Child Disks)
Tamaño dinámico (Resizing Disk)
Formatos
raw
dmg
iso
qcow y qcow2
vpc
vdi
Recursos Virtuales de Red
Controladores de red (NIC)
Controladora emulada
Controladora paravirtualizada
Controladora del anfitrión conectada a la MV
Switch Virtual
Red virtual aislada
Red virtual de tipo NAT
Red virtual de tipo enrutada
Interfaz en modo puente (Bridge)
Principios básicos de seguridad en sistemas anfitriones
Fundamentos sobre SElinux
Discretionary Access Control (DAC)
SElinux es un caso de implementación del modelo Mandatory Access Control
Se realiza en función de políticas que definen quién tiene acceso y a que recursos
En sistemas linux primero se aplica DAC y si es permitido entonces SElinux
Servicio systemd
Responsable de la administración de servicios que se ejecutan en el stistema
La unidad de servicio de systemd se denomina unit y consta de un demonio, una extensión que especifica su tipo y un archivo de configuración, cuyo nombre coincide con el nombre de la unidad
La orden para administrar los servicios controlados por systemd es systemctl
Firewalld
Interfaz (front-end) que se sustenta en iptables
Emplea el concepto de zona para agrupar reglas
También el concepto de servicio en una zona concreta para aplicar reglas que definen el comportamiento del cortafuegos
Conjuntos de configuración
Configuración en ejecución
Configuración permanente
Almacenamiento Virtual
Almacenamiento en KVM
El ciclo de vida de un contenedor de volúmenes
Contenedor de almacenamiento (Storage Pool)
Abstracción de un espacio de almacenamiento en el que se crearán los volúmenes virtuales utilizados por las MVs
Introducción a los Sistemas de Almacenamiento Distribuido
Definición
Una red de almacenamiento distribuido (Distributed Storage Network - DSN) es una infraestructura que permite el acceso compartido de múltiples sistemas al recurso de almacenamiento de un sistema de información (SI)
Objetivos
Mejorar los siguientes aspectos
Disponibilidad
Eficiencia
Independencia de tecnologías y fabricantes
Definiciones
Red de almacenamiento (Storage Network)
Red de área local (Local Area Network - LAN)
Red de banda ancha (Wide Area Network -. WAN)
Storage Area Network (SAN)
Niveles OSI
Físico
Enlace de datos
Red
Transporte
Sesión
Presentación
Aplicación
Tipología punto-a-punto en SAN
Tipología bucle arbitrado
Tipología basada en switch
Network Attached Storage
Almacenamiento compartido
Virtualización de almacenamiento
Reduntant Array of Independent Disks (RAID)
Just a Bunch of Disk (JBOD)
Replicación de disco (Disk Mirroring)
Replicación síncrona
Replicación asíncrona
Replicación centrada en el procesador
Replicación centrada en el almacenamiento
Almacenamiento iSCSI
Introducción
iSCSI es una tecnología de almacenamiento IP
Consiste en transportar bloques de datos utilizando Internet y el protocolo TCP/IP
Características generales de iSCSI
Mapea el modelo de procedimiento de invocación de SCSI sobre el protocolo TCP
Las órdenes y respuestas del protocolo SCSI se transportan vía peticiones respuestas iSCSI
Para alcanzar una mayor eficiencia, iSCSI no utiliza de forma estricta la secuencia orden/data/estado/mensajes empleada por el protocolo SCSI
Arquitectura del protocolo iSCSI
Estructura por capas
Capa SCSI
Capa iSCSI
Capa TCP
Protocolo SCSI
Unidad Initiator
Unidad target
Login iSCSI
Nombres iSCSI
Almacenamiento compartido iSCSI
iSCSI initiator
iSCSI target
Sesión de conexión de nodo initiator - nodo target
Computación en Clúster
High Performance Cluster Computing
Introducción
Cúster es un tipo de arquitectura escalable para el procesamiento distribuido. Su principal motivación es la supercomputación de bajo coste
Tipos de clúster
En función del objetivo
Alto rendimiento
Alta disponibilidad
Almacenamiento distribuido
De balanceo de carga
En función de la configuración del nodo
Homogéneo
Heterogéneo
Componentes
Nodos
Interconexión
Sistema operativo
Middleware
Objetivo
Cumplir con el requerimiento de Imagen Única del sistema
Middleware
Es un módulo software estructurado en dos capas
Infraestructura SSI
Infraestructura de disponibilidad del sistema
Recursos básicos para la programación y administración
Entornos de programación estándares para entornos distribuidos
Uso de hilos
Sistemas de mensajes
Sistemas de memoria compartida y distribuida
Depuradores
Herramientas de análisis de rendimiento
Administración
Red Hat Enterprise High Availability Add-On
Visión general
Tipos de clúster soportados en Red Hat
Alta disponibilidad
Almacenamiento
Balanceo de carga
Componentes de High Availability Add-oN
Cluster Infraestructura
High-availability Service Managemente
Cluster administration tool
Componentes suplementarios
Red Hat Global File System
Cluster Logical Volume Manager
Load Balancer Add-On
Infraestructura
Proporciona las funcionalidades básicas para que los nodos puedan trabajar de manera conjunta
Cluster configuration and management
Lock management
Aislamiento (Fencing)
Servicio Pacemaker
Manejo de la configuración y estado del cúster
Nodo coordinador
Archivos XML
Demonio Pacemaker
Manejo de los recursos del cúster
Demonio Cluster Resource Management
Demonio Local Resource Management
Manejo del aislamiento
Shoot the Other Node in the Head
Manejo de los aspectos básicos del clúster
Manejo de mensajes y quorum
Demonio responsable Corosync
Recursos
Recurso
Instancia de programa, dato o aplicación
Tipos de recursos
Linux Standards Base
Open Cluster Framework
Systemd
Nagios
STONITH
Los recursos se monitorizan cada 60 segundos por defecto
Restricciones de recursos
Restricciones de localización
Restricciones de orden
Restricciones de colocación
Grupos de recursos
La creación de recursos y grupos se realiza mediante la orden pcs con la opción resource
Algoritmos de Sincronización para el Control de Acceso a Secciones Críticas
Introducción
Objetivo
Garantizar el acceso correcto a una sección crítica en entornos distribuidos en los que los nodos están interconectados por red
Los protocolos se basan en mensajes de red que intercambian los nodos que quieren acceder a la S.C. Sus rendimientos dependen de
Tráfico de mensajes que generan
El tiempo de latencia de los mensajes
Dos tipos de algoritmos
Basados en permisos
Basados en testigos
Algoritmos basados en testigos
Algoritmo de Martin
Algoritmo de Naimi-Tréhel
Algoritmo de Suzuki-Kasami
Algoritmos para grandes configuraciones
Se aplican en grandes configuraciones de clúster
Objetivos:
Reducir el número de mensajes que intervienen en el algoritmo de arbitraje de entrada a la S.C
Disminuir los tiempos de espera antes de entrar a la S.C
Algoritmos basados en prioridades
Algoritmo de Bertier
Algoritmo de Muller
Estrategias combinadas
Se basa en distinguir dos niveles
Nivel intra-clúster
Nivel inter-clúster
Se establece una prioridad entre los dos niveles
En cada nivel se utiliza un algoritmo que en la mayoría de propuestas son diferentes