Pdns round robin: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
В конфигурации по-умолчанию если есть более чем одна запись, то клиенту отдается список. Кроме того что выбор адреса из списка оставляется на умотрение клиента, в случае больших конфигураций ответ от сервера может оказаться слишком большим. |
В конфигурации по-умолчанию если есть более чем одна запись, то клиенту отдается список. Кроме того что выбор адреса из списка оставляется на умотрение клиента, в случае больших конфигураций ответ от сервера может оказаться слишком большим. |
||
==PowerDNS - исправления в коде== |
==PowerDNS - исправления в коде== |
||
+ | Все изменения только в файле |
||
+ | <PRE>gmysqlbackend.cc</PRE> |
||
+ | Меняю 2 строки |
||
+ | <BR> |
||
+ | Добавляю limit 1 и рандомную сортировку |
||
+ | <PRE> |
||
+ | declare(suffix,"id-query","Basic with ID query","select content,ttl,prio,type,domain_id,name from records where type='%s' and name='%s' and domain_id=%d ORDER BY RAND() limit 1"); |
||
+ | </PRE> |
||
+ | Для ANY (any-id-query) ситуация чуть сложнее из-за того что параметры передаются в запрос, но по факту их нужно использовать 2 раза. потому - пришлось написать храниму. процедуру. |
||
+ | <PRE> |
||
+ | declare(suffix,"any-id-query","Any with ID query","CALL AnyIdQuery('%s', %d)"); |
||
+ | </PRE> |
||
+ | |||
==MySQL - хранимая процедура== |
==MySQL - хранимая процедура== |
Версия 15:09, 5 сентября 2014
PowerDNS Round-Robin
Захотелось следующюю фичу - отдавать строго один IP из списка, что бы лешить потенциально глючных клиентов возможности выбора. В конфигурации по-умолчанию если есть более чем одна запись, то клиенту отдается список. Кроме того что выбор адреса из списка оставляется на умотрение клиента, в случае больших конфигураций ответ от сервера может оказаться слишком большим.
PowerDNS - исправления в коде
Все изменения только в файле
gmysqlbackend.cc
Меняю 2 строки
Добавляю limit 1 и рандомную сортировку
declare(suffix,"id-query","Basic with ID query","select content,ttl,prio,type,domain_id,name from records where type='%s' and name='%s' and domain_id=%d ORDER BY RAND() limit 1");
Для ANY (any-id-query) ситуация чуть сложнее из-за того что параметры передаются в запрос, но по факту их нужно использовать 2 раза. потому - пришлось написать храниму. процедуру.
declare(suffix,"any-id-query","Any with ID query","CALL AnyIdQuery('%s', %d)");