Tema 2.pdf
Document Details
Uploaded by Deleted User
Tags
Full Transcript
UNIDAD 2 2.VIRTUALIZACION Ing. Romel Soliz, MBE INDICE DE AVANCE 2.1. Historia de la Virtualización 2.2. Conceptos Fundamentales (Maquina Virtual e Hipervisor) 2.3. Modelos de Virtualización 2.3.1.Virtualización de plataforma 2.3.2.Virtualización de Recursos 2...
UNIDAD 2 2.VIRTUALIZACION Ing. Romel Soliz, MBE INDICE DE AVANCE 2.1. Historia de la Virtualización 2.2. Conceptos Fundamentales (Maquina Virtual e Hipervisor) 2.3. Modelos de Virtualización 2.3.1.Virtualización de plataforma 2.3.2.Virtualización de Recursos 2.3.3.Virtualización de Aplicaciones Ing. Romel Soliz, MBE CONCEPTO La virtualización es la creación de una forma virtual de un recurso informático como una computadora, un servidor u otro componente de hardware, o un recurso basado en software como un sistema operativo. El ejemplo más común de virtualización es la partición de un disco duro durante la instalación del sistema operativo, en la que el disco duro físico se divide en múltiples discos lógicos para proporcionar un mejor almacenamiento y recuperación de datos (una categoría conocida como "virtualización de datos"). Ing. Romel Soliz, MBE CONCEPTO ABSTRACTO Virtualizar ha sido considerado históricamente y de manera general como tomar algo en cierto estado y hacer parecer que se encuentra en otro estado diferente. A partir de ello, dos aproximaciones han ido evolucionando: hacer parecer que un computador se trata de múltiples computadores y no solamente de uno ”virtualización” o lograr que múltiples computadores sean uno sólo; esto, más que virtualización, comúnmente es llamado Grid Computing o Server Aggregation. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION La virtualización no es un tema novedoso en informática, de hecho se considera que existe, aproximadamente, desde hace cinco o seis décadas (desde 1962). Por aquel entonces y hasta hace pocos años era aplicada en ámbitos exclusivos, sólo prácticamente para los grandes centros de cálculo, tanto bancarios como militares y universitarios. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION Algunos de los usos pioneros de la virtualización incluyen al IBM 7044 (en el que la máquina física era la M44, que albergaba varias máquinas lógicas 44X para los procesos) el CTSS (Compatible Time Sharing System desarrollado por el MIT (Massachusetts Institute of Technology) en el IBM 7044, y el proyecto Atlas de la Manchester University (uno de los primeros supercomputadores del mundo, operativo en 1962), pionero en el uso de paginación bajo demanda y llamadas en modo supervisor. Ing. Romel Soliz, MBE El Proyecto Atlas básicamente consistía en un mecanismo para el reparto y uso al mismo tiempo de los recursos del computador (fundamentalmente procesador y disco), y la seguridad y fiabilidad de que el trabajo de un empleado no interfiriera en el de los otros. En la época de los mainframes, estas cuestiones superaban en importancia al rendimiento en la rapidez de los resultados. Así es como nació la virtualización, con la necesidad de particionar recursos de disco, memoria y capacidad de cómputo. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION IBM reflejó la importancia de la virtualización en los años sesenta con el desarrollo de varios sucesores para el IBM 7044. Uno de ellos, el Model 67 virtualizó todas las interfaces hardware a través del VMM (Virtual Machine Monitor), un monitor de máquinas virtuales, llamado posteriormente en la década de los setenta hipervisor debido a la habilidad que poseía de correr sistemas operativos dentro de otros, y que era ejecutado encima del hardware subyacente. En estos primeros días de la virtualización los sistemas operativos que eran ejecutados en máquinas virtuales eran llamados Conversational Monitor Systems o CMS. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION Estas primeras máquinas virtuales continuaron desarrollándose y avanzando, e incluso en nuestros días se pueden encontrar corriendo en el mainframe System z9TM el cual fue lanzada el año 2006. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION Otro de los primeros usos de la virtualización es el uso del procesador simulado, P- code (Pseudo-code). P-Code es un lenguaje máquina que es ejecutado en una máquina virtual más que en el hardware real, lo que permitió a los programas codificados en P-Code ser altamente portables y correr en cualquier lugar en el que esté disponible la máquina virtual P-Code. Máquinas virtuales de uso extendido en la actualidad siguieron este mismo modelo, como es el caso de la Java Virtual Machine (JVM). El mismo concepto también estuvo presente en el desarrollo del Basic Combined Programming Language o BCPL, el cual de forma posterior se convirtió en “C”. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION Decadencia Con la llegada de los computadores personales el concepto de acceso al mismo tiempo a los recursos de un único supercomputador fue desapareciendo, y con él se vio eclipsada la virtualización: lo importante era el rendimiento más que la seguridad y fiabilidad. Al ocaso de la virtualización también contribuyó el que no fuera una buena idea la partición de los recursos de los miniordenadores o computadores personales debido a su escasez; los mainframes quedaron reducidos a lugares críticos y puntuales. La evolución con los años siguió la misma línea, hasta llegar a la situación que conocemos en la que prácticamente existe un ordenador por persona. Ing. Romel Soliz, MBE Decadencia Afortunadamente la virtualización junto a tecnologías como los sistemas operativos multiusuario y multitarea sobrevivieron en las Universidades y en sectores en los que su uso y fiabilidad eran críticos: grandes empresas, bancos, sistemas militares, etc. Estos sistemas fueron evolucionando y ya no eran los mainframes usados antiguamente, sino que eran sistemas que usaban hardware de miniordenador y con arquitectura mainframe, como la familia IBM AS/400, cuyo primer modelo vio la luz en 1988. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION Resurgimiento Con el aumento de complejidad y potencia de los ordenadores que ya podían ejecutar sistemas multitarea y multiusuario a finales de los ‘90, se pudieron retomar las características del sistema Unix que fueron eliminadas en su su aplicación en equipos domésticos (reducidas para posibilitar la ejecución en sistemas de baja potencia); entre ellas la virtualización. Surgió de nuevo el término de consolidación de almacenamiento, recorriendo el camino inverso desde un disco duro por persona a un disco duro para todos. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION Resurgimiento En el presente, la virtualización ha llegado al escritorio, lo que ha hecho que incremente exponencialmente de nuevo su popularidad y esto provoque que sea una de las tecnologías más innovadoras del momento debido a las notables ventajas que supone su aplicación. Uno de los hechos que justifican esto es que prácticamente todas las grandes empresas dentro del mundo informático han desarrollado productos de virtualización o han adquirido empresas que los ofrecían para adoptarlos en sus entornos empresariales y para ponerlos al alcance de la mayoría de los equipos personales. Ing. Romel Soliz, MBE 2.1 HISTORIA DE LA VIRTUALIZACION Actualidad Hoy en día, las empresas disponen de ordenadores con una potencia de cálculo muy superior a la de decenas de servidores de hace varios años. Ahora que el rendimiento no es problema éste consiste en la seguridad, fiabilidad, y separación de privilegios necesaria, es decir, como ocurría hace aproximadamente cuarenta años en bancos, organizaciones militares y universidades. Estos problemas son ahora las únicas razones para seguir manteniendo servicios separados en diferentes servidores en las empresas. A partir de ahí queda explorar las innumerables ventajas que ofrece la virtualización como solución. Ing. Romel Soliz, MBE INDICE DE AVANCE 2.1. Historia de la Virtualización 2.2. Conceptos Fundamentales (Maquina Virtual e Hipervisor) 2.3. Modelos de Virtualización 2.3.1.Virtualización de plataforma 2.3.2.Virtualización de Recursos 2.3.3.Virtualización de Aplicaciones Ing. Romel Soliz, MBE 2.2 MAQUINA VIRTUAL Son las que corren paralelamente sobre una máquina física anfitrión o host, de manera que tienen acceso y hacen uso de los recursos hardware que son abstraídos de él. Cada máquina virtual es engañada ya que cree que posee de forma exclusiva los recursos hardware de los que dispone cuando en realidad lo hace de manera virtual, ejecuta una instancia de sistema operativo sobre el que corren determinados servicios o aplicaciones tal y como consideremos necesario. Este tipo de virtualización también es llamado hipervisor Tipo2 Ing. Romel Soliz, MBE Ing. Romel Soliz, MBE 2.2 HYPERVISOR Es un pequeño monitor de bajo nivel de máquinas virtuales que se inicia durante el arranque, antes que las máquinas virtuales, y que normalmente corre justo sobre el hardware (denominado en alguna bibliografía como native, baremetal o hipervisor Tipo1), aunque también lo puede hacer sobre un sistema operativo (llamado en este caso hipervisor hosted). En este modelo el sistema operativo corre sobre el hipervisor tal y como lo hacen las máquinas virtuales, el cual puede comunicarse con el hipervisor y cuyo objetivo fundamental es la gestión y administración de las instancias de las máquinas virtuales, por lo que lo habitual es que incluya diversas herramientas de gestión y monitorización, funcionalidad que puede ser también extendida con otras que deseemos instalar por cuenta propia. Ing. Romel Soliz, MBE Ing. Romel Soliz, MBE HIPERVISOR MAQUINA VIRTUAL Ing. Romel Soliz, MBE 2.2 Ejemplos Maquina Virtual e Hipervisores Maquina Virtual Las dos máquinas virtuales de proceso o de aplicación de mayor importancia en la actualidad son JVM (Java Virtual Machine, entorno de ejecución para lenguaje Java de Sun Microsystems) y CLR (Common Language Runtime, entorno de ejecución para la plataforma.NET de Microsoft, ya citadas anteriormente). Hipervisor Esta capa, que puede correr directamente sobre el hardware de la máquina física anfitriona o sobre un sistema operativo anfitrión. De esta tecnología brotan todos los proyectos desarrollados que se presentarán bajo el modelo de virtualización de plataforma, como Xen, VMware, Hiper-V, Linux V-Server, User-mode Linux, KVM u OpenVZ. Ing. Romel Soliz, MBE 2.3 MODELOS DE VIRTUALIZACION 2.3.1.Virtualización de plataforma 2.3.2.Virtualización de Recursos 2.3.3.Virtualización de Aplicaciones Ing. Romel Soliz, MBE 2.3 MODELOS DE VIRTUALIZACION 2.3.1.Virtualización de plataforma El recurso abstraído es un sistema completo, por ejemplo un sistema o servidor. En términos generales consiste en la abstracción de todo el hardware subyacente de una plataforma de manera que múltiples instancias de sistemas operativos puedan ejecutarse de manera independiente, con la ilusión de que los recursos abstraídos les pertenecen en exclusiva. Esto es muy importante, ya que cada máquina virtual no ve a otra máquina virtual como tal, sino como otra máquina independiente de la que desconoce que comparte con ella ciertos recursos. Algunos ejemplos de soluciones de este tipo son VMware Workstation, Parallels, Desktop, Sun xVM VirtualBox, VMware Player, y Microsoft Virtual PC. Ing. Romel Soliz, MBE 2.3 MODELOS DE VIRTUALIZACION 2.3.1.Virtualización de plataforma Tipos y paradigmas de virtualización: 1. Sistemas operativos invitados. 2. Emulación. 3. Virtualización completa. 4. Paravirtualización. 5. Virtualización a nivel del sistema operativo. 6. Virtualización a nivel del kernel. Ing. Romel Soliz, MBE 2.3 MODELOS DE VIRTUALIZACION 2.3.2.Virtualización de recursos En este segundo caso el recurso que se abstrae es un recurso individual de un computador, como puede ser la conexión a red, el almacenamiento principal y secundario, o la entrada y salida. Existe un gran número de ejemplos dentro de la virtualización de recursos, como por ejemplo el uso de memoria virtual, los sistemas RAID (Redundant Array of Independent Disks), LVM (Logical Volume Manager), NAS (Network-Attached Storage) o la virtualización de red. Ing. Romel Soliz, MBE 2.3 MODELOS DE VIRTUALIZACION 2.3.2. Virtualización de recursos Clasificación de Virtualización de recursos: 1. Encapsulamiento. 2. Memoria Virtual. 3. Virtualización de almacenamiento. 4. Virtualización de Red. 5. Unión de interfaces de red (Ethernet Bonding). 6. Virtualización de Entrada/Salida 7. Virtualización de Memoria Ing. Romel Soliz, MBE 2.3 MODELOS DE VIRTUALIZACION 2.3.3.Virtualización de aplicaciones Las aplicaciones son ejecutadas encapsuladas sobre el sistema operativo -recurso usado en este tipo de virtualización- de manera que aunque creen que interactúan con él –y con el hardware- de la manera habitual, en realidad no lo hacen, sino que lo hacen bien con una máquina virtual de aplicación o con algún software de virtualización. Este tipo de virtualización es usada para permitir a las aplicaciones de características como portabilidad o compatibilidad, por ejemplo para ser ejecutadas en sistemas operativos para los cuales no fueron implementadas. Debe quedar claro que la virtualización es solamente de las aplicaciones, lo que no incluye al sistema operativo anfitrión. Ing. Romel Soliz, MBE 2.3 MODELOS DE VIRTUALIZACION 2.3.3.Virtualización de aplicaciones Tipos de Virtualización de Aplicaciones: 1. Virtualización de aplicaciones limitada. Aplicaciones Portables 2. Virtualización de aplicaciones completa. 3. Virtualización de escritorio. Ing. Romel Soliz, MBE Ing. Romel Soliz, MBE Ing. Romel Soliz, MBE Ing. Romel Soliz, MBE Ing. Romel Soliz, MBE INDICE DE AVANCE 3 Contenedores 3.1. Contenedores 3.2. Características 3.3. Diferencias entre contenedores y Maquinas Virtuales 3.4. Componentes Docker Ing. Romel Soliz, MBE 3. CONTENEDORES Los contenedores son una forma de virtualización del sistema operativo a nivel de aplicacion Un solo contenedor se puede usar para ejecutar cualquier cosa, desde un microservicio o un proceso de software a una aplicación de mayor tamaño. Ing. Romel Soliz, MBE 3.1. DOCKERS Y KUBERNETES Dentro de un contenedor se encuentran todos los ejecutables, el código binario, las bibliotecas y los archivos de configuración necesarios. Sin embargo, en comparación con los métodos de virtualización de máquinas o servidores, los contenedores no contienen imágenes del sistema operativo. Esto los hace más ligeros y portátiles, con una sobrecarga significativamente menor. En implementaciones de aplicaciones de mayor tamaño, se pueden poner en marcha varios contenedores como uno o varios clústeres de contenedores. Estos clústeres se pueden gestionar mediante un orquestador de contenedores, como Kubernetes. Ing. Romel Soliz, MBE 3.2. CARACTERISTICAS DOCKERS Menos sobrecarga Los contenedores requieren menos recursos del sistema que los entornos de máquinas virtuales tradicionales o de hardware porque no incluyen imágenes del sistema operativo. Mayor portabilidad Las aplicaciones que se ejecutan en contenedores se pueden poner en marcha fácilmente en sistemas operativos y plataformas de hardware diferentes. Funcionamiento más constante Los equipos de DevOps saben que las aplicaciones en contenedores van a ejecutarse igual, independientemente de dónde se pongan en marcha. Ing. Romel Soliz, MBE 3.2. CARACTERISTICAS DOCKERS Mayor eficiencia Los contenedores permiten poner en marcha, aplicar parches o escalar las aplicaciones con mayor rapidez. Mejor desarrollo de aplicaciones Los contenedores respaldan los esfuerzos ágiles y de DevOps para acelerar los ciclos de desarrollo, prueba y producción. Ing. Romel Soliz, MBE 3.2. DIFERENCIAS ENTRE CONTENEDORES Y MAQUINAS VIRTUALES Es normal confundir la tecnología de contenedores con máquinas virtuales (VM) o con la tecnología de virtualización de servidores. Aunque existen algunas similitudes básicas, los contenedores son muy diferentes de las máquinas VM. Las VM se ejecutan en un entorno de hipervisor en el que cada máquina virtual debe incluir su propio sistema operativo invitado dentro del mismo, junto con sus archivos binarios, bibliotecas y archivos de aplicaciones correspondientes. Esto consume una gran cantidad de recursos y genera mucha sobrecarga, especialmente cuando se ejecutan varias VM en el mismo servidor físico, cada una con su propio sistema operativo invitado. Por el contrario, cada contenedor comparte el mismo sistema operativo host o kernel del sistema y tiene un tamaño mucho menor, a menudo de solo unos megabytes. Esto suele implicar que un contenedor puede tardar unos segundos en iniciarse (en comparación con los gigabytes y los minutos necesarios que requiere una VM típica). Ing. Romel Soliz, MBE 3.2. DIFERENCIAS ENTRE CONTENEDORES Y MAQUINAS VIRTUALES 3.2. COMPONENTES DE DOCKER Docker es una solución muy modular y presenta muchos componentes, sin embargo presenta 3 componentes que son los mas importantes: 1. Docker Daemon, 2. Cliente Docker, 3. Registro de Docker, Ing. Romel Soliz, MBE 3.2. COMPONENTES DE DOCKER 3.2.1. Docker Daemon, o Docker Engine, una capa delgada entre los contenedores y el kernel de Linux. Es el entorno de tiempo de ejecución persistente que administra los contenedores de aplicaciones, y es independiente del sistema operativo subyacente, por tanto, cualquier contenedor de Docker puede ejecutarse en cualquier servidor que tenga habilitado este servicio. Ing. Romel Soliz, MBE 3.2. COMPONENTES DE DOCKER 3.2.2. Cliente Docker, Los usuarios de Docker pueden interactuar con Docker a través de un cliente. Cuando se ejecuta cualquier comando de docker, el cliente los envía al demonio dockerd, que los ejecuta. Los comandos de Docker utilizan la API de Docker. El cliente de Docker puede comunicarse con más de un demonio. Ing. Romel Soliz, MBE 3.2. COMPONENTES DE DOCKER 3.3.3. Registro de Docker, Es la ubicación donde se almacenan las imágenes de Docker. Puede ser un registro de ventana acoplable público o un registro de ventana acoplable privado. Docker Hub es el lugar predeterminado de las imágenes de la ventana acoplable, el registro público de sus tiendas. También puede crear y ejecutar su propio registro privado. Cuando ejecuta los comandos docker pull o docker run, la imagen de la ventana acoplable requerida se extrae del registro configurado. Cuando ejecuta el comando docker push, la imagen de la ventana acoplable se almacena en el registro configurado. Ing. Romel Soliz, MBE 3.2. COMPONENTES DE DOCKER INDICE DE AVANCE 4. Computación en la Nube 4.1. Tipos de Servicios en la Nube 4.2. Proveedores de Servicio en la Nube 4.3.Virtualización en la Nube Ing. Romel Soliz, MBE 4. COMPUTACION EN LA NUBE Los servicios de nube son infraestructuras, plataformas o sistemas de software que alojan los proveedores externos y que se ponen a disposición de los usuarios a través de Internet. Facilitan el flujo de datos de los usuarios a través de Internet, desde los clientes frontend (p. ej., los servidores, las tabletas y las computadoras portátiles o de escritorio; es decir, cualquier sistema en el extremo del usuario) hasta los sistemas de los proveedores, y viceversa. Para acceder a los servicios de nube, los usuarios solo necesitan una computadora, un sistema operativo y conexión a Internet o una red privada virtual (VPN). Ing. Romel Soliz, MBE 4.1. TIPOS DE SERVICIOS EN LA NUBE 1. IaaS 2. PaaS 3. SaaS Ing. Romel Soliz, MBE 4.1. TIPOS DE SERVICIOS EN LA NUBE 1. IaaS En el caso de la IaaS, el proveedor de servicios de nube gestiona la infraestructura por usted (es decir, los servidores, la red, la virtualización y el almacenamiento de datos reales) a través de la conexión a Internet. La infraestructura se alquila, y el usuario accede a ella con una API o un panel. El usuario gestiona el sistema operativo, las aplicaciones y el middleware, mientras que los proveedores se encargan de los sistemas de hardware, las redes, los discos duros, el almacenamiento de datos y los servidores. Además, son los responsables de prevenir las interrupciones, hacer reparaciones y solucionar los problemas de hardware. Este es el modelo de implementación tradicional de los proveedores de almacenamiento en la nube. Ing. Romel Soliz, MBE 4.1. TIPOS DE SERVICIOS EN LA NUBE 2. PaaS En la PaaS, el proveedor externo de servicios de nube proporciona y gestiona el hardware y una plataforma de software de aplicaciones, pero el usuario es quien maneja las aplicaciones que se ejecutan en ella y los datos en los que se basan. Una PaaS ofrece a los usuarios un elemento importante de DevOps: una plataforma en la nube compartida para desarrollar y gestionar aplicaciones sin tener que diseñar ni mantener la infraestructura generalmente asociada con el proceso, lo cual resulta especialmente útil para los desarrolladores y los programadores. Ing. Romel Soliz, MBE 4.1. TIPOS DE SERVICIOS EN LA NUBE 3. SaaS El SaaS es un servicio que ofrece a sus usuarios una aplicación de software que gestiona el proveedor de servicios de nube. Por lo general, las aplicaciones SaaS son aplicaciones web o aplicaciones móviles a las que los usuarios pueden acceder a través de un explorador web. Las actualizaciones de software, las correcciones de fallos y otros mantenimientos generales del software están a cargo del usuario, y se conectan a las aplicaciones de la nube a través de un panel o una API. El SaaS también elimina la necesidad de instalar localmente una aplicación en la computadora de cada usuario, lo cual da lugar a mejores métodos de acceso grupal o en equipo al sistema de software Ing. Romel Soliz, MBE