Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| info:libros:swarm [07/12/2021 03:39] – [raft] mate | info: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> | {{tag> | ||
| + | * Autores: | ||
| + | * Fabrizio Soppelsa (Autor) | ||
| + | * Chanwit Kaewkasi (Autor) | ||
| + | * Editorial: Packt | ||
| + | * ISBN: 1786469758 | ||
| - | == chap1 | + | == capítulos |
| - | * boot2docker: | + | * [[info:libros: |
| - | * distribución Linux ligera desarrollada para Docker | + | * [[info: |
| - | * corre totalmente en RAM | + | * [[info: |
| - | * tarda 5 segundos en arrancar | + | * [[info: |
| - | * arranca con Docker TLS en :2376 | + | * [[info:libros: |
| - | * para desarrollo y test | + | * [[info: |
| - | * soporte para [[AUFS v4|https:// | + | * [[info: |
| - | * docker-machine | + | * [[info: |
| - | * '' | + | * [[info:libros: |
| - | * permite otros proveedores (AWS, | + | * [[info: |
| - | * los autores del libro tienen un wrapper para hablar con DigitalOcean: | + | * [[info:libros:swarm: |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * 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; |
| - | * con muchos nodos, cambiantes, y cientos de contenedores, | + | * <code bash> |
| - | * existen muchos, pero todos ellos requieren: | + | * <code bash> |
| - | * sistemas distribuidos en todos los nodos | + | * si ya existe un docker, lo securiza via TLS ¿? |
| - | * escalables | + | |
| - | * tolerancia a fallos | + | |
| - | * registro | + | |
| - | * anunciar | + | |
| - | | + | |
| - | * swarm v1 | + | |
| - | * no integra uno propio | + | |
| - | * integrar el tuyo propio a través de //libkv// | + | |
| - | * token | + | |
| - | * Consul | + | |
| - | * Etcd (se ha acabado integrando) | + | |
| - | * ZooKeeper | + | |
| - | === token | ||
| - | * '' | ||
| - | * requiere conexión a internet de los nodos y acceso a Docker Hub | ||
| - | * se ha de generar un UUID de swarm ('' | ||
| - | * 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:// | ||
| - | |||
| - | ==== 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, | ||
| - | * 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, | ||
| - | * 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 | ||
| - | * '' | ||
| - | * swarm v1 (lanzando servicio swarm como comentenedor y enlanzando con un cluster etcd previo):< | ||
| - | * '' | ||
| - | |||
| - | == chap3: docker swarm mode | ||
| - | === swarmkit | ||
| - | * " | ||
| - | * 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. | ||
| - | * {{ : | ||
| - | * elección del mejor nodo para una tarea (**scheduling**) | ||
| - | * {{ : | ||
| - | * swarmd | ||
| - | * usado para masters y slaves | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * cliente para operar con el cluster swarmkit | ||
| - | * swarm mode (pag 88) | ||