Comments (8)
Alright, after doing some reading, I realize how this would work. Sorry for the spammy-ness of these comments but I'll post this here for reference in case it helps anyone else.
keepalived
job co-located on BIND9 servers would be used to share a VIP. When one bind9 goes down & stops heartbeating, a different bind9 instance takes "ownership" of the VIP.
Since keepalived
is pretty new to me I think for now, for simplicity sake, I'll just use the static IPs of the bind9 servers.
With that said in the future maybe I'll experiment with leveraging keepalived
directly on the bind9 servers OR leveraging keepalived
on a cluster of nginx UDP LBs (which I also haven't never experimented with, but am under the impression it can do UDP LBing)
I'm not exactly jazzed about self-hosting LBs or split-horizon DNS, but, alas, The Enterprise™ demands it, so it must be done. Who knows though maybe this will work out really well, and if it does, then we'll retrofill all our CF deployments to use this topology just for environmental consistency.
Thanks again 👍
from bind9-boshrelease.
50 is a bit much. We don't use the sample manifest for anything other than explaining the properties. It should be safe (nay, advisable!) to drop that to a max_in_flight of 1.
from bind9-boshrelease.
Sick, thanks.
I fully realize yourself / starkandwayne effectively maintains this project, and for all intents and purposes I should be paying for consulting fees, but I'll try to freeload anyway:
Do you have any general advice or "gotchas" to look out for when running this in production?
If not, that's fine, just figured I'd put the general question out there.
from bind9-boshrelease.
The main thing to keep in mind is that if you are using the AXFR stuff with a master and some replicas, zone changes will normally only affect the master, and the replicas will just transfer down zone changes as they occur, without an interruption of service.
Other than that, don't forget to change your serial numbers when you update the zones, or you'll be quite upset at yourself. 😁
from bind9-boshrelease.
👍gotcha, thank you. Current plan is to have 1 master and 3 replicas, with each replica in separate AZs, and update BOSH cloud-config so every VM has the 3 replicas as their DNS provider... including the BIND9 servers themselves ¯\(ツ)/¯
A future enhancement is to have an internal LB with a static IP which points to the deployed BIND9 servers, and configure cloud-config to use that LB's static IP for DNS. That way if/when the IPs of the BIND9 servers changes, we don't have to roll over every single VMs with updated cloud config, we just have to update the LB's targets.
Any thoughts? I promise after this I'll leave you be & close out this issue 😉thanks a lot for your time and advice.
from bind9-boshrelease.
re: 1+3 across AZs sounds perfectly reasonable.
As for load balancing, if you don't have IaaS-provided LBs, you might want to look at keepalived and just have keepalived trade a VIP between the three replicas directly. We use it primarily with haproxy reverse proxies for HTTP/TCP traffic, in the load-balancer-boshrelease. That (haproxy) doesn't support UDP traffic, but keepalived operates at the IP layer so it should be doable.
That would be a fun add-on to this BOSH release, come to think of it. 🤔
Also, you don't have to leave me alone 😁
from bind9-boshrelease.
Nice, will look into the lb boshrelease. I think I'd like that better than IaaS-provided, since it could be standardized & deployed across all our envs (azure, aws, vsphere) with the same topology
How do you feel about this "first mover"/bootstrap situation where you have to setup BOSH, and then use it deploy DNS/LBs/any other infra for the env, and then update all deployments to use the BOSH-deployed infra?
It's not a huge deal since it's really only a problem when getting started, but this will be the first time that I have an env which isn't 100% fully declarative... I guess we could use reserved IPs and static IP assignment for the LB in it's manifest, though? That way the entire env is still fully declarative from the get-go... But maybe it's not actually that important to have an env which can be deployed starting from "nothing-to-something" based on git config alone.
Maybe it's fine to have some values that are dynamic (IPs of LBs, BIND, etc.) & once they're deployed, re-deploy the env with those updated values.
from bind9-boshrelease.
Wait-- if you're using a BOSH-managed LB to load balance DNS, aren't you (sort of) back in the same spot as before, where you have to configure the cloud-config DNS to use the multiple IPs of the LBs? E.g. you'd still have to deploy multiple LBs so you can do rolling upgrades. Right?
I guess the value-add though is that the config options the LB offers, and that you can more-easily scale out DNS servers & just update the LB's routing targets.
EDIT I feel I'm definitely misunderstanding some things.
I'll do some reading on keepalived
🧐
Apologies & thanks-- self-hosted LB's & self-hosted DNS is new to me.
from bind9-boshrelease.
Related Issues (12)
- New release with PR#10 HOT 3
- Update bind9 to 9.13.3 on 9.14.0 to comply with EDNS HOT 5
- Cannot deploy bind9 in dynamic network HOT 3
- Cannot deploy bind9 when using proxy HOT 3
- Upgrade to latest BIND9 (9.15.2)
- "templates/make_manifest" doesn't exist HOT 3
- Configurable logging HOT 2
- bug: allow using bind9-boshrelease without defining zones HOT 4
- New release to include forward zone HOT 3
- bind version should be update
- Clean up templates and scripts HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bind9-boshrelease.