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-- |
136 | 1 |
# Design and Implementation of the <a href="https://github.com/qmsk/clusterf"><tt>clusterf</tt></a> Load Balancer for Docker Clusters |
124 | 2 |
|
129 | 3 |
### Author |
4 |
Tero Marttila |
|
5 |
||
130 | 6 |
### Submitted |
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>, |
|
8 |
||
9 |
Espoo 10.10.2016 |
|
10 |
||
124 | 11 |
### Thesis supervisor |
12 |
Prof. Raimo Kantola |
|
13 |
||
14 |
### Thesis advisor |
|
15 |
PhD. Pasi Sarolahti |
|
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 | 21 |
## Abstract |
22 |
||
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 | 25 |
|
26 |
Container platforms provide the infrastructure needed to deploy horizontally scalable container services into the Cloud, including orchestration, networking, service discovery and load balancing. |
|
27 |
||
137 | 28 |
### Purpose |
124 | 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. |
30 |
||
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. |
|
32 |
||
33 |
A distributed load balancer control plane is implemented to provide automatic load balancing for Docker containers. |
|
34 |
||
35 |
### Research method |
|
36 |
The `clusterf` load balancer is evaluated using a testbed environment, measuring the performance the network-level Linux IPVS implementation. |
|
37 |
||
38 |
The scalability of the `clusterf` load balancer is tested using Equal-Cost Multi-Path (ECMP) routing and IPVS connection synchronization |
|
39 |
||
40 |
### Key results |
|
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. |
|
42 |
||
43 |
The `clusterf` design allows for horizontal scaling with connection failover between IPVS load balancers. |
|
44 |
||
45 |
### Practical implications |
|
46 |
The current `clusterf` implementation requires the use of asymmetric routing within a network, such as provided by local Ethernet networks. |
|
47 |
||
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. |
|
49 |
||
50 |
## Thesis |
|
51 |
||
125
c6cd97f94bf7
masters seminar slides, architecture
Tero Marttila <terom@qmsk.net>
parents:
124
diff
changeset
|
52 |
Pending on publication. |
124 | 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 | 59 |
The Go implementation of the `clusterf` load balancer control plane is available on GitHub: |
60 |
||
61 |
> [`go get github.com/qmsk/clusterf`](https://github.com/qmsk/clusterf) |