Edge-LB proxies and load balances traffic to all services that run on DC/OS. Edge-LB provides North-South (external to internal) load balancing, while the Minuteman component provides East-West (internal to internal) load balancing.
Edge-LB leverages HAProxy, which provides the core load balancing and proxying features, such as load balancing for TCP and HTTP-based applications, SSL support, and health checking. In addition, Edge-LB provides first class support for zero downtime service deployment strategies, such as blue/green deployment. Edge-LB subscribes to Mesos and updates HAProxy configuration in real time.
Architecture
Edge-LB has a 3-part architecture:
These components run on top of DC/OS.
Edge-LB runs as a DC/OS service launched by Marathon. The API server component of Edge-LB launches the load balancer pool(s). From the perspective of Marathon, the pool is another DC/OS service.
The diagram below shows how configuration and outside requests flow through Edge-LB to the application backend tasks.
Configuration is sent to the API Server, which controls pool management.
Outside traffic moves through a hardware load balancer, then to the load balancer pool. One of the Edge-LB load balancers in the pool accepts the traffic and routes it to the appropriate service within the DC/OS cluster.
Figure 1. Edge-LB architecture
Edge-LB API Server
The Edge-LB API Server is the service that responds to CLI commands and manages pools.
Edge-LB Pool
The Edge-LB Pool is a group of identically configured load balancers. Traffic to the pool is balanced among the load balancers within the pool. The load balancer pool manages properties such as the number of load balancer instances and their placement. The pool is the smallest unit of load balancer configuration within Edge-LB. The load balancers within the same pool are identical. You can configure Edge-LB to have multiple load balancer pools with different configurations.
Edge-LB Load Balancer
These are the individual instances of the load balancer software (such as HAProxy). These accept traffic and route it to the appropriate services within the DC/OS cluster.
Multiple Edge-LB Instances
Multiple Edge-LB pools can be configured across multiple DC/OS public nodes to create a highly-available load balancing environment and to support increased throughput. There are two primary external architectures that support this:
- External Load Balancer: Configures multiple Edge-LB pools such that the Edge-LB load balancers that are on DC/OS public nodes are behind an external load balancer. Direct end users or clients to the external load balancer device, which will then load balance the traffic between the multiple Edge-LB pools. The external load balancer can be a cloud-based load balancer, such as an AWS Elastic Load Balancer (ELB), an Azure Load Balancer, or a physical load balancer such as an F5 or Cisco ACE device.
- Round Robin DNS: Configures DNS such that a single DNS entry responds with IP addresses corresponding to a different Edge-LB pool. The DNS will round robin between the VIPs for each Edge-LB pool.
Release Notes
Discover the new features, updates, and known limitations in this release of the Edge-LB Service…Read More
Installing
Configuring a service account and installing Edge-LB…Read More
Uninstalling
Uninstalling the Edge-LB package…Read More
Upgrading Edge-LB
Upgrading an Edge-LB installation…Read More
Input Formats
Pool configuration file format information…Read More
Permissions
Service account and user permissions required to use the Edge-LB package…Read More
Tutorials
Learning to use Edge-LB…Read More
Usage
ENTERPRISE
Common commands for Edge-LB usage…Read More
CLI Reference
Reference for all CLI commands in the Edge-LB package…Read More
API Reference
Reference for all API endpoints exposed by the Edge-LB package…Read More
Edge-LB Pool Config Reference
Reference for all possible Edge-LB pool configuration values…Read More