fail_over

Resolver wrapper that queries a primary resolver first and falls back to a standby resolver when needed.

At runtime the result is chosen with the following rules:

  1. The success result of the primary resolver will always be used before the timeout.

  2. The first success result either from the primary or the standby resolver will be used after the timeout.

  3. If no resolver returns a successful result, the last error is used.

The following common keys are supported:

The config loader rejects using the same resolver name for both primary and standby.

primary

required, type: string

Primary resolver.

standby

required, type: string

Standby resolver.

fallback_delay

optional, type: humanize duration, alias: delay, fallback_timeout, timeout

Timeout before the standby resolver is allowed to participate.

default: 100ms

negative_ttl

optional, type: u32, alias: protective_cache_ttl

Time-to-Live (TTL) for negative caching of failed DNS lookups.

default: 30

retry_empty_record

optional, type: bool

Controls whether a fallback query should be attempted when the first answer contains no IP addresses.

default: false

Example

primary: hickory-main
standby: c-ares-backup
fallback_delay: 250ms
negative_ttl: 30
retry_empty_record: true

Added in version 1.7.13.