J'avais mis un s entre parenthèse à secondaire(s) car les systèmes permettent généralement d'en mettre plusieurs.
En fait ce qu'il me manque comme information, c'est le temps après un échec sur le serveur primaire où il va aller directement au secondaire.
Si tu fais l'essai en déclarant un mauvais serveur primaire, il ne va pas a chaque requête DNS envoyer une requête et attendre le time-out avant de passer sur le secondaire.
Pendant un certain temps, il va aller directement sur le secondaire, car il suppose que le primaire est HS. Cela fait gagner de précieuses secondes au client.
Pour linux, voici le man :
timeout:n
définit le temps que la bibliothèque de résolution doive attendre la réponse d'un serveur de noms distant avant de ressayer une
requête sur un serveur de noms différent. Exprimée en secondes, la valeur par défaut est RES_TIMEOUT (actuellement 5, voir
<resolv.h>). La valeur de cette option est tronquée à 30 sans produire d'erreur.
attempts:n
définit le nombre de fois que la bibliothèque de résolution enverra une requête à ses serveurs de noms avant d'abandonner et ren‐
voyer une erreur à l'application appelante. La valeur par défaut est RES_DFLRETRY (actuellement 2, voir <resolv.h>). La valeur de
cette option est tronquée à 5 sans produire d'erreur.
rotate
configure RES_ROTATE dans _res.options, qui provoquera une sélection en tourniquet (« round-robin ») des serveurs de noms parmi
ceux qui sont listés. Cela a pour effet de diffuser la requête vers tous les serveurs listés plutôt que tous les clients essayent
le premier serveur listé chaque fois.
Donc en configuration par défaut cela fait ça, non ?
- au debut (T=0), requete au primaire
- si après 5 secondes (T=5) pas de réponse: requete au secondaire et nouvelle requete au primaire
- si après 5 secondes après (T=10) pas de réponse: 2ème requête au primaire
- si après 5 secondes (T=15) pas de réponse: 2ème requête au secondaire
- si après 5 secondes (T=20) pas de réponse: échec de la résolution, le client arrête