info:libros:swarm

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
info:libros:swarm [07/12/2021 03:39] – [raft] mateinfo:libros:swarm [09/12/2021 01:58] (actual) – [capítulos] mate
Línia 1: Línia 1:
 = Native Docker clustering with Swarm = Native Docker clustering with Swarm
 {{tag>libros tech docker swarm}} {{tag>libros tech docker swarm}}
 +  * Autores:
 +    * Fabrizio Soppelsa (Autor)
 +    * Chanwit Kaewkasi (Autor)
 +  * Editorial: Packt
 +  * ISBN: 1786469758
  
-== chap1 +== capítulos 
-  * boot2docker+  * [[info:libros:swarm:chap1]] 
-    distribución Linux ligera desarrollada para Docker +  [[info:libros:swarm:chap2]] 
-    corre totalmente en RAM +  [[info:libros:swarm:chap3]] 
-    tarda 5 segundos en arrancar +  [[info:libros:swarm:chap4]] 
-    arranca con Docker TLS en :2376 +  [[info:libros:swarm:chap5]] 
-    para desarrollo y test +  [[info:libros:swarm:chap6]] 
-    soporte para [[AUFS v4|https://docs.docker.com/storage/storagedriver/aufs-driver/]] +  * [[info:libros:swarm:chap7]] 
-  * docker-machine +  * [[info:libros:swarm:chap8]] 
-    * ''docker-machine create --driver virtualbox node0'' +  [[info:libros:swarm:chap9]] 
-      * permite otros proveedores (AWS,Azure,DigitalOcean +  * [[info:libros:swarm:chap10]] 
-      * los autores del libro tienen un wrapper para hablar con DigitalOcean: [[https://github.com/chanwit/belt]] +  [[info:libros:swarm:chap11]]
-    ''eval $(docker-machine env node0)''te configura el entorno para trabajar con el demonio docker de node0 (en este caso) +
-    * ''docker-machine ls'' +
-    * ''docker-machine active'' +
-    * ''docker-machine ssh node0 ps aux | grep docker'' +
-  * swarm: +
-    **nodes:%%//%%**conectar nodos directamente por sus IPs (aprendizaje)+
  
-== chap2: discovery services +== notas 
-    * necesidad de disponer de un servicio de descubrimiento para localizar aquello que buscas +=== deprecated 
-      con pocos nodos y configuraciones simples no sería necesario, tu sabes donde está todo aquello que necesitas +  <code bash>for i in `seq 0 3`; do docker-machine create -d virtualbox node$i;done</code> 
-      con muchos nodos, cambiantes, y cientos de contenedores, es imposible de gestionar (cambian dinámicamente de IP, por ejemplo+  <code bash>eval $(docker-machine env node0)</code> 
-    * existen muchos, pero todos ellos requieren: +  <code bash>docker-machine create %%--%%driver generic %%--%%generic-ip-address=<IP> <NODE></code> 
-      * sistemas distribuidos en todos los nodos +    * si ya existe un docker, lo securiza via TLS ¿?
-      * escalables +
-      * tolerancia a fallos +
-      * registro +
-      * anunciar +
-      almacenaje key-value +
-    * swarm v1 +
-      * no integra uno propio +
-      * integrar el tuyo propio a través de //libkv// +
-      * token +
-      * Consul +
-      * Etcd (se ha acabado integrando) +
-      * ZooKeeper+
  
-=== token 
-  * ''docker run ... token:%%//%%$TOKEN'' 
-  * requiere conexión a internet de los nodos y acceso a Docker Hub 
-  * se ha de generar un UUID de swarm (''swarm create'') 
-  * se utiliza para unir nodos y hablar con el manager 
-  * se acabará deprecando 
- 
-=== raft 
-  * algoritmo para consensuar en sistemas distribuidos la elección del lider y la consistencia de los valores 
-  * otro: paxos (más complejo y difícil de comprender) 
-  * raft: Consul, Etcd 
-  * paxos: ZooKeeper 
-  * [[https://ramcloud.stanford.edu/raft.pdf]] 
- 
-==== teoría de funcionamiento 
-  * simplicidad 
-  * mensajes y logs son solo envíados del lider del cluster a sus miembros 
-  * un cluster basado en este algoritmo debería mantenerse replicado de una manera consistente, indistintamente de lo que pase: nevos nodos, caída de otros 
-  * número impar de nodos (para evitar split-brains) 
-  * en condiciones normales, hay un lider que mantiene informados a los seguidores de su estado (heartbeat). Si e lider, falla, los seguidores entienden que ha caído y buscan un nuevo lider (de manera consensuada) 
-  * los mensajes, antes de ser guardados en el registro principal del lider, son enviados a los seguidores y sólo cuando una mayoría ha confirmado su recepción, este es guardado. 
- 
-=== Etcd 
-  * sistema de descubrimiento y compartición de configuración, en alta disponibilidad, distribuido y consistente key-value 
-  * soporta la caída de nodos (incluso el master), tiene un sistemna de elección de master. 
-  * los contenedores pueden leer y escribir en el almacen de Etcd 
-  * :2379 (comunicaciones cliente) 
-  * :2380 (comunicaciones master) 
-  * :4001 
-  * ''etcdctl cluster-health'' 
-  * swarm v1 (lanzando servicio swarm como comentenedor y enlanzando con un cluster etcd previo):<code>docker run -d -p 3376:3376 swarm manage -H tcp://0.0.0.0:3376 etcd://$(docker-machine ip etcd-m)/swarm</code> 
-  * ''docker run swarm list etcd:%%//%%$(docker-machine ip etcdm):2379'' 
- 
-== chap3: docker swarm mode 
-=== swarmkit 
-  * "toolkit for orchestrating distributed systems at any scale. It includes primitives for node discovery, raft-based consensus, task scheduling, and more" - Docker team at DockerCon16 
-  * Los cluster swarm está compuesto de nodos activos, que pueden actuar como managers o workers. 
-    * los managers, coordinados via Etcd (raft), elegidos entre todos, son responsables de reservar recursos, orquestrar servicios y repartir tareas a lo largo del cluster 
-    * los workers ejecutan las tareas. 
-  * Los servicios que se lanzan al cluster se convierten en tareas cuando llegan al worker 
-  * Los servicios no tienen porque ser contenedores. La intención del swarmkit es la de orquestrar cualquier objeto. 
-  * arquitectura: 
-    * número impar de nodos manager (evitar split-brain en las elecciones) 
-    * soporta cualquier tamaño de cluster de servicios 
-    * managers y workers 
-    * cualquier número de workers. 
-    * en los managers, los servicios se definen y se balancean. 
-    * {{ :info:libros:pasted:20211207-032914.png?600 }} 
-  * elección del mejor nodo para una tarea (**scheduling**) 
-    * {{ :info:libros:pasted:20211207-033144.png?600 }} 
-  * swarmd 
-    * usado para masters y slaves 
-    * ''swarmctl'' 
-    * ''docker run -it fsoppelsa/swarmkit swarmd --help'' 
-    * ''docker run -it fsoppelsa/swarmkit swarmctl --help'' 
-      * cliente para operar con el cluster swarmkit 
-  * swarm mode (pag 88) 
  • info/libros/swarm.1638877162.txt.gz
  • Darrera modificació: 07/12/2021 03:39
  • per mate