Design and Implementation of the clusterf Load Balancer for Docker Clusters
Thesis submitted for examination for the degree of Master of Science in Technology at Aalto University Department of Communications and Networking,
Prof. Raimo Kantola
PhD. Pasi Sarolahti
Presented 07.10.2016 (slides].
Relation to a bigger picture
Docker uses the Linux container
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.
Container platforms provide the infrastructure needed to deploy horizontally scalable container services into the Cloud, including orchestration, networking, service discovery and load balancing.
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.
clusterf load balancer architecture uses a two-level load balancing scheme combining different packet forwarding methods for scalability and compatibility with existing Docker applications.
A distributed load balancer control plane is implemented to provide automatic load balancing for Docker containers.
clusterf load balancer is evaluated using a testbed environment, measuring the performance the network-level Linux IPVS implementation.
The scalability of the
clusterf load balancer is tested using Equal-Cost Multi-Path (ECMP) routing and IPVS connection synchronization.
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.
clusterf design allows for horizontal scaling with connection failover between IPVS load balancers.
clusterf implementation requires the use of asymmetric routing within a network, such as provided by local Ethernet networks.
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.
The architecture of the
clusterf load balancer is shown in the Figure below.
The Go implementation of the
clusterf load balancer control plane is available on GitHub: