Presenter Name : Ajeet Singh Raina
Presented Date: Aug 20, 2016
Presented at: Docker Bangalore Meetup #22
Service Discovery &
Load-Balancing under Docker 1.12
2
ABOUT ME
#Contribution:
- Frequent Blogger – http://www.collabnix.com
- Article Writing @ OSFY India
- Dell Community ( Containerizing Dell Legacy Application)
#Inside Dell:
- Project Lead Engineer(Global Solution Engineering)
- Worked in VMware, CGI , Dell R&D
- Solaris Lead Engineer ( Wiki Moderator)
• (t) – ajeetsraina (f) - Docker Public Group Moderator
#Reviewed Publications:
- Puppet for Containerization
- PowerCLI Cookbook
#Technology : Open Source Linux, Docker, Hadoop, Puppet
3
Agenda
• What’s new in Docker 1.12 ? – Quick Recap
• What’s new in Docker Swarm Mode? – Quick Recap
• Service Discovery
- What is a Service?
- Basics of Service Discovery
- How it works?
- A Deep Dive
• Load-Balancing
- What’s new in 1.12 LB?
- Ingress Load-Balancing – A Deep Dive
- Routing Mesh
• Q&A
4
What’s new in Docker 1.12? – A Recap
Swarm Mode
Manager
TLS
Swarm Mode
Worker
Certificate
Authority
Load
Balancing
Service
Discovery
Distributed store
Volumes
Networking
Plugins
Container
Runtime
Orchestration Components
5
What’s new in Swarm Mode? – A Recap
6
Evolution of Service Discovery
Docker 1.9
/etc/hosts and
/etc/resolv.conf
~ for the cluster service.
Cons:
- Corrupted /etc/hosts
- Lacking of Load-
Balancing Feature
- Complex way of Service
Discovery
Docker 1.10/1.11
- Embedded DNS
--network-alias=ALIAS
--link=CONTAINER_NAME:ALIAS
--dns=[IP_ADDRESS...]
--dns-search=DOMAIN
Cons:
- Service Discovery through
External Discovery backend
like Consul, zookeeper etc.
Docker 1.12
- No External Service Discovery
Backend Required
- Service Discovery plumbed
directly into $docker service
- Service Discovery by Unqualified
names.(Un-FQDN)
- Provided by Embedded DNS
- Highly Available
- Ability to discover both the
services and tasks
-.
7
What is Service?
• A Definition of tasks to be executed on the worker nodes
• A New API – $docker service is introduced in 1.12
• $docker service <= Evolution of $docker run
• Central structure of swarm system
• It manages replicated set of containers
• A task carries a Docker container + commands to run inside the container.
8
Service Discovery
helps service find and talk to each other
Serviceа Serviceb
Serviceb
Serviceb
Serviceb
Serviceb
Serviceb
Serviceb
Scaling
Scaling
9
Service Discovery
helps service find and talk to each other
Serviceа Serviceb
Serviceb
Serviceb
Serviceb
Scaling
Scaling
Understanding Service Discovery
Cluster
node1
node3
node2
node4
node5
node6
node7
DB
DB
DBAPI
API
API
Web
Web
Web
API
Understanding Service Discovery
A Typical Swarm Cluster
node1
node3
node2
node4
node5
node6
node7
DB
DB
DBAPI
API
API
Web
Web
Web
API
12
How Embedded DNS resolve unqualified names?
DNS Server Embedded into Docker Engine
DNS Request generated by
container
Resolver tries to resolve
127.0.0.11
This loopback address is
trapped
Send to random UDP/TCP
port listening in Docker
daemon
Socket is created inside that
namespace
Forward that request into the
socket
DNS Server identifies the
request via sockets
DNS Server is aware of the context
of the container running that
particular service
Looks at /etc/resolv.conf
stating 127.0.0.11
13
How Service Discovery works in Swarm Mode?
Create a new overlay
network
Create a service and
attach to this new
network
The swarm assign a
VIP(Virtual IP Server)
and DNS entry to each
service
The VIP(a private non-
routable IP which uses
IPVS LB) maps to a
DNS alias based upon
the service name.
Containers share DNS
mappings for the
service via GOSSIP
Any container on the
network can access
the service via its
service name
14
Swarm Cluster Setup
Master-1 Node-1 Node-3Node-2
ingress
docker_gwbridge
user_defined
Networks
- It is an overlay network on all exposed ports
exist.
- Follows a node port model(each service has
the same port on every node in the cluster).
- Numbered from 30000 through 32000.
- Used for Routing Mesh
- The default gateway network
- The only network with connectivity to
the outside world.
15
Creating a new overlay network
$ docker network create 
--driver overlay 
collabnet
Master-1
ingress
docker_gwbridge
Node-1 Node-3Node-2
collabnet
Networks
16
Creating a service “wordpressdb”
$ docker service create 
--replicas 1 
--name wordpressdb 
- -network collabnet 
-- env MYSQL_ROOT_PASSWORD=collab123 
--env MYSQL_DATABASE=wordpress 
--name wordpressdb 
mysql:latest
Master-1 Node-1 Node-3Node-2
collabnet
wordpress
db.1
VIP(10.0.0.2)
17
Creating a service “wordpressapp”
$ docker service create 
--env WORDPRESS_DB_HOST=wordpressdb 
--env WORDPRESS_DB_PASSWD=collab123 
--replicas 5 --network collabnet -- name wordpressapp 
--publish 80:80/tcp 
wordpress:latest
Master-1 Node-1 Node-3Node-2
collabnet
wordpress
db.1
VIP(10.0.0.2)
wordpress
app.1
wordpress
app.5
wordpress
app.4
wordpress
app.2
wordpress
app.3
VIP(10.0.0.4)
18
Inspecting the services
$ docker service inspect 
--format=='{{json .Endpoint.VirtualIPs}}' 
wordpressapp
[{"NetworkID":"c4caizphmdpuhm1gjdle8eaal","Addr":"10.255.0.7/16"},
{"NetworkID":"9eyjm4uv4ynmz0aubfqxise29","Addr":"10.0.0.4/24"}]
$ docker service inspect 
--format=='{{json .Endpoint.VirtualIPs}}' 
wordpressdb
[{"NetworkID":"9eyjm4uv4ynmz0aubfqxise29","Addr":"10.0.0.2/24"}]
19
Verifying Service Discovery
Master-1 Node-1 Node-3Node-2
collabnet
wordpress
db.1
VIP(10.0.0.2)
wordpress
app.1
wordpress
app.5
wordpress
app.4
wordpress
app.2
wordpress
app.3
VIP(10.0.0.4)Wordpressapp
Wordpressdb
Services
$ping <service>
returns <VIP>
20
Verifying Service Discovery
Master-1 Node-1 Node-3Node-2
collabnet
wordpress
db.1
VIP(10.0.0.2)
wordpress
app.1
wordpress
app.5
wordpress
app.4
wordpress
app.2
wordpress
app.3
VIP(10.0.0.4)Wordpressapp
Wordpressdb
Services
$dig <service>
returns <VIP>
21
Verifying Service Discovery
Master-1 Node-1 Node-3Node-2
collabnet
wordpress
db.1
VIP(10.0.0.2)
wordpress
app.1
wordpress
app.5
wordpress
app.4
wordpress
app.2
wordpress
app.3
VIP(10.0.0.4)Wordpressapp
Wordpressdb
Services
$nslookup <service>
returns <VIP>
22
Verifying Service Discovery
Master-1 Node-1 Node-3Node-2
collabnet
wordpress
db.1
VIP(10.0.0.2)
wordpress
app.1
wordpress
app.5
wordpress
app.4
wordpress
app.2
wordpress
app.3
VIP(10.0.0.4)Wordpressapp
Wordpressdb
Services
$wget –O- wordpressapp
returns <VIP>
23
Network - the scope of Service Discoverability
Master-1 Node-1 Node-3Node-2
collabnet
wordpress
db.1
VIP(10.0.0.2)
wordpress
app.1
wordpress
app.5
wordpress
app.4
wordpress
app.2
wordpress
app.3
VIP(10.0.0.4)Wordpressapp
Wordpressdb
collabnet1
Wordpressdb
1.1
Wordpressdb1 VIP(10.0.1.2)
Services
Load-Balancing under
Docker 1.12
25
Basics of Load-Balancing
A Load-Balancer distributes request
among the healthy nodes
- Provides high availability by detecting server or
component failure & re-configuring the system appropriately
- Assigns workload to a set of networked computer nodes
LB
Node-1 Node-3Node-2
26
What’s new in 1.12 Load-Balancing?
• Decentralized, Highly Available – LB instance plumbed into every container instance
• Internal Load Balancer – Provided by Embedded DNS
• Can be used to discover both service & tasks
• VIP based services uses IPVS(IP Virtual Server) – Layer-4 LB
• Kernel module ( ip_vs) for LB
27
How LB works?
External LB/
HA-Proxy/NginX
Host-port:{10.128.0.4:80} Host-port:{10.128.0.3:80}
Service1
sandbox
IPVS
Service1
sandbox
IPVS
10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8
Ingress Network
Host:10.128.0.4 Host:10.128.0.3
Public
1 Client access using :80
Plumb the request to
sandbox running on
10.128.0.3
2
3 Packets enters the mangle
table, Pre-routing firewall
mark of 0x101 => 257
Inside the sandbox, the re-
routing chain gets created
under NAT table.
Then ipvsdm uses 257
firewall mark to round robin
across the multiple nodes
4
6
5
SRC NAT under NAT table
ensure that packet has to
be come back to Ingress
network so as to return in
the original format
28
Accessing the network sandbox
• How to find the sandboxID?
• Where’s sandbox located?
Network namespace managed by overlay network
driver(creating a bridge, terminating VXLAN tunnel etc.
29
Inspecting the sandbox
30
Routing Mesh
• Routing Mesh is NOT Load-Balancer
• Routing Mesh makes use of LB aspects
• It provides global publish port for a given service
• Built-in routing mesh for edge routing
• Worker nodes themselves participate in ingress routing mesh
• Port management at global Swarm Cluster level.
31
THANK YOU

More Related Content

PPTX
Docker 101 - Nov 2016
PDF
MySQL InnoDB Cluster and NDB Cluster
PPTX
NGINX: Basics and Best Practices
PDF
eBPF Trace from Kernel to Userspace
PDF
1. Docker Introduction.pdf
PPTX
Containers and Docker
PDF
Git interview questions | Edureka
Docker 101 - Nov 2016
MySQL InnoDB Cluster and NDB Cluster
NGINX: Basics and Best Practices
eBPF Trace from Kernel to Userspace
1. Docker Introduction.pdf
Containers and Docker
Git interview questions | Edureka

What's hot (20)

PDF
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
PPTX
K8s in 3h - Kubernetes Fundamentals Training
PDF
Docker in real life
PDF
Kubernetes internals (Kubernetes 해부하기)
PPTX
Kubernetes for Beginners: An Introductory Guide
PDF
Docker Basics
PPTX
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
PDF
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
PPTX
Docker and kubernetes
PDF
[CNCF TAG-Runtime 2022-10-06] Lima
PPTX
Introduction to NGINX web server
PDF
DCSF19 Dockerfile Best Practices
PPTX
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
PDF
Introduction to container based virtualization with docker
PDF
Deep Dive into Docker Swarm Mode
PPTX
Introduction to Docker - 2017
PDF
Boosting I/O Performance with KVM io_uring
PDF
Xdp and ebpf_maps
PPTX
Kafka Tutorial - DevOps, Admin and Ops
PPTX
Docker 基礎介紹與實戰
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
K8s in 3h - Kubernetes Fundamentals Training
Docker in real life
Kubernetes internals (Kubernetes 해부하기)
Kubernetes for Beginners: An Introductory Guide
Docker Basics
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker and kubernetes
[CNCF TAG-Runtime 2022-10-06] Lima
Introduction to NGINX web server
DCSF19 Dockerfile Best Practices
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
Introduction to container based virtualization with docker
Deep Dive into Docker Swarm Mode
Introduction to Docker - 2017
Boosting I/O Performance with KVM io_uring
Xdp and ebpf_maps
Kafka Tutorial - DevOps, Admin and Ops
Docker 基礎介紹與實戰
Ad

Viewers also liked (20)

PDF
What's New in Docker 1.12?
PDF
Deeper Dive in Docker Overlay Networks
PDF
Container-relevant Upstream Kernel Developments
PDF
Practical Design Patterns in Docker Networking
PDF
Modernizing .NET Apps
PDF
Modernizing Java Apps with Docker
PDF
Plug-ins: Building, Shipping, Storing, and Running - Nandhini Santhanam and T...
PDF
Container Orchestration from Theory to Practice
PDF
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
PDF
Kubernetes in Docker
PDF
Introduction to Docker - IndiaOpsUG
PDF
Docker on Docker
PDF
Monitoring Dell Infrastructure using Docker & Microservices
PDF
LinuxKit Deep Dive
PDF
Introduction to LinuxKit - Docker Bangalore Meetup
PDF
Under the Hood with Docker Swarm Mode - Drew Erny and Nishant Totla, Docker
PDF
Moby and Kubernetes entitlements
PPTX
Containerd internals: building a core container runtime
PPTX
Kubernetes CRI containerd integration by Lantao Liu (Google)
PDF
Docker Swarm 0.2.0
What's New in Docker 1.12?
Deeper Dive in Docker Overlay Networks
Container-relevant Upstream Kernel Developments
Practical Design Patterns in Docker Networking
Modernizing .NET Apps
Modernizing Java Apps with Docker
Plug-ins: Building, Shipping, Storing, and Running - Nandhini Santhanam and T...
Container Orchestration from Theory to Practice
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Kubernetes in Docker
Introduction to Docker - IndiaOpsUG
Docker on Docker
Monitoring Dell Infrastructure using Docker & Microservices
LinuxKit Deep Dive
Introduction to LinuxKit - Docker Bangalore Meetup
Under the Hood with Docker Swarm Mode - Drew Erny and Nishant Totla, Docker
Moby and Kubernetes entitlements
Containerd internals: building a core container runtime
Kubernetes CRI containerd integration by Lantao Liu (Google)
Docker Swarm 0.2.0
Ad

Similar to Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22 (20)

PDF
OCP with super tengen toppa
PPTX
DockerCon EU 2018 Workshop: Container Networking for Swarm and Kubernetes in ...
PDF
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
PDF
The age of orchestration: from Docker basics to cluster management
PDF
Building Bizweb Microservices with Docker
PDF
Paolucci voxxed-days-berlin-2016-age-of-orchestration
PDF
廣宣學堂: 容器進階實務 - Docker進深研究班
PDF
Kubernetes Networking
PDF
Docker 進階實務班
PDF
Demystfying container-networking
PDF
Collabnix Online Webinar - Demystifying Docker & Kubernetes Networking by Bal...
PPTX
OpenShift Enterprise 3.1 vs kubernetes
PDF
DockerCon EU 2015: Docker Networking Deep Dive
PDF
Was liberty profile and docker
PPTX
Docker 1.11 Presentation
PPTX
WebSphere Application Server Liberty Profile and Docker
PDF
Networking in Kubernetes
PDF
Docker Intro
PPTX
Interop 2017 - Managing Containers in Production
PPTX
Dragonflow Austin Summit Talk
OCP with super tengen toppa
DockerCon EU 2018 Workshop: Container Networking for Swarm and Kubernetes in ...
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
The age of orchestration: from Docker basics to cluster management
Building Bizweb Microservices with Docker
Paolucci voxxed-days-berlin-2016-age-of-orchestration
廣宣學堂: 容器進階實務 - Docker進深研究班
Kubernetes Networking
Docker 進階實務班
Demystfying container-networking
Collabnix Online Webinar - Demystifying Docker & Kubernetes Networking by Bal...
OpenShift Enterprise 3.1 vs kubernetes
DockerCon EU 2015: Docker Networking Deep Dive
Was liberty profile and docker
Docker 1.11 Presentation
WebSphere Application Server Liberty Profile and Docker
Networking in Kubernetes
Docker Intro
Interop 2017 - Managing Containers in Production
Dragonflow Austin Summit Talk

More from Ajeet Singh Raina (20)

PDF
Delivering Docker & K3s worloads to IoT Edge devices
PDF
Delivering Container-based Apps to IoT Edge devices
PDF
Docker Trends & Statistics - A 20 Minutes Overview
PDF
Real time Object Detection and Analytics using RedisEdge and Docker
PDF
OSCONF Jaipur 2020 | Virtual Conference | Oct 10 | Ajeet Singh Raina
PDF
Quantifying Your World with AI & Docker on the Edge | OSCONF 2020 Jaipur
PDF
Keynote Slides | Ajeet Singh Raina | OSCONF 2020 Hyderabad
PDF
IoET Conference 2020 | Keynote Slides | Ajeet Singh Raina
PDF
OSCONF 2020 Kochi Conference | KubeZilla | 27 June 2020
PDF
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
PDF
OSCONF 2020 Bengaluru | Powered by Collabnix | Keynote Slides
PDF
Top 5 Helpful Tips to Grow Your Local Docker Community
PDF
Awesome Traefik - Ingress Controller for Kubernetes - Swapnasagar Pradhan
PDF
Demystifying the Nuts & Bolts of Kubernetes Architecture
PDF
Introduction to Docker Compose
PDF
Kubernetes Monitoring & Best Practices
PDF
Current State of Docker Platform - Nov 2019
PDF
Collabnix Online Webinar: Integrated Log Analytics & Monitoring using Docker ...
PDF
Introduction to Docker Compose | Docker Intermediate Workshop
PDF
Simplifying Real Time Data Analytics with Docker, IoT & Cloud
Delivering Docker & K3s worloads to IoT Edge devices
Delivering Container-based Apps to IoT Edge devices
Docker Trends & Statistics - A 20 Minutes Overview
Real time Object Detection and Analytics using RedisEdge and Docker
OSCONF Jaipur 2020 | Virtual Conference | Oct 10 | Ajeet Singh Raina
Quantifying Your World with AI & Docker on the Edge | OSCONF 2020 Jaipur
Keynote Slides | Ajeet Singh Raina | OSCONF 2020 Hyderabad
IoET Conference 2020 | Keynote Slides | Ajeet Singh Raina
OSCONF 2020 Kochi Conference | KubeZilla | 27 June 2020
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
OSCONF 2020 Bengaluru | Powered by Collabnix | Keynote Slides
Top 5 Helpful Tips to Grow Your Local Docker Community
Awesome Traefik - Ingress Controller for Kubernetes - Swapnasagar Pradhan
Demystifying the Nuts & Bolts of Kubernetes Architecture
Introduction to Docker Compose
Kubernetes Monitoring & Best Practices
Current State of Docker Platform - Nov 2019
Collabnix Online Webinar: Integrated Log Analytics & Monitoring using Docker ...
Introduction to Docker Compose | Docker Intermediate Workshop
Simplifying Real Time Data Analytics with Docker, IoT & Cloud

Recently uploaded (20)

PPTX
Principal presentation for NAAC (1).pptx
PPTX
Cisco Network Behaviour dibuywvdsvdtdstydsdsa
PDF
UEFA_Embodied_Carbon_Emissions_Football_Infrastructure.pdf
PDF
UEFA_Carbon_Footprint_Calculator_Methology_2.0.pdf
PDF
electrical machines course file-anna university
PPT
UNIT-I Machine Learning Essentials for 2nd years
PPTX
Chapter 2 -Technology and Enginerring Materials + Composites.pptx
PDF
MLpara ingenieira CIVIL, meca Y AMBIENTAL
PPTX
Chemical Technological Processes, Feasibility Study and Chemical Process Indu...
PDF
August -2025_Top10 Read_Articles_ijait.pdf
PDF
20250617 - IR - Global Guide for HR - 51 pages.pdf
PDF
Computer System Architecture 3rd Edition-M Morris Mano.pdf
PPT
Chapter 1 - Introduction to Manufacturing Technology_2.ppt
PDF
Unit1 - AIML Chapter 1 concept and ethics
PDF
Cryptography and Network Security-Module-I.pdf
PPTX
Wireless sensor networks (WSN) SRM unit 2
PDF
Design of Material Handling Equipment Lecture Note
PPTX
Solar energy pdf of gitam songa hemant k
PPTX
Micro1New.ppt.pptx the mai themes of micfrobiology
PPTX
CN_Unite_1 AI&DS ENGGERING SPPU PUNE UNIVERSITY
Principal presentation for NAAC (1).pptx
Cisco Network Behaviour dibuywvdsvdtdstydsdsa
UEFA_Embodied_Carbon_Emissions_Football_Infrastructure.pdf
UEFA_Carbon_Footprint_Calculator_Methology_2.0.pdf
electrical machines course file-anna university
UNIT-I Machine Learning Essentials for 2nd years
Chapter 2 -Technology and Enginerring Materials + Composites.pptx
MLpara ingenieira CIVIL, meca Y AMBIENTAL
Chemical Technological Processes, Feasibility Study and Chemical Process Indu...
August -2025_Top10 Read_Articles_ijait.pdf
20250617 - IR - Global Guide for HR - 51 pages.pdf
Computer System Architecture 3rd Edition-M Morris Mano.pdf
Chapter 1 - Introduction to Manufacturing Technology_2.ppt
Unit1 - AIML Chapter 1 concept and ethics
Cryptography and Network Security-Module-I.pdf
Wireless sensor networks (WSN) SRM unit 2
Design of Material Handling Equipment Lecture Note
Solar energy pdf of gitam songa hemant k
Micro1New.ppt.pptx the mai themes of micfrobiology
CN_Unite_1 AI&DS ENGGERING SPPU PUNE UNIVERSITY

Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22

  • 1. Presenter Name : Ajeet Singh Raina Presented Date: Aug 20, 2016 Presented at: Docker Bangalore Meetup #22 Service Discovery & Load-Balancing under Docker 1.12
  • 2. 2 ABOUT ME #Contribution: - Frequent Blogger – http://www.collabnix.com - Article Writing @ OSFY India - Dell Community ( Containerizing Dell Legacy Application) #Inside Dell: - Project Lead Engineer(Global Solution Engineering) - Worked in VMware, CGI , Dell R&D - Solaris Lead Engineer ( Wiki Moderator) • (t) – ajeetsraina (f) - Docker Public Group Moderator #Reviewed Publications: - Puppet for Containerization - PowerCLI Cookbook #Technology : Open Source Linux, Docker, Hadoop, Puppet
  • 3. 3 Agenda • What’s new in Docker 1.12 ? – Quick Recap • What’s new in Docker Swarm Mode? – Quick Recap • Service Discovery - What is a Service? - Basics of Service Discovery - How it works? - A Deep Dive • Load-Balancing - What’s new in 1.12 LB? - Ingress Load-Balancing – A Deep Dive - Routing Mesh • Q&A
  • 4. 4 What’s new in Docker 1.12? – A Recap Swarm Mode Manager TLS Swarm Mode Worker Certificate Authority Load Balancing Service Discovery Distributed store Volumes Networking Plugins Container Runtime Orchestration Components
  • 5. 5 What’s new in Swarm Mode? – A Recap
  • 6. 6 Evolution of Service Discovery Docker 1.9 /etc/hosts and /etc/resolv.conf ~ for the cluster service. Cons: - Corrupted /etc/hosts - Lacking of Load- Balancing Feature - Complex way of Service Discovery Docker 1.10/1.11 - Embedded DNS --network-alias=ALIAS --link=CONTAINER_NAME:ALIAS --dns=[IP_ADDRESS...] --dns-search=DOMAIN Cons: - Service Discovery through External Discovery backend like Consul, zookeeper etc. Docker 1.12 - No External Service Discovery Backend Required - Service Discovery plumbed directly into $docker service - Service Discovery by Unqualified names.(Un-FQDN) - Provided by Embedded DNS - Highly Available - Ability to discover both the services and tasks -.
  • 7. 7 What is Service? • A Definition of tasks to be executed on the worker nodes • A New API – $docker service is introduced in 1.12 • $docker service <= Evolution of $docker run • Central structure of swarm system • It manages replicated set of containers • A task carries a Docker container + commands to run inside the container.
  • 8. 8 Service Discovery helps service find and talk to each other Serviceа Serviceb Serviceb Serviceb Serviceb Serviceb Serviceb Serviceb Scaling Scaling
  • 9. 9 Service Discovery helps service find and talk to each other Serviceа Serviceb Serviceb Serviceb Serviceb Scaling Scaling
  • 11. Understanding Service Discovery A Typical Swarm Cluster node1 node3 node2 node4 node5 node6 node7 DB DB DBAPI API API Web Web Web API
  • 12. 12 How Embedded DNS resolve unqualified names? DNS Server Embedded into Docker Engine DNS Request generated by container Resolver tries to resolve 127.0.0.11 This loopback address is trapped Send to random UDP/TCP port listening in Docker daemon Socket is created inside that namespace Forward that request into the socket DNS Server identifies the request via sockets DNS Server is aware of the context of the container running that particular service Looks at /etc/resolv.conf stating 127.0.0.11
  • 13. 13 How Service Discovery works in Swarm Mode? Create a new overlay network Create a service and attach to this new network The swarm assign a VIP(Virtual IP Server) and DNS entry to each service The VIP(a private non- routable IP which uses IPVS LB) maps to a DNS alias based upon the service name. Containers share DNS mappings for the service via GOSSIP Any container on the network can access the service via its service name
  • 14. 14 Swarm Cluster Setup Master-1 Node-1 Node-3Node-2 ingress docker_gwbridge user_defined Networks - It is an overlay network on all exposed ports exist. - Follows a node port model(each service has the same port on every node in the cluster). - Numbered from 30000 through 32000. - Used for Routing Mesh - The default gateway network - The only network with connectivity to the outside world.
  • 15. 15 Creating a new overlay network $ docker network create --driver overlay collabnet Master-1 ingress docker_gwbridge Node-1 Node-3Node-2 collabnet Networks
  • 16. 16 Creating a service “wordpressdb” $ docker service create --replicas 1 --name wordpressdb - -network collabnet -- env MYSQL_ROOT_PASSWORD=collab123 --env MYSQL_DATABASE=wordpress --name wordpressdb mysql:latest Master-1 Node-1 Node-3Node-2 collabnet wordpress db.1 VIP(10.0.0.2)
  • 17. 17 Creating a service “wordpressapp” $ docker service create --env WORDPRESS_DB_HOST=wordpressdb --env WORDPRESS_DB_PASSWD=collab123 --replicas 5 --network collabnet -- name wordpressapp --publish 80:80/tcp wordpress:latest Master-1 Node-1 Node-3Node-2 collabnet wordpress db.1 VIP(10.0.0.2) wordpress app.1 wordpress app.5 wordpress app.4 wordpress app.2 wordpress app.3 VIP(10.0.0.4)
  • 18. 18 Inspecting the services $ docker service inspect --format=='{{json .Endpoint.VirtualIPs}}' wordpressapp [{"NetworkID":"c4caizphmdpuhm1gjdle8eaal","Addr":"10.255.0.7/16"}, {"NetworkID":"9eyjm4uv4ynmz0aubfqxise29","Addr":"10.0.0.4/24"}] $ docker service inspect --format=='{{json .Endpoint.VirtualIPs}}' wordpressdb [{"NetworkID":"9eyjm4uv4ynmz0aubfqxise29","Addr":"10.0.0.2/24"}]
  • 19. 19 Verifying Service Discovery Master-1 Node-1 Node-3Node-2 collabnet wordpress db.1 VIP(10.0.0.2) wordpress app.1 wordpress app.5 wordpress app.4 wordpress app.2 wordpress app.3 VIP(10.0.0.4)Wordpressapp Wordpressdb Services $ping <service> returns <VIP>
  • 20. 20 Verifying Service Discovery Master-1 Node-1 Node-3Node-2 collabnet wordpress db.1 VIP(10.0.0.2) wordpress app.1 wordpress app.5 wordpress app.4 wordpress app.2 wordpress app.3 VIP(10.0.0.4)Wordpressapp Wordpressdb Services $dig <service> returns <VIP>
  • 21. 21 Verifying Service Discovery Master-1 Node-1 Node-3Node-2 collabnet wordpress db.1 VIP(10.0.0.2) wordpress app.1 wordpress app.5 wordpress app.4 wordpress app.2 wordpress app.3 VIP(10.0.0.4)Wordpressapp Wordpressdb Services $nslookup <service> returns <VIP>
  • 22. 22 Verifying Service Discovery Master-1 Node-1 Node-3Node-2 collabnet wordpress db.1 VIP(10.0.0.2) wordpress app.1 wordpress app.5 wordpress app.4 wordpress app.2 wordpress app.3 VIP(10.0.0.4)Wordpressapp Wordpressdb Services $wget –O- wordpressapp returns <VIP>
  • 23. 23 Network - the scope of Service Discoverability Master-1 Node-1 Node-3Node-2 collabnet wordpress db.1 VIP(10.0.0.2) wordpress app.1 wordpress app.5 wordpress app.4 wordpress app.2 wordpress app.3 VIP(10.0.0.4)Wordpressapp Wordpressdb collabnet1 Wordpressdb 1.1 Wordpressdb1 VIP(10.0.1.2) Services
  • 25. 25 Basics of Load-Balancing A Load-Balancer distributes request among the healthy nodes - Provides high availability by detecting server or component failure & re-configuring the system appropriately - Assigns workload to a set of networked computer nodes LB Node-1 Node-3Node-2
  • 26. 26 What’s new in 1.12 Load-Balancing? • Decentralized, Highly Available – LB instance plumbed into every container instance • Internal Load Balancer – Provided by Embedded DNS • Can be used to discover both service & tasks • VIP based services uses IPVS(IP Virtual Server) – Layer-4 LB • Kernel module ( ip_vs) for LB
  • 27. 27 How LB works? External LB/ HA-Proxy/NginX Host-port:{10.128.0.4:80} Host-port:{10.128.0.3:80} Service1 sandbox IPVS Service1 sandbox IPVS 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8 Ingress Network Host:10.128.0.4 Host:10.128.0.3 Public 1 Client access using :80 Plumb the request to sandbox running on 10.128.0.3 2 3 Packets enters the mangle table, Pre-routing firewall mark of 0x101 => 257 Inside the sandbox, the re- routing chain gets created under NAT table. Then ipvsdm uses 257 firewall mark to round robin across the multiple nodes 4 6 5 SRC NAT under NAT table ensure that packet has to be come back to Ingress network so as to return in the original format
  • 28. 28 Accessing the network sandbox • How to find the sandboxID? • Where’s sandbox located? Network namespace managed by overlay network driver(creating a bridge, terminating VXLAN tunnel etc.
  • 30. 30 Routing Mesh • Routing Mesh is NOT Load-Balancer • Routing Mesh makes use of LB aspects • It provides global publish port for a given service • Built-in routing mesh for edge routing • Worker nodes themselves participate in ingress routing mesh • Port management at global Swarm Cluster level.
  • 31. 31