Concurrent Adaptive Load Balancing at CERN
CERN IT Department,
CH-1211 Geneva 23,
* e-mail: firstname.lastname@example.org
Published online: 17 September 2019
CERN is using an increasing number of DNS based load balanced aliases (currently over 700). This article explains the Go based concurrent implementation of the Load Balancing Service, both the client (lbclient) and the server (lbd). The article describes how it is being progressively deployed using Puppet and how concurrency greatly improves scalability, ultimately allowing a single master-slave couple of Openstack virtual machines to server all the aliases. It explains the new implementation of the lbclient, which, among other things, allows to incorporate Collectd metrics to determine the status of the node and takes advantage of the Go language concurrency features to reduce the real time needed for checking the status of the node. The article explains that the LBD server acts as an arbiter getting feedback on load and health from the backend nodes using snmp (Simple Network Management Protocol) to decide which IP addresses the LB alias will present. While this architecture has been used since long at CERN for DNS based aliases, the LBD code is generic enough to drive other load balancers. A proof of concept using HAProxy to provide adaptive responses to load and health monitoring has been implemented.
© The Authors, published by EDP Sciences, 2019
This is an Open Access article distributed under the terms of the Creative Commons Attribution License 4.0, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.