Routing Mesh (Global Traffic Router)

  • Routes ingress (incoming) packets for a Service to proper Task
  • Spans all nodes in Swarm
  • Uses IPVS from Linux Kernel
  • Load balances Swarm Services across their Tasks
  • Two ways this works:

    • Container-to-container in an Overlay network (uses VIP)
    • External traffic incoming to published ports (all nodes listen)
  • This is stateless load balancing

  • This LB is at OSI Layer 3 (TCP), not Layer 4 (DNS)
  • Both limitation can be overcome with:
    • Nginx or HAProxy LB proxy, or:
    • Docker Enterprise Edition, which comes with built-in L4 web proxy

  • Similar to hardware load balancer

Example

  • Let's run `elasticsearch service
[node1] ~> docker service create --name search --replicas 3 -p 9200:9200 elasticsearch:2
wszkve3jvui2678eykul6hqqm


[node1] ~> docker service ps search
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
p1jg45oq9tfi        search.1            elasticsearch:2     node3               Running             Running 7 seconds ago
jsw9g0vh6xkz        search.2            elasticsearch:2     node1               Running             Running 7 seconds ago
ni2c3sagawbh        search.3            elasticsearch:2     node2               Running             Running 7 seconds ago
  • The load is distributed to tasks

results matching ""

    No results matching ""