Cloud Computing. Contenedores

download Cloud Computing. Contenedores

of 34

  • date post

    15-Jan-2017
  • Category

    Education

  • view

    314
  • download

    6

Embed Size (px)

Transcript of Cloud Computing. Contenedores

  • CloudcomputingMster Profesionalizante Ingeniera

    Informtica 2015-2016

    Mara Isabel Garca Arenas8 de diciembre de 2015

  • Contenedores: Objetivos

    1)Conocer las diferentes tecnologas y herramientas de virtualizacin tanto

    para procesamiento, comunicacin y almacenamiento.

    2)Instalar, configurar, evaluar y optimizar las prestaciones de un servidor

    virtual.

    3)Configurar los diferentes dispositivos fsicos para acceso a los servidores

    virtuales: acceso de usuarios, redes de comunicaciones o entrada/salida.

    4)Disear, implementar y construir un centro de procesamiento de datos virtual.

    5)Documentar y mantener una plataforma virtual.

    6)Optimizar aplicaciones sobre plataformas virtuales.

    7)Conocer diferentes tecnologas relacionadas con la virtualizacin

    (Computacin Nube, Utility Computing, Software as a Service) e

    implementaciones tales como Google AppSpot, OpenShift o Heroku.

    8)Realizar tareas de administracin en infraestructura virtual.

  • Contenedores: Objetivos especficos

    1)Entender cmo las diferentes tecnologas de virtualizacin se integran en la

    creacin de contenedores.

    2) Crear infraestructuras virtuales completas.

    3) Comprender los pasos necesarios para la configuracin automtica de las

    mismas.

  • Contenedores: Aislamiento de procesos

    Desde los 80 se aislan procesos en Unix

    El ejemplo ms antiguo es Chroot http://es.wikipedia.org/wiki/Chroot (5

    minutos)

    Ejercicio: Explicar con vuestras propias palabras qu hace Chroot

    Ejemplo: Establecer un entorno aislado para el comando ls (siguiente

    transparencia)

    Comprobacin, intentar ir a vuestro directorio $HOME, una vez creada la

    jaula

    El proceso que hace chroot simplemente protege partes del sistema de

    archivos, aunque esta proteccin es fcil saltarsela, pero el proceso de

    aislamiento est hecho, es lo que se dice una virtualizacin ligera.

    http://es.wikipedia.org/wiki/Chroot

  • prompt%JAULA=$HOME/jaula

    echo$JAULA

    mkdirp$JAULA

    mkdirp$JAULA/{bin,lib64,lib}'creamosestostresdirectorios

    cpv/bin/{bash,ls}$JAULA/bin'copiamoselbashyelcomandolsanuestrajaula

    lsl$JAULA/bin/'debenaparecerbashyls

    ldd/bin/bash'consultamoslasdependenciasdelibrerasdebashysegnsusalida,copiamoslaslibreras

    correspondientesdentrodelajaula,enmicasolasalidaes

    linuxvdso.so.1=>(0x00007ffef11ad000)

    libtinfo.so.5=>/lib/x86_64linuxgnu/libtinfo.so.5(0x00007f2aa5a70000)

    libdl.so.2=>/lib/x86_64linuxgnu/libdl.so.2(0x00007f2aa586b000)

    libc.so.6=>/lib/x86_64linuxgnu/libc.so.6(0x00007f2aa54a6000)

    /lib64/ldlinuxx8664.so.2(0x00007f2aa5cba000)

    cpv/lib64/ldlinuxx8664.so.2$JAULA/lib64/

    cpv/lib/x86_64linuxgnu/libtinfo.so.5$JAULA/lib

    cpv/lib/x86_64linuxgnu/libdl.so.2$JAULA/lib

    cpv/lib/x86_64linuxgnu/libc.so.6$JAULA/lib

    ldd/bin/ls'consultamoslasdependenciasdelsylasalidaes

    linuxvdso.so.1=>(0x00007ffc52d25000)

    libselinux.so.1=>/lib/x86_64linuxgnu/libselinux.so.1(0x00007ff1952b4000)

    libacl.so.1=>/lib/x86_64linuxgnu/libacl.so.1(0x00007ff1950ab000)

    libc.so.6=>/lib/x86_64linuxgnu/libc.so.6(0x00007ff194ce6000)

    libpcre.so.3=>/lib/x86_64linuxgnu/libpcre.so.3(0x00007ff194aa8000)

    libdl.so.2=>/lib/x86_64linuxgnu/libdl.so.2(0x00007ff1948a3000)

    /lib64/ldlinuxx8664.so.2(0x00007ff1954f8000)

    libattr.so.1=>/lib/x86_64linuxgnu/libattr.so.1(0x001007ff19469e000)

    cpv/lib/x86_64linuxgnu/libselinux.so.1$JAULA/lib

    cpv /lib/x86_64linuxgnu/libacl.so.1$JAULA/lib

    cpv /lib/x86_64linuxgnu/libc.so.6$JAULA/lib

    cpv /lib/x86_64linuxgnu/libpcre.so.3$JAULA/lib

    cpv /lib/x86_64linuxgnu/libdl.so.2$JAULA/lib

    cpv /lib64/ldlinuxx8664.so.2$JAULA/lib

    cpv /lib/x86_64linuxgnu/libattr.so.1$JAULA/lib

    sudochroot$JAULA/bin/bash

  • Contenedores: Para qu una virtualizacin ligera

    Para crear entornos de prueba

    Para aislar las consecuencias que se pueden producir al utilizar algn

    programa arriesgado

    Para determinar perfectamente las dependencias de algn programa y

    comprobar qu libreras necesita (ldd)

    Por ejemplo, podrais montar dentro de una jaula un servidor web y

    comprobar contra qu tipo de ataques est protegido metindolo en una jaula

    chroot (est relacionado con uno de los ejercicios propuestos)

    Problemas de las jaulas chroot: Dejan al descubierto el conjunto de usuarios,

    los grupos, los procesos en ejecucin, el subsistema de red donde est el

    servidor alojado, etc.

  • Contenedores: Jaulas BSD

    Son jaulas ms robustas que las creadas con chroot

    Fueron creadas en FreeBSD a partir de la versin 4.X por Poul-Henning Kamp

    En Linux no estn disponibles hasta los 90.

    https://en.wikipedia.org/wiki/FreeBSD_jail (5 minutos)

    Una Jaula BSD crea un entorno que no se distingue de una mquina real

    puesto que es una virtualizacin a nivel del sistema operativo.

    El sistema operativo permite crear varias instancias de espacios de usuario

    que desde el punto de vista de los usuarios son exactamente iguales que una

    mquina real.

    Esos espacios de usuario se pueden llamar: Jaulas, Contenedores, Servidores

    virtuales privados (virtual private servers) o Motores de virtualizacin

    (virtualization engines).

    https://en.wikipedia.org/wiki/FreeBSD_jail

  • Contenedores: Jaulas BSD

    Para entender el concepto es como un chroot, pero con algunos aadidos:

    Control de los recursos del sistema

    Limitacin del impacto de las acciones realizadas dentro de la jaula

    Elementos de una jaula

    1)Subrbol de directorios: punto de entrada a la jaula

    2)Un nombre de mquina, hostname

    3)Una direccin IP que no debe cambiarse durante el tiempo de vida de la

    jaula

    4)Un comando con una ruta relativa al punto de entrada de la jaula para poder

    ser ejecutado

    Pueden tener sus propios usuarios y su propio root. El root de una jaula ser

    root, pero slo dentro de ella, y no fuera.

  • Contenedores: Jaulas BSD

    Las herramientas que equivalen a una jaula BSD en linux son:

    -vServers:

    OpenVZ

    XLC

    Las tres herramientas dan soporte y gesionan las jaulas con sus

    particularidades, pero todas se ajustan a lo que hemos entendido como una

    Jaula BSD o un contenedor.

    Las jaulas BSD slo tienen dos restricciones:

    Comparten el kernel del sistema operativo con la mquina que aloja la jaula

    Comparte la misma CPU

  • Contenedores: vServers

    https://en.wikipedia.org/wiki/Linux-VServer

    Fue creado por Jacques Glinas y lo mantiene Herbert Ptzl

    Es una herramienta Open Source que permite controlar el acceso de una jaula

    a la memoria, el tiempo de CPU, al direccionamiento de la red adems del

    control de acceso al sistema de ficheros.

    Podis tener una visin completa en http://linux-vserver.org/Overview

    Ejemplo (http://crysol.org/es/node/378) : con un kernel de sistema que lo

    soporte como linux-image-2.6.17-2-vserver-686 ( en una mquina virtual) sudoaptgetinstallutilvserver

    sudoaptgetinstallvserverdebiantools

    cat/etc/vservers/newvservervars' la salida debe ser: # Configuration file for newvserver

    # See man newvserver for the variables that you can set here.

    DIST="lucid"

    MIRROR="http://es.archive.ubuntu.com/ubuntu/"

    newvserverhostnameJaulaVServerdomainmidominio.localip10.10.10.15

    https://en.wikipedia.org/wiki/Linux-VServerhttp://linux-vserver.org/Overviewhttp://crysol.org/es/node/378http://es.archive.ubuntu.com/ubuntu/

  • Contenedores: openVZ

    https://es.wikipedia.org/wiki/OpenVZ (5 minutos)

    Es software Libre con licencia GPL

    Las caractersticas son (https://openvz.org/Main_Page):

    Se ejecuta de forma independiente cada jaula

    Se pueden reiniciar las jaulas

    Tiene soporte para root en cada jaula

    Gestin de usuarios propios de la jaula

    Gesin de Ips, procesos, ficheos aplicaciones, libreras y ficheros de

    configuracin

    Su versin comercial es Virtuozzo

    Ejemplo en

    http://www.unixmen.com/install-and-configure-openvz-in-ubuntu/ para

    Ubuntu 14.04

    https://es.wikipedia.org/wiki/OpenVZhttp://www.unixmen.com/install-and-configure-openvz-in-ubuntu/

  • Contenedores: LXC

    https://es.wikipedia.org/wiki/LXC

    Proporciona otra herramienta para crear jaulas BSD.

    Utiliza la utilidad que proporciona cgroups, control groups, (

    https://en.wikipedia.org/wiki/Cgroups) que permite limitar el uso de algunas

    cuentas aislando el uso de CPU, de la memoria, de operaciones de disco, de

    red, etc. Fue creado por Paul Menage y Rohit Seth y ahora lo mantiene el

    equipo de freedesktop.org y de kernel.org.

    La mayora de sus partes tienen licencia LGPLv2.1 menos una parte que por

    compatibilidad con Android tiene licencia BSD o GPLv2

    El objetivo de LXC es crear un entorno lo ms parecido a una mquina virtual

    pero manteniendo el mismo kernel que la mquina donde se aloja la jaula

    https://es.wikipedia.org/wiki/LXChttps://en.wikipedia.org/wiki/Cgroups

  • Contenedores: LXC

    Se ha extendido ms que los anteriores porque utiliza herramientas sencillas

    como bloques que son:

    La librera liblxc

    APIs como punto de unin a lenguajes como python3, lua, Go, ruby,

    python2 y Haskell

    Herramientas de control de las jaulas

    Soporte para creacin de plantillas de contenedores

    Actualmente existe una versin evolucionada, todava no muy extendida que