Concurrent Adaptive Load Balancing at CERN

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...

Full description

Saved in:
Bibliographic Details
Published inEPJ Web of Conferences Vol. 214; p. 8028
Main Authors Canilho, Paulo, Reguero, Ignacio, Saiz, Pablo
Format Journal Article Conference Proceeding
LanguageEnglish
Published Les Ulis EDP Sciences 2019
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary: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.
ISSN:2100-014X
2101-6275
2100-014X
DOI:10.1051/epjconf/201921408028