A DNS Load Balancer for Qumulo Core.
This project will:
* Present as a DNS server at which you can delegate hostnames
* Communicate with a Qumulo cluster via API, and return floating IPs for
node with the lowest connection count.
It will NOT currently:
* Support IPv6 floating IPs
* Cache any information from the Qumulo Cluster
* Use any sort of API connection pooling. We'll make several API requests
per client lookup. These are typically only done at mount/connect
time, so you will get away with it to an undefined scale.
The API user used to connect to the Qumulo cluster must be granted PRIVILEGE_NETWORK_READ, which is included in the Observers role. As a best practice, use an account with only this Role/Privilege.
If you wish to use docker (This is the easiest way)
* We require docker compose 1.6 or newer for this container.
* Tested with docker 18.09.7 and docker compose 1.17.1.
Start by making a copy of template.docker-env to .env in the source directory.
Launch the configured server as a daemon with:
$ docker-compose up -d
You can view the output of the service with:
$ docker-compose logs -f
For a simple example, if you will have clients mounting qumulocluster.grumpquat.com, you will need a delegation and glue record. A short example in bind zone format would be something like:
$ORIGIN grumpquat.com.
qumulocluster IN NS qumulodns1
qumulodns1 IN A 10.100.247.76
Multiple delegations may be made, but remember to add the additional names as Service Principal Names if you are using SMB.