Channels

Services

Netflix open sources Eureka mid-tier load balancer

With Netflix running so many services on Amazon's Web Services (AWS) cloud, it needs to be able to find those services easily so that it can balance loads and manage failover. The video-streaming specialists have now open sourced Eureka, the software they use to meet that challenge. Eureka includes a REST-based server that allows servers to register with it when they come up and detects when they are down, and a client which talks to that service and does basic round-robin load balancing. Netflix has more sophisticated balancers in-house designed for their own needs.

Although Amazon offers a load balancer in the form of the Elastic Load Balancer, that service is designed more to manage web traffic from end users. Eureka, on the other hand, is a load balancer for middle-tier services, which takes account of the fact that servers can come and go from Amazon's cloud. Netflix uses Eureka alongside Asgard, its open source cloud deployment tool, to take Cassandra instances out of circulation before maintenance and to identify rings of memcached-based EvCache services. The project's wiki includes a getting started guide. Although Netflix runs Eureka as part of its AWS cloud deployment, it can be used in non-AWS environments too.

The configuration of Eureka is handled using Archaius, a set of open source configuration management APIs created by the company to allow for dynamic property setting in high throughput, highly threaded environments. To help keep tabs on Eureka, Netflix also uses another of its open source projects, Servo, which simplifies creating monitoring interfaces for Java applications by using annotations to denote JMX-monitorable metrics. The company says that it is planning to release Eureka and Asgard integration in the future, along with more sophisticated load balancing.

All of Netflix's open source projects are released under version 2.0 of the Apache Licence and are available from the company's GitHub pages and repositories.