[native docker clustering with swarm] Discover the Discovery Services

  • necesidad de disponer de un servicio de descubrimiento para localizar aquello que buscas
    • con pocos nodos y configuraciones simples no sería necesario, tu sabes donde está todo aquello que necesitas
    • con muchos nodos, cambiantes, y cientos de contenedores, es imposible de gestionar (cambian dinámicamente de IP, por ejemplo)
  • existen muchos, pero todos ellos requieren:
    • sistemas distribuidos en todos los nodos
    • 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
  • 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
  • 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

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.
  • 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):
    docker run -d -p 3376:3376 swarm manage -H tcp://0.0.0.0:3376 etcd://$(docker-machine ip etcd-m)/swarm
  • docker run swarm list etcd://$(docker-machine ip etcdm):2379
  • info/libros/swarm/chap2.txt
  • Darrera modificació: 07/12/2021 12:50
  • per mate