URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 92005
[ Назад ]

Исходное сообщение
"Проблема DNS на Linux"

Отправлено dimaonline , 27-Июл-11 07:44 
Заметил проблему на Linux вне зависимости от реализации и места установки в Internet:

при обращении к геокластерам с балансировкой по DNS (несколько IP на одном имени DNS) Linux игнорирует TTL DNS сервера для записей и при каждом обращении к такому серверу обращается к новому IP.

Для примера пинг на www2.l.google.com

Windows (каждый раз в период TTL):
C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49


Linux:

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.104) 56(84) bytes of data.
64 bytes from ey-in-f104.1e100.net (74.125.79.104): icmp_seq=1 ttl=49 time=129 ms
64 bytes from ey-in-f104.1e100.net (74.125.79.104): icmp_seq=2 ttl=49 time=129 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 129.428/129.470/129.512/0.042 ms

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.147) 56(84) bytes of data.
64 bytes from ey-in-f147.1e100.net (74.125.79.147): icmp_seq=1 ttl=49 time=131 ms
64 bytes from ey-in-f147.1e100.net (74.125.79.147): icmp_seq=2 ttl=49 time=135 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 131.440/133.372/135.304/1.932 ms

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.99) 56(84) bytes of data.
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=1 ttl=49 time=126 ms
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=2 ttl=49 time=131 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 126.788/128.926/131.064/2.138 ms


Как заставить Linux обращаться одному серверу в окне TTL DNS записи?


Содержание

Сообщения в этом обсуждении
"Проблема DNS на Linux"
Отправлено PavelR , 27-Июл-11 08:14 
> Заметил проблему на Linux вне зависимости от реализации и места установки в
> Internet:

Нет уж, это вы проблему в виндовс заметили, вне зависимости от места её установки в Internet ;-)

Это она делает кэширование. Как отключать - см. http://support.microsoft.com/kb/318803 .

> Как заставить Linux обращаться одному серверу в окне TTL DNS записи?

Тоже кэшировать на уровне приложения.


"Проблема DNS на Linux"
Отправлено dimaonline , 27-Июл-11 08:22 
> Тоже кэшировать на уровне приложения.

Что значит кешировать на уровне приложения ? и на Windows  и на Linux за это отвечает одна и та же функция gethostbyname. Так на Windows это кешируется (и это правильно, т.к. TTL на то и придумали), а на Linux - НЕТ.


"Проблема DNS на Linux"
Отправлено PavelR , 27-Июл-11 10:06 
>> Тоже кэшировать на уровне приложения.
> Что значит кешировать на уровне приложения ? и на Windows  и
> на Linux за это отвечает одна и та же функция gethostbyname.

не вызывать gethostbyname повторно без явной необходимости. Одного раза достаточно.
Первый адрес не работает - не получилось соединиться - делаем повторный запрос, получаем другой адрес,  соединяемся, всё работает.

Так на всех система это так и работает (и это правильно, т.к. RoundRobin на тои придумали), а на Windows - НЕТ. Даже костылек в реестре сделали. Прочитайте текст по ссылке.


> Так на Windows это кешируется (и это правильно, т.к. TTL на
> то и придумали), а на Linux - НЕТ.

Давно ли оно кэшируется в Windows - также написано в KB Article по предоставленной ссылке.

"Есть два мнения - мое и неправильное?"



"Проблема DNS на Linux"
Отправлено dimaonline , 27-Июл-11 10:28 
> "Есть два мнения - мое и неправильное?"

Ну тогда это "мое мнение" следует переадресовать к разработчикам всех программ под Linux, что у меня работают под Linux. Не могу я всем сказать "Вы все идете не вногу, один я в ногу. Подстраивайтесь под меня". Тот же самый firefox часть берет с одного сайта, а часть с другого, и если на первом сайте началась какая-то транзакция с базой, то второй сайт об этой транзакции ничего не знает - в результате - ОШИБКА.


"Проблема DNS на Linux"
Отправлено user , 27-Июл-11 11:10 
>[оверквотинг удален]
> Первый адрес не работает - не получилось соединиться - делаем повторный запрос,
> получаем другой адрес,  соединяемся, всё работает.
> Так на всех система это так и работает (и это правильно, т.к.
> RoundRobin на тои придумали), а на Windows - НЕТ. Даже костылек
> в реестре сделали. Прочитайте текст по ссылке.
>> Так на Windows это кешируется (и это правильно, т.к. TTL на
>> то и придумали), а на Linux - НЕТ.
> Давно ли оно кэшируется в Windows - также написано в KB Article
> по предоставленной ссылке.
> "Есть два мнения - мое и неправильное?"

То есть кэширующие ДНС - тоже неправильные?


"Проблема DNS на Linux"
Отправлено PavelR , 27-Июл-11 15:56 
>[оверквотинг удален]
>> получаем другой адрес,  соединяемся, всё работает.
>> Так на всех система это так и работает (и это правильно, т.к.
>> RoundRobin на тои придумали), а на Windows - НЕТ. Даже костылек
>> в реестре сделали. Прочитайте текст по ссылке.
>>> Так на Windows это кешируется (и это правильно, т.к. TTL на
>>> то и придумали), а на Linux - НЕТ.
>> Давно ли оно кэшируется в Windows - также написано в KB Article
>> по предоставленной ссылке.
>> "Есть два мнения - мое и неправильное?"
> То есть кэширующие ДНС - тоже неправильные?

А что, они при Round Robin из пачки IP выхватывают один?
Они как-то целым ответом от вышестоящего сервера оперируют, его же и кэшируют, и его же отдают на запросы своих клиентов. Ответ. Целиком. А не часть ответа, в виде одного IP.


"Проблема DNS на Linux"
Отправлено dimaonline , 27-Июл-11 16:03 
> Они как-то целым ответом от вышестоящего сервера оперируют, его же и кэшируют,
> и его же отдают на запросы своих клиентов. Ответ. Целиком. А
> не часть ответа, в виде одного IP.

Нифига. Специально проверил tcpdump-ом. каждый пинг порождает отдельный запрос к DNS и сервер возвращает ему ОДИН IP, а не все как ты утверждаешь.