Re: confusion over dns resolution
Fell free to propose a patch with the way you want it to be worded. Baptiste On Fri, Nov 4, 2016 at 4:15 PM, komu wairaguwrote: > Hi Baptiste, > > That's very helpful. > > I wish we could add your examples section to the official > documentation because it helps clear up the maths. > > Komu W. > > On 04/11/2016, Baptiste wrote: > > On Fri, Nov 4, 2016 at 3:55 PM, komu wairagu wrote: > > > >> Hi guys, > >> > >> I'm a little confused by the wording on the official haproxy ver1.6 > >> documentation(https://cbonte.github.io/haproxy-dconv/1.6/ > >> configuration.html) > >> especially as concerning dns resolution. > >> > >> Here's a section of my haproxy config: > >> > >> ## start config > >> > >> resolvers my_dns_resolver > >> #Google name servers > >> nameserver dns1 8.8.8.8:53 > >> nameserver dn2 8.8.4.4:53 > >> resolve_retries 30 > >> timeout retry 1s > >> hold valid 2010 > >> > >> frontend my_frontend > >> bind *:80 > >> default_backend my_backend > >> > >> > >> backend my_backend > >> balance roundrobin > >> server my_domain my_domain.com check resolvers my_dns_resolver > inter > >> 2000 > >> > >> ## end config > >> > >> So my question is, > >> How often will haproxy (version 1.6) do a dns resolution? Is it every > >> 2000 ms(health check interval) or > >> every 10ms (2010 modulo 2000) ? > >> > >> The documenation says: > >> > >> `Note: since the name resolution is triggered by the health checks, a > new > >> resolution is triggered after modulo the > parameter > >> of > >> the healch check.` > >> > >> but I'm getting confused by the wording. > >> I have two interpretations from reading that documentaion; > >> 1. dns resolution is triggered by health checks and thus will happen > >> ( modulo the ) milliseconds after the health check. > >> 2. dns resolution will happen every ( modulo the ) > >> milliseconds. > >> > >> So if we start at time 00.00.00.00(hh.mm.ss.ms) > >> for case 1 above health check happens at 00.00.02.00 and first dns > >> resolution happens at > >> 00.00.02.10 and second one at 00.00.04.10 etc > >> while for case 2 above health check happens at 00.00.02.00 and first > >> dns resolution happens at > >> 00.00.02.10 and second one at 00.00.02.20 etc > >> > >> > >> thanks, > >> Komu W. > >> > >> > > > > Hi Komu, > > > > Technically, HAProxy's internal scheduler will wake up the health check > > task at period. > > Before processing the check itself, HAProxy will check if the last > > resolution result is obsolete, so it 'now > last-resolution + hold valid' > > period. > > > > This means: > > - smallest DNS resolution period will be if DNS resolution period > > is lower than > > - if DNS resolution period is greater than , then next DNS > > resolution will be after X times , X being the rounded ratio > between > > and DNS resolution period > > > > With some examples: > > - inter = 2s, DNS hold valid = 1s, then DNS resolution will happen every > 2s > > - inter = 2s, DNS hold valid = 5s, then DNS resolution will happen every > 6s > > - inter = 2s, DNS hold valid = 10s, then DNS resolution will happen every > > 10s > > > > Baptiste > > >
Re: confusion over dns resolution
Hi Baptiste, That's very helpful. I wish we could add your examples section to the official documentation because it helps clear up the maths. Komu W. On 04/11/2016, Baptistewrote: > On Fri, Nov 4, 2016 at 3:55 PM, komu wairagu wrote: > >> Hi guys, >> >> I'm a little confused by the wording on the official haproxy ver1.6 >> documentation(https://cbonte.github.io/haproxy-dconv/1.6/ >> configuration.html) >> especially as concerning dns resolution. >> >> Here's a section of my haproxy config: >> >> ## start config >> >> resolvers my_dns_resolver >> #Google name servers >> nameserver dns1 8.8.8.8:53 >> nameserver dn2 8.8.4.4:53 >> resolve_retries 30 >> timeout retry 1s >> hold valid 2010 >> >> frontend my_frontend >> bind *:80 >> default_backend my_backend >> >> >> backend my_backend >> balance roundrobin >> server my_domain my_domain.com check resolvers my_dns_resolver inter >> 2000 >> >> ## end config >> >> So my question is, >> How often will haproxy (version 1.6) do a dns resolution? Is it every >> 2000 ms(health check interval) or >> every 10ms (2010 modulo 2000) ? >> >> The documenation says: >> >> `Note: since the name resolution is triggered by the health checks, a new >> resolution is triggered after modulo the parameter >> of >> the healch check.` >> >> but I'm getting confused by the wording. >> I have two interpretations from reading that documentaion; >> 1. dns resolution is triggered by health checks and thus will happen >> ( modulo the ) milliseconds after the health check. >> 2. dns resolution will happen every ( modulo the ) >> milliseconds. >> >> So if we start at time 00.00.00.00(hh.mm.ss.ms) >> for case 1 above health check happens at 00.00.02.00 and first dns >> resolution happens at >> 00.00.02.10 and second one at 00.00.04.10 etc >> while for case 2 above health check happens at 00.00.02.00 and first >> dns resolution happens at >> 00.00.02.10 and second one at 00.00.02.20 etc >> >> >> thanks, >> Komu W. >> >> > > Hi Komu, > > Technically, HAProxy's internal scheduler will wake up the health check > task at period. > Before processing the check itself, HAProxy will check if the last > resolution result is obsolete, so it 'now > last-resolution + hold valid' > period. > > This means: > - smallest DNS resolution period will be if DNS resolution period > is lower than > - if DNS resolution period is greater than , then next DNS > resolution will be after X times , X being the rounded ratio between > and DNS resolution period > > With some examples: > - inter = 2s, DNS hold valid = 1s, then DNS resolution will happen every 2s > - inter = 2s, DNS hold valid = 5s, then DNS resolution will happen every 6s > - inter = 2s, DNS hold valid = 10s, then DNS resolution will happen every > 10s > > Baptiste >
Re: confusion over dns resolution
On Fri, Nov 4, 2016 at 3:55 PM, komu wairaguwrote: > Hi guys, > > I'm a little confused by the wording on the official haproxy ver1.6 > documentation(https://cbonte.github.io/haproxy-dconv/1.6/ > configuration.html) > especially as concerning dns resolution. > > Here's a section of my haproxy config: > > ## start config > > resolvers my_dns_resolver > #Google name servers > nameserver dns1 8.8.8.8:53 > nameserver dn2 8.8.4.4:53 > resolve_retries 30 > timeout retry 1s > hold valid 2010 > > frontend my_frontend > bind *:80 > default_backend my_backend > > > backend my_backend > balance roundrobin > server my_domain my_domain.com check resolvers my_dns_resolver inter > 2000 > > ## end config > > So my question is, > How often will haproxy (version 1.6) do a dns resolution? Is it every > 2000 ms(health check interval) or > every 10ms (2010 modulo 2000) ? > > The documenation says: > > `Note: since the name resolution is triggered by the health checks, a new > resolution is triggered after modulo the parameter > of > the healch check.` > > but I'm getting confused by the wording. > I have two interpretations from reading that documentaion; > 1. dns resolution is triggered by health checks and thus will happen > ( modulo the ) milliseconds after the health check. > 2. dns resolution will happen every ( modulo the ) > milliseconds. > > So if we start at time 00.00.00.00(hh.mm.ss.ms) > for case 1 above health check happens at 00.00.02.00 and first dns > resolution happens at > 00.00.02.10 and second one at 00.00.04.10 etc > while for case 2 above health check happens at 00.00.02.00 and first > dns resolution happens at > 00.00.02.10 and second one at 00.00.02.20 etc > > > thanks, > Komu W. > > Hi Komu, Technically, HAProxy's internal scheduler will wake up the health check task at period. Before processing the check itself, HAProxy will check if the last resolution result is obsolete, so it 'now > last-resolution + hold valid' period. This means: - smallest DNS resolution period will be if DNS resolution period is lower than - if DNS resolution period is greater than , then next DNS resolution will be after X times , X being the rounded ratio between and DNS resolution period With some examples: - inter = 2s, DNS hold valid = 1s, then DNS resolution will happen every 2s - inter = 2s, DNS hold valid = 5s, then DNS resolution will happen every 6s - inter = 2s, DNS hold valid = 10s, then DNS resolution will happen every 10s Baptiste