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