Simple Python DNS load balancer for geodns
Project description
Python DNS LB & Traffic Director
================================
This snippet of python is meant to be used with https://github.com/abh/geodns - a geo-aware
DNS server in GO. The idea is to monitor a set of services and periodically generate a JSON
zone based on the service instances that are up and responding correctly. This can be used
as a poor-mans "global dns load balancer".
Installation
------------
As alwasy, setting up a virtualenv might be a good idea but other than that do the usual,
i.e in this case:
pip install python-dlslb
or
git clone git@github.com:leifj/python-dnslb.git
cd python-dnslb
./setup.py install
Running
-------
Create a yaml-file somewhere (lets call it example.com.yaml):
```yaml
contact: hostmaster.example.com
nameservers:
- ns1.example.com
- ns2.example.com
hosts:
host-1:
- 1.2.3.4
host-2:
- 1.2.3.5
- 1.2.4.1
host-3
- 4.3.2.1
aliases:
- www
labels:
- north-america
- host-1
- europe
- host-2
- host-3
checks:
- check_http:
vhost: "www.example.com"
url: "/"
```
Then run the following command:
dnslb --loglevel=DEBUG -z example.com.json -c example.com.yaml
The monitor will startup and connect to each IP address listed for all hosts in the
hosts table, issuing a GET request for '/' with the Host header set to www.example.com
Periodically the monitor will write a json zonefile to example.com.json. The zonefile
will always list A and AAAA recoreds for the hosts but will only list A and AAAA for
the zone (example.com in our case) and for each label for those addresses that passes
the test (check_http in this case).
The zonefile can be fed directly into geodns.
NEWS
====
0.2
---
*Release Date: Mon Apr 8 12:49:06 CEST 2013*
* Initial release
0.2.1
-----
*Release Date: Mon Apr 8 12:49:06 CEST 2013*
* Fixes label handling
0.2.2
------
*Release Date: Wed Jul 31 13:59:43 CEST 2013*
* Conditionally export check_* depending on imports
0.2.3
-----
* Release Date: Fri Aug 16 10:19:08 CEST 2013*
* better logging
* email notification (beta)
================================
This snippet of python is meant to be used with https://github.com/abh/geodns - a geo-aware
DNS server in GO. The idea is to monitor a set of services and periodically generate a JSON
zone based on the service instances that are up and responding correctly. This can be used
as a poor-mans "global dns load balancer".
Installation
------------
As alwasy, setting up a virtualenv might be a good idea but other than that do the usual,
i.e in this case:
pip install python-dlslb
or
git clone git@github.com:leifj/python-dnslb.git
cd python-dnslb
./setup.py install
Running
-------
Create a yaml-file somewhere (lets call it example.com.yaml):
```yaml
contact: hostmaster.example.com
nameservers:
- ns1.example.com
- ns2.example.com
hosts:
host-1:
- 1.2.3.4
host-2:
- 1.2.3.5
- 1.2.4.1
host-3
- 4.3.2.1
aliases:
- www
labels:
- north-america
- host-1
- europe
- host-2
- host-3
checks:
- check_http:
vhost: "www.example.com"
url: "/"
```
Then run the following command:
dnslb --loglevel=DEBUG -z example.com.json -c example.com.yaml
The monitor will startup and connect to each IP address listed for all hosts in the
hosts table, issuing a GET request for '/' with the Host header set to www.example.com
Periodically the monitor will write a json zonefile to example.com.json. The zonefile
will always list A and AAAA recoreds for the hosts but will only list A and AAAA for
the zone (example.com in our case) and for each label for those addresses that passes
the test (check_http in this case).
The zonefile can be fed directly into geodns.
NEWS
====
0.2
---
*Release Date: Mon Apr 8 12:49:06 CEST 2013*
* Initial release
0.2.1
-----
*Release Date: Mon Apr 8 12:49:06 CEST 2013*
* Fixes label handling
0.2.2
------
*Release Date: Wed Jul 31 13:59:43 CEST 2013*
* Conditionally export check_* depending on imports
0.2.3
-----
* Release Date: Fri Aug 16 10:19:08 CEST 2013*
* better logging
* email notification (beta)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
python-dnslb-0.2.3.tar.gz
(7.7 kB
view details)
File details
Details for the file python-dnslb-0.2.3.tar.gz
.
File metadata
- Download URL: python-dnslb-0.2.3.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47c689673ada1daa6b8b969eee5871b9f01940ee4e46d4e224a2093b6024dfd1 |
|
MD5 | 9ed4d9586228ededfe2e34437c0cd3ed |
|
BLAKE2b-256 | 245238318fe81fa7cdb2661ab95c069b55d1e95707e2bdc1e52cbaf962789472 |