Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Presentación nubes de contenedores con docker swarm

189 views

Published on

Presentación para el evento Opensouthcode 2017 del funcionamiento de Docker Swarm

Published in: Software
  • Be the first to comment

Presentación nubes de contenedores con docker swarm

  1. 1. DOCKERSWARM ORQUESTANDO CONTENEDORESENLA NUBE Creada por / Twitter: Documentación y demo en Presentación en Alejandro Escanero Blanco @aescanero https://github.com/aescanero/dockerevents/opensouthcode Disasterproject
  2. 2. INTRODUCCIÓNADOCKER Fuente: Fuente: ¿QUEESUN"CONTENEDOR"? ESUNPROCESOQUEEJECUTAAISLADOSUPROPIOESPACIODE MEMORIA,CPU,I/OYRED ENLINUXSEUTILIZANDOSCARACTERISTICASPARAELLO: NAMESPACESANCGROUPS EXISTENMUCHASIMPLEMENTACIONESENELMERCADO: DOCKER,LXC,RKT,OPENVZ... What even is a container: namespaces and cgroups Cgroups, namespaces, and beyond: what are containers made from?
  3. 3. EXISTEUNGRANESFUERZODE ESTANDARIZACIÓN Fuente: :DEFINELASESPECIFICACIONESDEL MOTORDEEJECUCIÓNEIMAGENESDELOSCONTENEDORES OPENCONTAINERINITIATIVE :BAJOELPARAGUAS DELALINUXFOUNDATIONDEFINELASTECNOLOGÍASDE CONTENEDORESYCLOUD CLOUDNATIVECOMPUTINGFOUNDATION Native Landscape (CNCF and OCI)
  4. 4. ¿QUEESDOCKER? Fuente: Fuente: ESUNPROYECTOOPENSOURCE:MOBYPROJECT ESUNPRODUCTOORIENTADOALACOMUNIDAD:COMMUNITY EDITION ESUNPRODUCTOORIENTADOAENTORNOSEMPRESARIALES: ENTERPRISEEDITION INTRODUCING MOBY PROJECT ANNOUNCING DOCKER ENTERPRISE EDITION
  5. 5. PEROSOBRETODOESUNATENDENCIA DELMERCADO
  6. 6. ESUNATENDENCIAEN EMPLEO FUENTE:INDEED:DOCKER,KUBERNETESANDSWARM.
  7. 7. SEESPERAUNIMPORTANTE CRECIMIENTOPARA2017 ENENTORNOSDEVOPS FUENTE:GETTHERIGHTSCALESTATEOFTHECLOUDREPORT
  8. 8. INTERESEN2016EN ENTORNOSDEVOPS FUENTE: FUENTE: DOCKERTRENDS CLOUDTRENDSFOR2017ANDACTIONSYOUCANTAKE NOW
  9. 9. CHARLASRELACIONADASCONDOCKER ENOPENSOUTHCODE DESARROLLANDOCONDOCKER INTEGRACIÓNCONTÍNUADEAPLICACIONESMÓVILESCON DOCKERYAPPIUM CUANDODEVCONOCIÓAOPS ZERODOWNTIMEAPPLICATIONSWITHOPENSHIFT SALAFUENGIROLA16:00 SALAFUENGIROLA17:00 SALAFUENGIROLA18:00 SALARIOGORDO13:00
  10. 10. NUBESDECONTENEDORES Fuente: DESARROLLOSMASRÁPIDOS,CONMAYORLIBERTADPARALOS DESARROLLADORES ENTORNOSMASCOMPLEJOS,DENSOSYCAMBIANTES ENTORNOSDETECNOLOGÍADISPARESYDISTRIBUIDOS POLITICASYSEGURIDADEMPRESARIAL ...YPRODUCCIÓN... Top 5 challenges with deploying containers in production
  11. 11. Fuente: DevOps, Microservices and containers - a high level overview
  12. 12. ELMODODEGESTIÓNDECLUSTER DISTRIBUIDODEDOCKER:SWARM Fuente: Fuente: Fuente: Los Engine ("Nodos" en modo Swarm) Docker se con guran para distribuir la carga y tendremos dos tipos. Aquellos Nodos que se mantienen la con guración de todos los servicios Docker son los "Manager", se con guran para que se comuniquen entre ellos usando el protocolo Raft Uno de los Managers será elegido lider, mientras que el resto son elegibles. Todos los Nodos (incluso los Managers) reciben y ejecutan tareas enviadas por los Manager Raft consensus in swarm mode DevOps, Microservices and containers - a high level overview Swarm mode key concepts
  13. 13. EJEMPLO Iniciando el primer nodo manager en la IP 192.168.8.2, nos devolverá un "token" que usaremos para conectar los nodos docker swarm init --advertise-addr "192.168.8.2" --listen-addr "192.168.8.2:2377" Procedemos a consultar que "token" es necesario para añadir nuevos Managers docker swarm join-token manager Añadimos un nuevo manager con la IP 192.168.8.3 docker swarm join --advertise-addr "192.168.8.3" --listen-addr "192.168.8.3:2377" --token $key 192.168.8.2 Añadimos el resto de nodos no Manager docker swarm join --token $key 192.168.8.2 Un resultado de un conjunto de nodos con dos Manager, podemos ver cual es el lider y que los nodos están en Down (estan apagados) swarm-master-1:~$ sudo docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 1jl7pgsx23vpxnet7lvsyq9yf swarm-node-3 Down Active 5p00x5dn53xfz33v8ad1jwiyq swarm-node-2 Down Active mjxf52vga4t47ns92ym7pq8xq swarm-node-1 Down Active o7az8ubf8sk8yb9jp18gz53w8 * swarm-master-1 Ready Active Reachable q19pfkrgd2nphqmj1yd0wp2yz swarm-master-2 Ready Active Leader
  14. 14. GESTIONANDOLASIMAGENESDELOS CONTENEDORES:REGISTRY LOSCONTENEDORESSEGENERANDESDEIMAGENESQUE DESCARGAREMOSDESDEHUB.DOCKER.COM ELREGISTROESUNAHERRAMIENTAQUENOSPERMITEGUARDAR LASIMAGENESQUEHALLAMOSCREADOODESCARGADO DEBEMOSTENERUNREGISTROESNUESTRANUBEPARAEVITAR QUECADANODOVAYAAINTERNETADESCARGARLASIMAGENES
  15. 15. REDESDENTRODELANUBE Fuente: DENTRODELMODELODEREDDECONTENEDORES,LOS CONTENEDORESMANTIENENUNAREDQUELOSCONECTAAL DIRECTAMENTENODO(REDHOST) PARAACCEDERALEXTERIOR,SEUTILIZAUNAREDDEPUENTE (BRIDGE). UTILIZANDOLAREDBRIDGEYVXLANSEPUEDENCONSEGUIR REDESQUECONECTENUNOSCONTENEDORESCONOTROS ESTASREDESSECONOCENCOMOREDESOVERLAY Docker Reference Architecture: Designing Scalable, Portable Docker Container Networks
  16. 16. EJEMPLO Creamos dos redes overlay sudo docker network create -d overlay be sudo docker network create -d overlay fe Comprobamos que efectivamente se despliegan sudo docker network ls NETWORK ID NAME DRIVER SCOPE p13bh7pilb71 be overlay swarm cca979284ca2 bridge bridge local abedd882c417 docker_gwbridge bridge local 2k04q42d8l9v fe overlay swarm 0fab68cf1222 host host local jsh8aaw7nebr ingress overlay swarm 3fba02d48df4 none null local
  17. 17. SEPUEDENAÑADIROTROSTIPOSDE REDES(NETWORKPLUGINS) Fuente: Contiv Features Fuente: Introducing Weave Net CONTIV ESUNAEXTENSIÓN(PLUGIN)CREADAPORCISCO,IDEADAPARA INTEGRARLASREDESDESOLUCIONESDECLOUDHETEROGENEAS CONGESTIÓNDEPOLÍTICAS WEAVE PERMITELAINTEGRACIÓNDEREDESDECLOUDHETEROGENEAS, INTEGRASUPROPIOSISTEMADEDESCUBRIMIENTOEIPAM.
  18. 18. Fuente: LOSSERVICIOSOCOMOSEDESPLIEGAN LOSCONTENEDORESENSWARM. ELSERVICIOESUNEMPAQUETADODECONTENEDORESQUE ADEMASINCLUYEUNASERIEDEREGLAS ELPUERTODONDEESVISIBLEELSERVICIO,LAREDALAQUESE CONECTA,RESERVASDECPUYMEMORIA POLITICASDEDESPLIEGUE,DISPONIBILIDADYNÚMERODE RÉPLICAS How services work
  19. 19. COMPORTAMIENTODELOSSERVICIOS ENLARED(ENDPOINTMODE) Fuente: Fuente: VIP(VIRTUALIP):SEASIGNAUNAIPPARAELSERVICIO,YACADA CONTENEDORUNAIPDELMISMORANGO LAIPDELSERVICIOESVIRTUALYSIRVEPARABALANCEARENTRE LOSCONTENEDORES.ELNOMBREDELSERVICIOAPUNTAALAIP VIRTUAL DNSRR:SEASIGNAACADACONTENEDORUNAIPDELMISMO RANGO,ELNOMBREDELSERVICIOAPUNTAACADA CONTENEDORPORORDEN(ROUNDROBIN) Attach services to an overlay network Reference Architecture: Universal Control Plane 2.0 Service Discovery and Load Balancing
  20. 20. EJEMPLO Creamos un servicio para el registro sudo docker service create --constraint=engine.labels.myproject.service==fe --endpoint-mode vip --network fe --publish 5000:5000 --restart-condition any --name registry registry:2 Comprobamos que efectivamente se despliega sudo docker service list ID NAME MODE REPLICAS IMAGE qb5wpzv0z077 registry replicated 1/1 registry:2 Comprobamos donde se despliega sudo docker service ps registry ID NAME IMAGE NODE DESIRED STATE CURREN sxuhruy385t3 registry.1 registry:2 swarm-master-2 Running Runnin
  21. 21. LOSSERVICIOSSONESCALABLES UNSERVICIOPUEDEDESPLEGARUNNÚMEROINDETERMINADO DELMISMOCONTENEDORYAQUESONELASTICOS PODEMOSDESCUBRIRLOSOTROSNODOSFORMANPARTEDEL MISMOSERVICIO(SERVICEDISCOVER),YAQUEDISPONEDEUN SERVICIODNSINTEGRADOPARACONOCERQUIENCONFORMAEL SERVICIOYLADIRECCIÓNVIP. La dirección VIP es el nombre del servicio / # ping registry PING registry (10.0.1.2): 56 data bytes 64 bytes from 10.0.1.2: seq=0 ttl=64 time=0.094 ms Los contenedores que forman el servicio se publican como tasks.SERVICIO / # nslookup tasks.registry Name: tasks.registry Address 1: 10.0.1.3 8cad19f2c5dd
  22. 22. STACKSYCOMPOSE Fuente: Fuente: LASAPLICACIONESESTÁNHECHASPORMASDEUNÚNICOTIPO DECONTENEDOR UNSTACKESUNPAQUETEDONDESEDEFINENLOSSERVICIOSY REDESQUEFORMANPARTEDELAAPLICACIÓN COMPOSEESUNAAPLICACIÓNCAPAZDECONVERTIRUNGUION DONDESEDEFINENMULTIPLESSERVICIOSYREDESENUNSTACK Overview of Docker Compose Compose le version 3 reference
  23. 23. Ejemplo version: '3.1' services: ldap: image: localhost:5000/myproject:ldap_v1 deploy: mode: replicated replicas: 3 restart_policy: condition: on-failure placement: constraints: - engine.labels.myproject.service == be resources: limits: cpus: '0.1' memory: 100M reservations: cpus: '0.01' memory: 50M networks: - be fd: image: localhost:5000/myproject:fd_v1 deploy: placement: constraints: - engine.labels.myproject.service == fe resources: limits: cpus: '0.1' memory: 300M reservations: cpus: '0.01' memory: 200M healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 1m30s timeout: 10s
  24. 24. MONITORIZACIÓN Fuente: Fuente: Fuente: EXISTENMÚLTITUDDEHERRAMIENTASPARAGESTIONARLAS MÉTRICASGENERADASPORDOCKER UNACOMBINACIÓNDEHERRAMIENTASENLINEADECOMANDOS PUEDESERUTIL(SYSTEMD-CGTOP,DOCKERSTATS),PEROCON MULTITUDDESERVIDORESNECESITAMOSHERRAMIENTASMAS AMIGABLES. COMOEJEMPLOSTENEMOS , , , , ,YUNSINFIN. ELASTIC(ELK) PROMETHEUS GRAFANA GRAPHITE CADVISOR YPORSUPUESTOLOSCLASICOS(NAGIOS,ZABBIX,SENSU,ETC),SE PUEDENUTILIZARPARAMONITORIZARCONTENEDORES. Container Performance Analysis Monitoring Docker Swarm with cAdvisor, In uxDB and Grafana Comparing Seven Monitoring Options for Docker
  25. 25. REGISTROS Fuente: ALIGUALQUECONLASMÉTRICASTENEMOSMÚLTIPLES OPCIONESPARAUNAGESTIÓNCENTRALIZADADELOSREGISTROS DELOSSERVICIOS ALCREARELSERVICIOSEPUEDECONFIGURARPARAQUEUTILICE UNSYSLOGREMOTO,AUNQUEHAYOTRASOPCIONESCOMO PARAELENVIODEREGISTROSFILEBEAT DOCKERDISPONEDEPLUGINSPARAENVIOSDEREGISTROSA SOLUCIONESCOMO , Y ENTRE MUCHAS. GRAYLOG2 SPLUNK FLUENTD Con gure logging drivers
  26. 26. ENTORNOSAMIGABLES PARAENTORNOSDEPEQUEÑOYMEDIANOTAMAÑOPODEMOS UTILIZARINTERFACESQUEFACILITENNUESTROTRABAJO,COMO POREJEMPLOSON , O .PORTAINER SHIPYARD RANCHER PARAGRANDESENTORNOSDEBEMOSUSARHERRAMIENTASDE ORQUESTACIÓNCOMOSON , O .PUPPET ANSIBLE CHEF
  27. 27. SECCIÓNDEOPINIÓN TODOSLOSPRODUCTOSDEDOCKERNOESTÁNCARENTESDE DUDASSOBRESUESTABILIDADYFUTURO. EN CUESTIONANSIDOCKERESVÁLIDOPARAPRODUCCIÓN,PORSUS PROBLEMASDEESTABILIDAD,DECOMPATIBILIDADYDE VERSIONES. MOBY/DOCKERINPRODUCTION:AHISTORYOFFAILURE EN HABLANDEQUEDEBEMOSTENERENCUENTAPARALLEVARUN ENTORNOAPRODUCCIÓN:GESTIÓNDEIMAGENES(YLA SEGURIDADDELASMISMAS),LARED,ELBALANCEADOR,EL DESPLIEGUE,DESCUBRIMIENTODESERVICIOS,GESTIÓNDE REGISTROS,MONITORIZACIÓNYBASESDEDATOS. 9CRITICALDECISIONSFORRUNNINGDOCKERINPRODUCTION
  28. 28. DUDASYCONSULTAS RECOMENDACIONES: Creada por Email aescanero@gmail.com / Twitter: Documentación y demo en Presentación en CANALDEYOUTUBEDEDOCKER MEETUPDOCKERSEVILLA Alejandro Escanero Blanco @aescanero https://github.com/aescanero/dockerevents/opensouthcode Disasterproject

×