DNS: как заставить локальный сервер накладывать результаты на авторитетный сервер?

Я предположу, что у Вас есть серьезные основания использовать гуиды в качестве идентификаторов.

Фрагментация является главным образом проблемой для сканирований, меньше для ищет. Фрагментация оказывает большое влияние на чтение-aheads и ищет, не используют, ни должны считать aheads. Нефрагментированный индекс с плохим выбором столбца будет всегда работать хуже, чем 99%-й индекс фрагмента с хорошим, применимым, столбцами. Если Вы имели, описал DW, сообщив о запросах стиля, которые сканируют таблицы затем, я был бы, имел, рекомендуют фокусироваться на устранении фрагментации, но для загрузки Вы описываете это, имеет больше смысла фокусироваться на эффективном (покрытие), ищет и (небольшие) сканирования диапазона.

Учитывая, что Вы - схема доступа, всегда управляется @userId, это должно быть крайним левым столбцом в кластерном индексе. Я также добавил бы setOn как второй столбец в кластерном индексе, потому что он добавляет некоторое предельное значение на большинстве запросов (я говорю крайний, потому что @userId таким образом выборочный, в худшем случае 90 записей от 90 миллиметров., то, что дополнительная фильтрация, добавленная @setOn, не очень важна). Я woudldn't добавляют любого не кластерный индекс от запросов, которые Вы описываете, нет никакой потребности ни в ком.

Единственной проблемой является удаление старых записей (хранение этих 30 дней). Я рекомендовал бы против использования вторичного индекса NC удовлетворить это. Я развернул бы еженедельную схему выделения разделов с раздвижным окном, посмотрите, Как Реализовать Автоматическое Раздвижное окно в Разделенной таблице на SQL Server 2005. С этим решением старые записи удалены переключателем раздела, который является просто самым эффективным возможным путем. Ежедневную схему выделения разделов удовлетворила бы требование хранения этих 30 дней более точно и возможно стоит попробовать и протестировать. Я смущаюсь рекомендовать 30 разделов непосредственно, потому что Вы описываете некоторые запросы, которые имеют потенциал для поиска конкретного @userId записи в каждом разделе, и 31 раздел может создать проблемы производительности под большой нагрузкой. Протестируйте и измерьте обоих лучше.

4
задан 5 February 2011 в 21:34
5 ответов

На самом деле, если бы я должен был сделать это, то я использовал бы Сценарий Lua с recursor, который искажает с данными по посттвердости.

Hoever я действительно рекомендую что-то другое: Просто используйте отдельную авторитетную Зону как internal.example.com, где Вы example.com AXFR с авторитетных Серверов и просто добавляете свои локальные данные RFC1918.

Таким образом, можно все еще отладить авторитетную Зону как он, находится в Интернете от LAN, и используйте внутренние данные.

О сценариях PowerDNS Recursor Lua: http://doc.powerdns.com/recursor-scripting.html

2
ответ дан 3 December 2019 в 02:53

То, что я думаю, что Вы хотите, является расщепленным горизонтом установка DNS, однако PowerDNS непосредственно не поддерживает такой (в отличие от этого, Связывают или DJBDNS). Официальный ответ об этом от автора здесь: http://mailman.powerdns.com/pipermail/pdns-users/2006-September/003779.html

Я никогда не находил расщепленный горизонт DNS, чтобы особенно сбивать с толку, сам, особенно если файлы размечаются ясно в файловой системе, например, ./master-interal/domain.com ./master-external/domain.com

Единственная опция, которую они предлагают, состоит в том, чтобы иметь два различных экземпляра PowerDNS, работающего на сервере, слушающем на различных портах. Я предполагаю, что Вы затем усилили бы iptables для перенаправления трафика для портирования 53 на то, какой бы ни экземпляр релевантен.

4
ответ дан 3 December 2019 в 02:53

Я настоятельно рекомендую не спуститься по этому пути, поскольку это чрезвычайно сбивает с толку, сложно, и трудно справиться. Вместо этого необходимо настроить отдельный внутренний домен как inside.example.com. Затем если Ваш вне сервера DNS находится также в Вашей внутренней сети, необходимо настроить его, чтобы быть авторитетными для обоих доменов. Однако, если Ваш внешний сервер DNS не находится на Вашей внутренней сети, необходимо настроить Ваш в сервере DNS, чтобы быть авторитетными для inside.example.com. Затем Ваш в сервере DNS должен передать все другие запросы к внешнему серверу DNS.

Я понимаю, что оборотная сторона этого - Вы, должны изменить домен на всех Ваших внутренних машинах, но выполнение той первичной работы теперь сохранит Вас много беспорядка позже.

1
ответ дан 3 December 2019 в 02:53

Используйте PipeBackend в PowerDNS. Я создал несколько систем на Python.

PipeBackend:

PipeBackend, прежде всего, предназначен для разрешения быстрой разработки новых бэкендов без тесной интеграции с PowerDNS. Это позволяет конечным пользователям писать бэкенды PDNS на любом языке.

0
ответ дан 3 December 2019 в 02:53

Разделение DNS с помощью рекурсора PowerDNS

После того, как я некоторое время возился с моей Fedora 20, я, похоже, заставил его работать. Я нигде не нашел полного руководства, поэтому краткая запись для минимальной настройки:

Explanation

Мы хотим разрешить webserver.dyndns.org для доступа к веб-службе на нем, как из Интернет и локальная сеть.

Из Интернета

Машина a в Интернете разрешает webserver.dyndns.org в IP-адрес IPisp . Behing IPisp - это маршрутизатор с NAT, который перенаправляет порт 80 на IP-адрес LAN IPx , таким образом делая веб-службу доступной в Интернете.

Естественно, это делается путем регистрации. IP-адрес IPisp на полномочном сервере имен для домена dyndns.org , который, в случае такой службы, как DynDns, выполняется с использованием ddclient , запущенного на маршрутизаторе или где-то в локальной сети, и поэтому здесь не представляет интереса.

Из локальной сети

машины b в локальной сети разрешает webserver.dyndns.org в IP-адрес IPx , так что веб-служба становится доступной в локальной сети напрямую. Кроме того, если предположить, что все машины в локальной сети имеют имена в соответствии со строками bar.localdomain , имя webserver.localdomain также должно разрешаться в IPx . Мы также хотим иметь обратный поиск для хорошей оценки, разрешая IPx в webserver.dyndns.org внутри локальной сети (в Интернете, IPx , естественно, преобразуется в ничего, а IPisp преобразуется в некоторую произвольную строку, сгенерированную провайдером.)

Мы предполагаем, что pdns-recursor запущен машина с IP IPdns , но мы также можем запустить ее на веб-сервере (на том же IP-адресе, что и IPx или на псевдониме), или иметь только одну машину в локальной сети .

Машина «b» может быть настроена статически или динамически через DHCP; см. dhclient и dnsmasq и, возможно, avahi . NetworkManager также входит сюда, потому что он может перезаписать /etc/resolv.conf ; пока предположим статическую конфигурацию.

Также предположим:

IPx = 192.168.1.1
IPdns = 192.168.1.2
IPbar = 192.168.1.3

Затем:

/etc/resolv.conf на любом компьютере:

nameserver 192.168.1.2
domain localdomain

Конфигурация для pdns-recursor :

/etc/pdns-recursor/recursor.conf в основном сводится к:

setuid=pdns-recursor
setgid=pdns-recursor
allow-from=127.0.0.0/8, 192.168.1.0/8, ::1/128, fe80::/10
auth-zones=webserver.dyndns.org=/etc/pdns-recursor/[webserver.dyndns.org].zone, localdomain=/etc/pdns-recursor/[localdomain].zone, 168.192.in-addr.arpa=/etc/pdns-recursor/[168.192.in-addr.arpa].zone
local-address=192.168.1.2

Вышеупомянутые ссылки очень сильно сокращены в зоне файлы (их настоящие имена не важны):

В / etc / pdns-recursor / [168.192.in-addr.arpa] .zone (обратите внимание на отсутствие точки в конце имени записи - это относительное имя, а не абсолютное: 1.1 означает 1.1.168.192.in-addr.arpa ). Это работает как с «IN», так и без него.

1.1   IN   PTR     webserver.dyndns.org.
2.1   IN   PTR     dns.localdomain.
3.1   IN   PTR     b.localdomain.

В / etc / pdns-recursor / [webserver.dyndns.org] .zone (обратите внимание на точку в конце имени записи - это абсолютное имя, а не относительное)

webserver.dyndns.org.  IN  A  192.168.1.1

В / etc / pdns-recursor / [localdomain] .zone

webserver    IN  A  192.168.1.1
dns          IN  A  192.168.1.2
b            IN  A  192.168.1.3

После перезапуска pdns-recursor , можно проверить с помощью dig , выполнив следующие команды:

PDNS=192.168.1.2

# Test unknwon domain resolution and webserver resolution    
dig @$PDNS www.cnn.com | grep -A1 ";; ANSWER SECTION:"                  
dig @$PDNS webserver.dyndns.org | grep -A1 ";; ANSWER SECTION:"

# Test responses for localdomain
dig @$PDNS unknown.localdomain | grep -A1 ";; ANSWER SECTION:"
dig @$PDNS webserver.localdomain | grep -A1 ";; ANSWER SECTION:"
dig @$PDNS b.localdomain | grep -A1 ";; ANSWER SECTION:"
dig @$PDNS dns.localdomain A | grep -A1 ";; ANSWER SECTION:"

# Test responses for localdomain if the domain is omitted
dig +search @$PDNS webserver | grep -A1 ";; ANSWER SECTION:"

# Test reverse resolution
dig @$PDNS -x 192.168.1.1 | grep -A1 ";; ANSWER SECTION:"
dig @$PDNS -x 192.168.1.2 | grep -A1 ";; ANSWER SECTION:"
dig @$PDNS -x 192.168.1.3 | grep -A1 ";; ANSWER SECTION:"
dig @$PDNS -x 192.168.1.4 | grep -A1 ";; ANSWER SECTION:"
1
ответ дан 3 December 2019 в 02:53

Теги

Похожие вопросы