Netflix Open Sources Their AWS Service Registry, Eureka
Eureka comes with 2 components: Eureka Server used as a service registry, and Eureka Client, a Java client simplifying the interaction with the server and performing the role of a round-robin load balancer and providing failover support for services. Netflix uses a different client in production, one providing weighted load balancing based on traffic, resource usage, and error conditions.
Beside load balancing, a number of other open source tools use Eureka at Netflix. Asgard, a cloud deployment management tool uses Eureka for rollback and push operations. Priam uses it to take off Cassandra instances for maintenance. Evcache uses it to identify nodes. In turn, Eureka uses Archaius for configuration purposes.
When a middle tier service is first started, it registers itself with Eureka in order to be located by clients, sending heartbeats every 30 seconds. If a service does not send a heartbeat in several minutes, it is unregistered from all Eureka nodes. There can be one cluster of such nodes per Amazon region with at least one Eureka node per zone. AWS regions are isolated from each other.
Netflix touts Eureka over Amazon’s ELB saying:
AWS Elastic Load Balancer is a load balancing solution for edge services exposed to end-user web traffic. Eureka fills the need for mid-tier load balancing. While you can theoretically put your mid-tier services behind the AWS ELB, you expose them to the outside world and thereby losing all the usefulness of the AWS security groups.
Performance monitoring and alerting for Eureka is done via Servo. Netflix hints at open sourcing their production load balancing solution in the near future and better integration between Eureka and Asgard.
Netflix has recently open sourced another tool, Chaos Monkey, a trouble maker intended to take servers offline in order to test the resiliency of AWS cloud deployments.