Configurar el TTL de JVM para las búsquedas de nombres DNS - AWS SDK para Java 1.x

AWS SDK para Java 1.x ha entrado en modo de mantenimiento el 31 de julio de 2024 y llegará al final de soporte el 31 de diciembre de 2025. Le recomendamos que migre a AWS SDK for Java 2.x para seguir recibiendo nuevas características, mejoras de disponibilidad y actualizaciones de seguridad.

Configurar el TTL de JVM para las búsquedas de nombres DNS

La máquina virtual de Java (JVM) almacena en caché las búsquedas de nombres DNS. Cuando la JVM resuelve un nombre de host en una dirección IP, almacena en caché la dirección IP durante un periodo de tiempo especificado, conocido como tiempo de vida (TTL).

Como los recursos de AWS utilizan entradas de nombres de DNS que cambian de vez en cuando, recomendamos que configure su JVM con un valor de TTL de 5 segundos. Con esto se asegurará de que cuando cambie la dirección IP de un recurso, su aplicación pueda recibir y utilizar la nueva dirección IP del recurso volviendo a consultar el DNS.

En algunas configuraciones de Java, el TTL predeterminado de JVM está establecido de forma que nunca se actualicen las entradas DNS hasta que se reinicie la JVM. Por lo tanto, si la dirección IP de un recurso de AWS cambia mientras la aplicación sigue ejecutándose, no podrá utilizar dicho recurso hasta que reinicie manualmente la JVM y se actualice la información de la dirección IP almacenada en caché. En este caso, es fundamental establecer el TTL de la JVM de forma que actualice periódicamente la información de las direcciones IP almacenada en caché.

Cómo configurar el TTL de JVM

Para modificar el TTL de la JVM, defina el valor de la propiedad de seguridad networkaddress.cache.ttl y establezca la propiedad networkaddress.cache.ttl en el archivo $JAVA_HOME/jre/lib/security/java.security para Java 8 o en el archivo $JAVA_HOME/conf/security/java.security para Java 11 o superior.

A continuación se ofrece muestra un fragmento de archivo java.security que muestra la caché de TTL configurada en 5 segundos.

# # This is the "master security properties file". # # An alternate java.security properties file may be specified ... # The Java-level namelookup cache policy for successful lookups: # # any negative value: caching forever # any positive value: the number of seconds to cache an address for # zero: do not cache ... networkaddress.cache.ttl=5 ...

Todas las aplicaciones que se ejecutan en la JVM representada por la variable de entorno $JAVA_HOME utilizan esta configuración.