pages/masters.markdown
author Tero Marttila <terom@qmsk.net>
Mon, 10 Oct 2016 20:18:13 +0300
changeset 142 dbed5a455927
parent 141 0ebc46106159
child 144 775e3eab3f30
permissions -rw-r--r--
masters: spellfix refer
136
a0a1270f1b08 page titles; markdown
Tero Marttila <terom@qmsk.net>
parents: 134
diff changeset
     1
# Design and Implementation of the <a href="https://github.com/qmsk/clusterf"><tt>clusterf</tt></a> Load Balancer for Docker Clusters
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
     2
129
6ce240e9258f masters: author
Tero Marttila <terom@qmsk.net>
parents: 128
diff changeset
     3
### Author
6ce240e9258f masters: author
Tero Marttila <terom@qmsk.net>
parents: 128
diff changeset
     4
Tero Marttila
6ce240e9258f masters: author
Tero Marttila <terom@qmsk.net>
parents: 128
diff changeset
     5
130
0c8a8cfd39a2 masters: submitted
Tero Marttila <terom@qmsk.net>
parents: 129
diff changeset
     6
### Submitted
0c8a8cfd39a2 masters: submitted
Tero Marttila <terom@qmsk.net>
parents: 129
diff changeset
     7
Thesis submitted for examination for the degree of Master of Science in Technology at <a href="http://comnet.aalto.fi/">Aalto University Department of Communications and Networking</a>,
0c8a8cfd39a2 masters: submitted
Tero Marttila <terom@qmsk.net>
parents: 129
diff changeset
     8
0c8a8cfd39a2 masters: submitted
Tero Marttila <terom@qmsk.net>
parents: 129
diff changeset
     9
Espoo 10.10.2016
0c8a8cfd39a2 masters: submitted
Tero Marttila <terom@qmsk.net>
parents: 129
diff changeset
    10
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    11
### Thesis supervisor
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    12
Prof. Raimo Kantola
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    13
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    14
### Thesis advisor
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    15
PhD. Pasi Sarolahti
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    16
140
d4e4d9bc129d masters: presentation slides
Tero Marttila <terom@qmsk.net>
parents: 139
diff changeset
    17
## Seminar Presentation
133
0cabdaa5299b masters: seminar presentation first
Tero Marttila <terom@qmsk.net>
parents: 131
diff changeset
    18
140
d4e4d9bc129d masters: presentation slides
Tero Marttila <terom@qmsk.net>
parents: 139
diff changeset
    19
Presented 08.10.2016 ([slides](https://mycourses.aalto.fi/pluginfile.php/292054/mod_folder/content/0/Marttila_071016.pdf?forcedownload=1)].
133
0cabdaa5299b masters: seminar presentation first
Tero Marttila <terom@qmsk.net>
parents: 131
diff changeset
    20
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    21
## Abstract
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    22
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    23
### Relation to a bigger picture
125
c6cd97f94bf7 masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents: 124
diff changeset
    24
[Docker](https://www.docker.com/) uses the Linux container `namespace` and `cgroup` primitives to provide isolated application runtime environments, allowing the distribution of self-contained application images that can be run in the form of Docker containers.
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    25
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    26
Container platforms provide the infrastructure needed to deploy horizontally scalable container services into the Cloud, including orchestration, networking, service discovery and load balancing.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    27
137
6d1bdd8da93d masters: not an article
Tero Marttila <terom@qmsk.net>
parents: 136
diff changeset
    28
### Purpose
139
ffc7e191b63c masters: abstract linux IPVS links
Tero Marttila <terom@qmsk.net>
parents: 138
diff changeset
    29
This thesis studies container networking architectures and existing Cloud load balancer implementations to create a design for a scalable load balancer using the [Linux IPVS](http://www.linuxvirtualserver.org/software/ipvs.html) network-level load balancer implementation.
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    30
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    31
The `clusterf` load balancer architecture uses a two-level load balancing scheme combining different packet forwarding methods for scalability and           compatibility with existing Docker applications.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    32
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    33
A distributed load balancer control plane is implemented to provide automatic load balancing for Docker containers.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    34
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    35
### Research method
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    36
The `clusterf` load balancer is evaluated using a testbed environment, measuring the performance the network-level Linux IPVS implementation.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    37
139
ffc7e191b63c masters: abstract linux IPVS links
Tero Marttila <terom@qmsk.net>
parents: 138
diff changeset
    38
The scalability of the `clusterf` load balancer is tested using Equal-Cost Multi-Path (ECMP) routing and [IPVS connection synchronization](http://www.linux-vs.org/docs/sync.html).
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    39
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    40
### Key results
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    41
The result is that the network-level Linux IPVS load balancer performs significantly better than the application-level HAProxy load balancer in the same      configuration.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    42
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    43
The `clusterf` design allows for horizontal scaling with connection failover between IPVS load balancers.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    44
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    45
### Practical implications
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    46
The current `clusterf` implementation requires the use of asymmetric routing within a network, such as provided by local Ethernet networks.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    47
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    48
Extending the `clusterf` design to support deployment onto existing Cloud infrastructure platforms with different networking implementations would qualify   the `clusterf` load balancer for use in container platforms.
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    49
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    50
## Thesis
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    51
138
3b0802919100 masters: edit
Tero Marttila <terom@qmsk.net>
parents: 137
diff changeset
    52
Pending publication.
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    53
142
dbed5a455927 masters: spellfix refer
Tero Marttila <terom@qmsk.net>
parents: 141
diff changeset
    54
In the meantime, refer to the [Presentation Slides](//static.qmsk.net/www/masters/clusterf-presentation.pdf).
141
0ebc46106159 masters: thesis link slides
Tero Marttila <terom@qmsk.net>
parents: 140
diff changeset
    55
138
3b0802919100 masters: edit
Tero Marttila <terom@qmsk.net>
parents: 137
diff changeset
    56
## [The `clusterf` Load Balancer](https://github.com/qmsk/clusterf)
3b0802919100 masters: edit
Tero Marttila <terom@qmsk.net>
parents: 137
diff changeset
    57
3b0802919100 masters: edit
Tero Marttila <terom@qmsk.net>
parents: 137
diff changeset
    58
### Design
3b0802919100 masters: edit
Tero Marttila <terom@qmsk.net>
parents: 137
diff changeset
    59
The architecture of the `clusterf` load balancer is shown in the Figure below.
125
c6cd97f94bf7 masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents: 124
diff changeset
    60
131
06542208a5fc typofix clusterf-architecture.svg url
Tero Marttila <terom@qmsk.net>
parents: 130
diff changeset
    61
<img src="//static.qmsk.net/www/masters/clusterf-architecture.svg" style="width: 100%" />
125
c6cd97f94bf7 masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents: 124
diff changeset
    62
138
3b0802919100 masters: edit
Tero Marttila <terom@qmsk.net>
parents: 137
diff changeset
    63
### Implementation
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    64
The Go implementation of the `clusterf` load balancer control plane is available on GitHub: 
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    65
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    66
> [`go get github.com/qmsk/clusterf`](https://github.com/qmsk/clusterf)