-
Notifications
You must be signed in to change notification settings - Fork 85
Overview
The solution is implemented in a form of PowerDNS Authoritative Server enhancement and consists of:
-
Polaris health - takes in a configuration dictionary specifying pools of backend servers, associated health checks etc., builds a health state table, iterates over it periodically and issues health probes that get processed asynchronously by a pool of workers. State information is propagated into a shared memory(memcache). Runs as a daemon.
-
Polaris PDNS - PowerDNS Remote Backend JSON-API plugin, performs DNS query distribution according to the health state(sync-ed periodically from memcache) and the load balancing algorithm selected.
Configuration example:
polaris-lb.yaml
pools:
www-example:
monitor: http
monitor_params:
use_ssl: true
hostname: www.example.com
url_path: /healthcheck?check_all=true
lb_method: twrr
fallback: any
members:
- ip: 10.1.1.1
name: www1-dc1
weight: 3
- ip: 172.16.1.1
name: www2-dc2
weight: 2
- ip: 172.16.1.2
name: www3-dc2
weight: 3
globalnames:
www.example.com:
pool: www-example
ttl: 1
polaris-topology.yaml
datacenter1:
- 10.1.1.0/24
datacenter2:
- 172.16.0.0/16
Updating the configuration(involves the Polaris health restart) does not impact the front-end DNS resolution and is seamless to the clients.