У меня есть конфигурация DNS, которая выглядит примерно так:
www.example.com 600 IN CNAME prod.myzone.l2.company.example
prod.myzone.l2.company.example 600 IN CNAME ssl-endpoint-12345.hostcorp.example
ssl-endpoint-12345.hostcorp.example 60 IN A 192.0.2.4
Таким образом, первые две записи CNAME в цепочке имеют TTL 10 минут, а последняя запись A имеет TTL 1 минуту.
CNAME prod.myzone.l2.company.example
выполняет региональную балансировку нагрузки между несколькими конечными точками и автоматически обновляется, если мой поставщик DNS определяет, что текущая конечная точка нездорова. По этой причине я хотел бы распространить изменения в prod.myzone.l2.company.example
CNAME как можно быстрее.
Если бы я хотел уменьшить общее значение TTL, которое видят клиенты при prod.myzone.l2.company.example
изменении, достаточно ли уменьшить только значение TTL записи prod.myzone.l2.company.example
или мне также необходимо уменьшить значение TTL для www.example.com
записи?
решение1
Записи TTL
for CNAME
ничем не отличаются от других записей.
Давайте представим себе рекурсивный распознаватель, через который проходит вышеописанное. Затем он заполняет свой кэш:
www.example.com CNAME
действителен для 600sprod.myzone.l2.company.example CNAME
действителен для 600sssl-endpoint-12345.hostcorp.example A
действительно для 60-х годов
Если кто-то позже сделает ssl-endpoint-12345.hostcorp.example A
прямой запрос, то будет применяться TTL 60 с.
Но если запрос поступает для www.example.com
, то резолвер увидит, что у него нет A
записи, а есть CNAME, и затем повторно использует все вышеперечисленное.
66s (например) после вышеизложенного www.example.com
все еще находится в кэше резолвера, но ssl-endpoint-12345.hostcorp.example A
его там больше не будет, поэтому резолверу придется выполнить новый DNS-запрос, чтобы получить эти данные, и кэшировать их.