J'ai un serveur Web qui se connecte à une base de données interne via un VPN. Il existe 2 adresses IP (principale et secondaire) dans la base de données à partir du serveur Web. Comment puis-je configurer mon fichier / etc / hosts pour que si l'adresse IP principale n'est pas disponible, l'adresse IP secondaire sera utilisée?
Est-ce que cela fonctionnerait pour mon fichier d'hôtes?
141.131.286.1 abc.efg.datastore.com #primary
141.131.286.237 abc.efg.datastore.com #secondary
linux
networking
hosts
Mike T
la source
la source
Réponses:
Le fichier hosts ne fournit pas un tel mécanisme. Si vous répertoriez deux adresses IP pour le même nom, seule la première sera utilisée. Donc, il n'y a rien de tel que les IP primaires et secondaires.
En outre, le fichier hosts ne gère pas les URL. Il gère uniquement les noms comme ceux fournis dans la question. Une URL contient un chemin d'accès complet et un protocole tel que
http://host/path/to/resource
.la source
Vous ne pouvez pas fournir de résilience ou d'équilibrage de charge à tour de rôle via le
/etc/hosts
fichier - il n'est pas conçu à cet effet.Au lieu de cela , vos options sont ... (sans ordre particulier)
la source
/ etc / hosts ne prend pas en charge le round robin mais vous pouvez écrire un simple script bash pour remplacer sed une entrée balisée par un commentaire #RoundRobin (ou toute autre balise que vous souhaitez utiliser, il suffit de la refléter dans la ligne grep du script) .
Le script ci-dessus capture la sortie de nslookup pour sub.domain.com et la stocke dans un tableau. Il imprime ensuite la valeur la plus élevée dans $ new et récupère la valeur existante pour la balise #RoundRobin affectée dans / etc / hosts ... enfin, il effectue un remplacement sed
L'entrée du fichier / etc / hosts ressemblerait à ceci
Enfin, placez ce script dans la crontab de la racine pour l'exécuter toutes les heures environ et vous aurez maintenant un round-robin / etc / host.
Cela est particulièrement utile si vous avez une page codée qui extrait des données d'une API et que la recherche DNS pour le serveur d'API entraîne beaucoup de temps d'arrêt dans l'exécution du script de la page ... entraînant une consommation élevée de CPU pour ce qui serait autrement semblent être une simple page. Pour éviter la recherche DNS coûteuse (en particulier si votre site en fait des centaines par minute pour un trafic important), vous devez utiliser / etc / hosts pour résoudre le nom de domaine complet du serveur d'API distant. Cela réduira considérablement l'utilisation du processeur pour extraire les données API et générer la page.
la source
Oui, ça marcherait.
Cependant, le mécanisme de recherche fait simplement la liste jusqu'à ce qu'il trouve une correspondance.
Ainsi, alors que la réponse à la question telle qu'elle est écrite est OUI, ce sera un défi. Mais rien d'insurmontable.
Essayez ceci: chacune de ces adresses IP doit vraiment avoir des noms différents.
la source
Un moyen simple d'y parvenir serait d'utiliser simplement un service DNS public, comme AWS Route53. Vous pouvez entrer plusieurs adresses IP par enregistrement A avec priorité
abc.efg.datastore.com
Tant qu'aucun certificat n'est impliqué, cela fonctionne et n'est même pas contraire aux normes ou aux meilleures pratiques.
NSLookup ou d'autres requêtes de domaine renverront les deux adresses. Votre application doit pouvoir gérer cela. Et oui, le domaine doit être enregistré publiquement, pas seulement un nom d'hôte local.
la source
A
les enregistrements n'ont pas de champ prioritaire. Certains services DNS faisant autorité ont une pondération d'enregistrement, mais cela se fait en incluant ou en excluant les enregistrements de manière probabiliste.Facile à installer, veuillez suivre les instructions:
qui devrait répondre à deux enregistrements avec RR-DNS donc si un nœud de la liste est en panne - votre application sera connectée à un autre
la source