pages/masters.markdown
author Tero Marttila <terom@qmsk.net>
Mon, 10 Oct 2016 20:01:50 +0300
changeset 137 6d1bdd8da93d
parent 136 a0a1270f1b08
child 138 3b0802919100
permissions -rw-r--r--
masters: not an article
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
133
0cabdaa5299b masters: seminar presentation first
Tero Marttila <terom@qmsk.net>
parents: 131
diff changeset
    17
## [Seminar Presentation](https://mycourses.aalto.fi/pluginfile.php/292054/mod_folder/content/0/Marttila_071016.pdf?forcedownload=1)
0cabdaa5299b masters: seminar presentation first
Tero Marttila <terom@qmsk.net>
parents: 131
diff changeset
    18
0cabdaa5299b masters: seminar presentation first
Tero Marttila <terom@qmsk.net>
parents: 131
diff changeset
    19
Presented 2016-10-08.
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
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
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 network-level load balancer implementation.
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
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    38
The scalability of the `clusterf` load balancer is tested using Equal-Cost Multi-Path (ECMP) routing and IPVS connection synchronization
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
125
c6cd97f94bf7 masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents: 124
diff changeset
    52
Pending on publication.
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    53
125
c6cd97f94bf7 masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents: 124
diff changeset
    54
## `clusterf` Architecture
c6cd97f94bf7 masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents: 124
diff changeset
    55
131
06542208a5fc typofix clusterf-architecture.svg url
Tero Marttila <terom@qmsk.net>
parents: 130
diff changeset
    56
<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
    57
c6cd97f94bf7 masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents: 124
diff changeset
    58
## [Implementation](https://github.com/qmsk/clusterf)
124
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    59
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
    60
31f6ffac2dc8 clusterf and masters
Tero Marttila <terom@qmsk.net>
parents:
diff changeset
    61
> [`go get github.com/qmsk/clusterf`](https://github.com/qmsk/clusterf)