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
External links
Last updated
Was this helpful?