Pregunta

Supongamos que el siguiente:

Tengo una base de datos creada en database.mywebsite.com , que resuelve al IP 111.111.1.1 , que va desde un servidor DNS local en nuestra red.

Tengo un sinnúmero de aplicaciones ASP, ASP.NET y Windows Forms que utilizan una cadena de conexión que utiliza database.mywebsite.com como el nombre del servidor, todos corriendo desde la red interna.

A continuación, el cuadro de ejecutar la base de datos muere, y cambiar a una nueva caja con una IP de 222.222.2.2 .

Por lo tanto, puedo actualizar el DNS para database.mywebsite.com a punto a 222.222.2.2 .

Will todas las aplicaciones y equipos que ejecutan los han almacenado en caché la dirección IP resuelta edad?

Estoy asumiendo que tendrán.

Cualquier sugerencia a lo largo de las líneas de "no tiene su IP cambia cada vez que se cambia la caja" no están muy bienvenido ya que no puedo controlar este aspecto de la situación, por desgracia. Actualmente estamos usando el nombre de la máquina de la caja, que cambia cada vez que muere y todas las aplicaciones, etc. tiene que ser actualizado con el nuevo nombre de la máquina. Me duele.

¿Fue útil?

Solución

Incluso si el DNS no se almacena en caché local a la máquina, es probable que se almacena en caché en algún punto de la cadena de DNS entre la máquina y los servidores de nombres, al menos por un corto tiempo. Mi opinión es esta situación generalmente se maneja con toma de control de IP en el que acaba de hacer la nueva máquina 111.111.1.1.

Probablemente una pregunta para serverfault.

Otros consejos

Usted está buscando DNS TTL (Time to Live) supongo .. En mi opinión aplicaciones pueden almacenar en caché el IP de como máximo el valor del TTL. Me temo sin embargo, que algunas aplicaciones / tecnologías de realidad podría almacenar en caché ya (alquilásemos en mi opinión totalmente equivocada)

Cada máquina va a almacenar en caché la dirección IP.

La cantidad de tiempo que se almacena en caché es el TTL (tiempo de vida). Se trata de un entorno en el servidor DNS, si se establece muy bajo decir 5 minutos, y entonces demostrar estar en funcionamiento bastante quikly. Un poco de un truco pero debería funcionar.

Sí, los otros comentarios son correctos en el que lo controla este es el conjunto de TTL DNS para el nombre de host database.mywebsite.com.

tendrá que decidir cuál es la cantidad máxima de tiempo que está dispuesto a esperar por si se produce un fallo en su dirección principal (111.111.1.1) después de realizar el cambio a la dirección secundaria. Los valores más bajos se le dará un tiempo de recuperación más rápido, sino que también aumentará la carga y el ancho de banda de su servidor DNS ya que los clientes tendrán que volver a consultar a refrescar su memoria caché más a menudo.

Puede utilizar nslookup usando la opción -d de su pronta cmd para ver lo que sus tiempos predeterminados TTL y TTL veces restantes son para el servidor DNS se está consultando.

%> nslookup -d google.com

Usted debe asumir que se cobran por dos razones que no están claramente mencionadas antes:

1- Muchas versiones "modernas" de las familias OS hacen el almacenamiento en caché de DNS. 2- Muchas aplicaciones de almacenamiento en caché de DNS o tiene mala detección de errores / fallos en las conexiones en directo y / o la apertura de nuevas conexiones. Esto incluiría posiblemente su cliente de base de datos.

Además, este es, probablemente, no está bien documentado. Hice algunas google y encontré esto para MySQL:

http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-connecting-connection-string.html#connector-net-programming-connecting-errors

No explica claramente su comportamiento en este sentido.

he tenido un problema similar con un sitio web que desactiva las características y carreras de reciclaje del grupo de aplicaciones durante semanas. A veces, una caja de SQL Server agrupado reiniciaría y por alguna razón, mi SqlConnection de que no se vuelva a conectar. Estaba consiguiendo el error:

  

Una red-relacionado o específico de la instancia   Ha ocurrido un error mientras se establece una   conexión a SQL Server. El servidor   no se ha encontrado o no era accesible.   Compruebe que el nombre de instancia es   correcta y que SQL Server es   configurado para permitir el control remoto   conexiones. (proveedor: canalizaciones con nombre   Proveedor, error: 40 - No se puede abrir una   conexión a SQL Server)

El servidor estaba allí - y en funcionamiento - de hecho, si acabo de reciclado El grupo de aplicación, la aplicación que funciona bien - pero no me gusta el reciclaje de piscinas aplicación

Las conexiones que fueron detenidos en la agrupación de conexiones se utilizan de alguna manera la información de conexión de edad, y que podrían haber sido las direcciones IP de edad. Esto es lo que parece tan similar a la pregunta del cartel, que parece estar en caché información de DNS, porque tan pronto como una especie de caché está desactivada, la aplicación funciona bien.

Así es como lo resolví - forzando todas las conexiones en la piscina para ser re-creado:

Try
    ' Example: SqlDependency, but this could also be any SqlConnection.Open call
    Dim result As Boolean = SqlClient.SqlDependency.Start(ConnStr)
Catch sqlex As SqlClient.SqlException
    SqlClient.SqlConnection.ClearAllPools()
End Try

El ejemplo de código es sólo lo básico-down hervida - debe ser ajustado para su situación

!

El DNS consigue en caché, pero para cualquier servidor que se resuelve en la dirección IP incorrecta, puede actualizar el archivo HOSTS del servidor y el IP debe actualizarse inmediatamente. Esto podría ser una solución si usted tiene una cantidad limitada de servidores tienen acceso al servidor de base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top