Tengo un servidor web que se conecta a una base de datos interna a través de una VPN. Hay 2 IP (principal y secundaria) en la base de datos desde el servidor web. ¿Cómo puedo configurar mi archivo / etc / hosts para que si la IP principal no está disponible, se use la IP secundaria?
¿Funcionaría esto para mi archivo de hosts?
141.131.286.1 abc.efg.datastore.com #primary
141.131.286.237 abc.efg.datastore.com #secondary
linux
networking
hosts
Mike T
fuente
fuente
Respuestas:
El archivo de hosts no proporciona dicho mecanismo. Si enumera dos IP para el mismo nombre, solo se utilizará la primera. Por lo tanto, no existen las IP primarias y secundarias.
Además, el archivo de hosts no maneja las URL. Solo maneja nombres como los proporcionados en la pregunta. Una URL contiene una ruta completa y un protocolo como
http://host/path/to/resource
.fuente
No puede proporcionar resistencia o balanceo de carga round robin a través del
/etc/hosts
archivo; no está diseñado para ese propósito.En cambio , sus opciones son ... (sin ningún orden en particular)
fuente
/ etc / hosts no es compatible con round robin, pero puede escribir una secuencia de comandos bash simple para reemplazar una entrada etiquetada con un comentario #RoundRobin (o cualquier otra etiqueta que desee usar, simplemente refleje en la línea grep de la secuencia de comandos) .
La secuencia de comandos anterior toma el resultado de nslookup para sub.domain.com y lo almacena en una matriz. Luego imprime el valor más alto en $ new y toma el valor existente para la etiqueta #RoundRobin asignada en / etc / hosts ... por último, realiza un reemplazo de sed
La entrada del archivo / etc / hosts se vería así
Por último, coloque este script en el crontab de la raíz para que se ejecute cada hora más o menos y ahora tendrá un round robin / etc / host.
Esto es particularmente útil si tiene una página codificada que extrae algunos datos de una API y la búsqueda de DNS para el servidor API está causando mucho tiempo de inactividad en la ejecución del script de la página ... lo que resulta en un alto consumo de CPU para lo que de otro modo Parece ser una página simple. Para evitar la costosa búsqueda de DNS (particularmente si su sitio está haciendo cientos de ellos por minuto para tráfico pesado), debe usar / etc / hosts para resolver el FQDN del servidor API remoto. Esto reducirá drásticamente el uso de la CPU para extraer los datos de la API y generar la página.
fuente
Sí, funcionaría
Sin embargo, el mecanismo de búsqueda simplemente va a la lista hasta que encuentra una coincidencia.
Entonces, aunque la respuesta a la pregunta tal como está escrita es SÍ, será un desafío. Pero nada insuperable.
Pruebe esto: cada una de esas direcciones IP realmente necesita tener nombres diferentes.
fuente
Una manera fácil de hacer que esto suceda sería usar un servicio DNS público, como AWS Route53. Puede ingresar varias direcciones IP por registro A con prioridad
abc.efg.datastore.com
Mientras no haya certificados involucrados, esto funciona y afaik ni siquiera va en contra de las normas o mejores prácticas.
NSLookup u otras consultas de dominio devolverán ambas direcciones. Su aplicación necesita poder manejar esto. Y sí, el dominio debe estar registrado públicamente, no solo un nombre de host local.
fuente
A
los registros no tienen un campo de prioridad. Algunos servicios de DNS autorizados tienen ponderación de registros, pero eso se hace al incluir o excluir probabilísticamente los registros.Fácil de configurar, siga las instrucciones:
que debería responder dos registros con RR-DNS, de modo que si un nodo de la lista está inactivo, su aplicación se conectará a otro
fuente