Makes sense, thank you.

Back to DLZs, I see that they are removed from the configure.ac
Are they supposed to be built individually now, and not from the main build 
system?


Regards
Hamid Maadani

September 12, 2022 5:13 AM, "Petr Špaček" <pspa...@isc.org> wrote:

> On 24. 08. 22 17:48, hamid wrote:
> 
>>> Such use case (authoritative data) is fine, I was merely speaking
>> about caching server before.
>> 
>> Understood. Interesting. Was my understanding of DynDB correct? It reads
>> from a backend DB into memory, to eliminate the latency?
> 
> Not necessairly. DynDB API simply allows you to hook into BIND internals
> and gives you access to all the gory details in the database API.
> 
> It's up to the dyndb module implementation to decide what to do with it.
> 
> An complex example is:
> https://pagure.io/bind-dyndb-ldap
> 
> It establishes persistent connection to a RFC 4533-compliant LDAP server
> (that's no-SQL, see! :-)), pulls in all the data into BIND server
> memory, and keeps monitoring the server for changes. Any changes on the
> LDAP side and applied to the DNS side in real-time, and it also works
> the other way around and writes DNS updates back into LDAP.
> 
> This is one possible way how it can be implemented. With all the data in
> memory it is "simple" to turn on inline-signing and thus have proper
> DNSSEC support "for free". Doing so with incomplete data would be way
> more challenging to implement in BIND.
> 
>> In my proposed "workaround" (a hidden primary server with DLZ and
>> multiple secondary caching nodes) we gain speed but lose the dynamic
>> element. Meaning if a record is updated in the DB, the change will be
>> reflected on the caching servers after ttl.
> 
> It sounds almost like confusing authoritative and recursive roles? Auth
> servers can be updated at any time using dynamic updates or zone
> transfers. All what's needed is to send out NOTIFY message from the
> primary ("master") to secondaries. No need to wait for TTL to expire.
> 
>> With DynDB, a reload would be necessary after any update if I understand
>> correctly.
> 
> No, see above.
> 
>> Trying to understand how would a hidden primary with DLZ, paired with
>> multiple secondaries with dynamic zones leveraging nsupdate work. Do
>> secondaries poll the primary? Or is primary sending updates to
>> secondaries when a record is updated? I believe it's the former, just
>> trying to clarify.
> 
> Depending on amount of data, source system/protocol, and other local
> conditions you might be able to use other ways to export data in DNS
> format than DLZ or DynDB. For example implementing "something" which
> pretends to do only AXFR/IXFR/NOTIFY might be another option. Yet
> another option might be _something else_ based on AXFR/nsupdate.
> 
> I hope it helps.
> Petr Špaček
> 
>> Regards
>> Hamid Maadani
>> 
>> -------- Original message --------
>> From: Ondřej Surý <ond...@isc.org>
>> Date: 8/24/22 02:32 (GMT-08:00)
>> To: hamid <ha...@dexo.tech>
>> Cc: ML BIND Users <bind-users@lists.isc.org>
>> Subject: Re: Thread handling
>> 
>>> On 24. 8. 2022, at 11:01, hamid <ha...@dexo.tech
>>> <ha...@dexo.tech>> wrote:
>>> 
>>>> Perhaps, describing the use case first (why do you want to use
>>> MongoDB at all) might have the benefit of not wasting time on your end.
>>> 
>>> Forgot to answer this, my use case would be the same as someone who
>>> uses a SQL DB backend I imagine: to be able to configure multiple BIND
>>> endpoints, using the same backend DB instead of configuration files,
>>> so there is no need to worry about change propagation and use of
>>> configuration management tools like chef, ansible etc.
>>> I just prefer to use no-sql backends like MongoDB, or Amazon's DocumentDB.
>>> 
>>> If there is any specific downside to using no-sql databases, or any
>>> reason it would not make sense, I would appreciate it if you can
>>> explain it a bit. I am aware of the latency it would introduce, but
>>> was under the impression that DynDB is introduced to address that.
>> 
>> Such use case (authoritative data) is fine, I was merely speaking about
>> caching server before.
>> 
>> You have to calculate the benefit-cost ratio yourself compared to other
>> provisioning systems - f.e. hidden primary with multiple secondaries
>> updated with nsupdate works reasonably well in smaller deployments.
>> 
>> Cheers,
>> Ondrej
>> --
>> Ondřej Surý (He/Him)
>> ond...@isc.org <ond...@isc.org>
>> 
>> My working hours and your working hours may be different. Please do not
>> feel obligated to reply outside your normal working hours.
>> 
>>> Regards
>>> Hamid Maadani
>>> 
>>> -------- Original message --------
>>> From: Hamid Maadani <ha...@dexo.tech <ha...@dexo.tech>>
>>> Date: 8/24/22 01:08 (GMT-08:00)
>>> To: Ondřej Surý <ond...@isc.org <ond...@isc.org>>, Evan Hunt
>>> <e...@isc.org <e...@isc.org>>
>>> Cc:bind-users@lists.isc.org <bind-users@lists.isc.org>
>>> Subject: Re: Thread handling
>>> 
>>>> BIND does have dyndb support, since 9.11.
>>>> As far as I know, though, the only two dyndb modules in existence are
>>>> the bind-dyndb-ldap modiule that was written by Red Hat as part of
>>>> FreeIPA, and a toy module used for testing. If you were interested in
>>>> writing your MongoDB module for dyndb instead of DLZ, I'd be quite
>>>> excited about that, I've long hoped the API would get more use.
>>> 
>>> Interesting. I looked in the contrib directory and only found the DLZ
>>> modules there. Can you please point me in the direction of the source
>>> code for that toy module?
>>> I would definitely work on a mongo-dyndb implementation as well, when
>>> the time permits.
>>>> I am fairly confident that any advantage from shared cache will be
>>> lost because the extra latency caused by communication with the
>>> MongoDB (or any other no-sql systems).
>>>> Perhaps, describing the use case first (why do you want to use
>>> MongoDB at all) might have the benefit of not wasting time on your end.
>>> 
>>> This is a bit confusing to me. As I understand it, a normal bind zone
>>> is loaded into memory, and requests are served from that memory-cache,
>>> hence super fast.
>>> DLZ modules however, make a call to the backend database per query.
>>> Which would introduce latency (in my tests, 50ms when using an Atlas
>>> cluster in the same geographical region). However, why would this be
>>> specific to no-sql databases?! Doesn't this also apply to any sql
>>> based DB?
>>> 
>>> Now, an advantage of DLZ, is any change you make to the backend DB
>>> takes place immediately without the need to reload the server. Not a
>>> huge advantage in my personal opinion, but I do see the use case for it.
>>> Looking for a way to load queried records from a backend database into
>>> memory to speed up the responses, I found posts about the DynDB API.
>>> If Evan can kindly point me in the right direction there, I will be
>>> developing both DLZ and DynDB modules for MongoDB, as I do see use
>>> cases for each one.
>>> 
>>> The caching question that I asked, was more around having a workaround
>>> without DynDB, because I was under the impression that DynDB API is
>>> not available at the moment. My understanding of a BIND caching server
>>> (and admittedly , I am by no means an advanced user when it comes to
>>> BIND), is that it would query records from another server, and cache
>>> them for the life (TTL) of that record, and serve it. This cache,
>>> exists in memory, correct?
>>> So in theory, if I was to use a DLZ to keep my records in a backend
>>> DB, I can technically create a BIND server with the DLZ enabled (let's
>>> say a docker image), and then put a caching server in front of it,
>>> which is "customer facing".
>>> That way, all queries will come to the caching server, and will be
>>> served super fast because they are cached in memory, but the actual
>>> records live in a backend DB somewhere.
>>> Long story short, I was trying to see if the same can be achieved with
>>> one single instance instead of two, which sounds like it can not be done.
>>> 
>>> Regards
>>> Hamid Maadani
>>> 
>>> August 24, 2022 12:40 AM, "Ondřej Surý" <ond...@isc.org
>>> <ond...@isc.org?to=%22ond%c5%99ej%20sur%c3%bd%22%20%3cond...@isc.org%3E>> 
>>> wrote:
>> 
>> On 24. 8. 2022, at 8:48, Evan Hunt <e...@isc.org
>> <e...@isc.org>> wrote:
>> In the absence of that, is caching from DLZ a possible configuration
>> on a single BIND server?
>> 
>> Not DLZ, no. And I'm not sure dyndb can be used for the cache
>> database,
>> either; do you know something about it that I don't?
>> 
>> It would definitely be easier to *make* dyndb work for the cache;
>> it has all the necessary API calls, and DLZ doesn't. But I don't
>> know a way to configure it to take the place of the cache currently.
>> If you do, please educate me.
>>> I am fairly confident that any advantage from shared cache will be
>>> lost because the extra latency caused by communication with the
>>> MongoDB (or any other no-sql systems).
>>> Perhaps, describing the use case first (why do you want to use
>>> MongoDB at all) might have the benefit of not wasting time on your
>>> end.
>>> Ondrej
> 
> --
> Petr Špaček
> 
> --
> Visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from 
> this list
> 
> ISC funds the development of this software with paid support subscriptions. 
> Contact us at
> https://www.isc.org/contact for more information.
> 
> bind-users mailing list
> bind-users@lists.isc.org
> https://lists.isc.org/mailman/listinfo/bind-users
-- 
Visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from 
this list

ISC funds the development of this software with paid support subscriptions. 
Contact us at https://www.isc.org/contact/ for more information.


bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to