Re: Fw: bind-dlz
Michael Schout <[email protected]>
| Newsgroups | gmane.network.dns.bind9.dlz |
|---|---|
| Message-ID | <[email protected]> |
Graham Weldon wrote: > I'd be interested in hearing how you set it up, and more importantly how > this was scaled across various servers etc. Here's another example. Our system is set up with BDBHPT, replicated from a postgresql database. In the postgresql database, there is basically a "dns data journal" table that logs changes to zones, and dns records (added, deleted, updated). Whenver someone adds/updates/deletes a dns record or zone record, an entry is automatically created in this journal table via PL/pgSQL triggers. Each dns server runs bind+dlz, and uses the BDBHPT driver. A small C++ daemon runs on each dns node that waits for data to show up in the "journal" table in the master db. If you are familiar with postgresql, this is done using the LISTEN/NOTIFY mechanism. The C++ daemon runs LISTEN, and the PL/pgSQL triggers in the master DB automatically do a NOTIFY when data is added to the "journal" table. You could accomplish the same thing by actively "polling" the journal table, but the LISTEN/NOTIFY mechanism is the most efficient way to do it if available. The triggers are very simple to write. Sorry, but my client has not given me permission to release the source code so I can not paste it for you :). The C++ daemon simply updates data as it appears in the journal table into the local BDB database. The C++ code is quite short (around 1500 lines total). Obviously the C++ part could be done in another language. It works very well, scales incredibly, and consumes very little resources. If you need to handle more dns traffic, its simply a matter of adding another bind server frontend. Regards, Michael Schout ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/