Kernel load-balancing for Docker containers using IPVS

preview_player
Показать описание
with Andrey Sibiryov, Sr. Infrastructure Engineer, Uber Technologies

Many companies use expensive proprietary hardware and software to provide load-balancing and routing for their users and services. I'm going to demonstrate how the same or even exceeding performance and feature set can be achieved using an open-source technology which has been a part of the mainline Linux kernel for over a decade – IPVS. Specifically, you'll see how IPVS can be used to automatically configure load balancing and routing for Docker containers using a simple Go daemon and a Docker plugin.

--

Docker is an open platform for developers and system administrators to build, ship and run distributed applications. With Docker, IT organizations shrink application delivery from months to minutes, frictionlessly move workloads between data centers and the cloud and can achieve up to 20X greater efficiency in their use of computing resources. Inspired by an active community and by transparent, open source innovation, Docker containers have been downloaded more than 700 million times and Docker is used by millions of developers across thousands of the world’s most innovative organizations, including eBay, Baidu, the BBC, Goldman Sachs, Groupon, ING, Yelp, and Spotify. Docker’s rapid adoption has catalyzed an active ecosystem, resulting in more than 180,000 “Dockerized” applications, over 40 Docker-related startups and integration partnerships with AWS, Cloud Foundry, Google, IBM, Microsoft, OpenStack, Rackspace, Red Hat and VMware.
Рекомендации по теме
Комментарии
Автор

I like your speaking style!

Some comments though on the actual technical side of things:

1. IPVS is only going to be useful if all your backend servers are within the same physical network. This means it's not going to work across multiple data centres.

2. IPVS doesn't seem to have a way to intelligently allocate requests to the available resources, i.e. it doesn't collect stats from the backend servers regarding current memory/cpu usage, it just uses a particular scheduling algorithm to choose one of the resources, it's not intelligent. This is where hardware load balancers and other more sophisticated software load balancers come in - they intelligently allocate the available resources. These are definitely things you want to be thinking about in systems with high load!

annielane
Автор

Great presentation!
I was surprised how few people actually remember wtf L4 and L7 is...
Access logs on L4 in kernel space? ROFL.
I bet the "hardware box" the man in the audience was talking about is a proxy not a forwarder.

SerbanTeodorescu
Автор

Great talk! I actually laughed at "Is it a lie?"

alexchesser