PowerDNS MongoDB: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 42: | Строка 42: | ||
</PRE> |
</PRE> |
||
Насколько я могу понять - нужно писать hint { ... } а не $hint. Предположительно это баг. |
Насколько я могу понять - нужно писать hint { ... } а не $hint. Предположительно это баг. |
||
+ | |||
+ | ==MongoDB - минимальные записи записи== |
Версия 15:02, 8 июня 2012
PowerDNS + MongoDB
Требуется - настроить ДНС сервер который будет брать данные из Монго. Почему Монго - так хочет заказчик. Заполнять базу будет отдельное приложение, днс будет частью системы.
Сборка плагина
Ни одна из бинарных сборок которые я попробовал не включала плагина для работы с монго. В gentoo не было ключа для включение плагина при компиляции.
Путь один - собирать сервер руками. (чуть позже - собрать пакет для своей системы, rpm )
Для сборки требуются исходники mongo. Я не нашел как передать путь к хедерам монго - насколько я могу судить путь захардкожен. Потому (знаю что не правильно) просто скопировал все хедеры в папку с плагином (/usr/src/pdns-3.0.1/modules/mongodbbackend/)
Далее традиционно
./configure make
Обратить внимание на описание проблем со сборкой ниже - мне пришлось "патчить" модуль до рабочего состояния. Возможно вам не прийдется, или это особенность моего дистрибутива или сборки.
make install не делаю а беру модуль и подкладываю его там где ищет pdns_server
Ошибка в плагине
Мне пришлось закоментировать использование хинтов - с ними я получал ошибку:
Jun 08 14:15:19 [MONGODBBackend: (1)] (getSOA) Query: { name: "smtp-servers.example.com" } Jun 08 14:15:19 [MONGODBBackend: (1)] (getSOA) Query: { name: "example.com" } Jun 08 14:15:19 We have authority, zone='example.com', id=10 Jun 08 14:15:19 UeberBackend received question for ANY of smtp-servers.example.com Jun 08 14:15:19 [MONGODBBackend: (1)] (lookup) Query: { query: { name: "smtp-servers.example.com" }, $hint: { name: 1 } } Jun 08 14:15:19 Ueber get() was called for a ANY record Jun 08 14:15:19 [MONGODBBackend: (1)] (get) Error: The record '{ $err: "bad hint", code: 10113 }' is missing required element(s) for the query '{ query: { name: "smtp-servers.example.com" }, $hint: { name: 1 } }' Jun 08 14:15:19 UeberBackend reached end of backends Jun 08 14:15:19 After first ANY query for 'smtp-servers.example.com', id=10: weDone=0, weHaveUnauth=0, weRedirected=0 Jun 08 14:15:19 Found nothing in the ANY, but let's try wildcards.. Jun 08 14:15:19 UeberBackend received question for ANY of *.example.com Jun 08 14:15:19 [MONGODBBackend: (1)] (lookup) Query: { query: { name: "*.example.com" }, $hint: { name: 1 } } Jun 08 14:15:19 Ueber get() was called for a ANY record Jun 08 14:15:19 [MONGODBBackend: (1)] (get) Error: The record '{ $err: "bad hint", code: 10113 }' is missing required element(s) for the query '{ query: { name: "*.example.com" }, $hint: { name: 1 } }' Jun 08 14:15:19 UeberBackend reached end of backends Jun 08 14:15:19 Found nothing in the ANY and wildcards, let's try NS referral Jun 08 14:15:19 UeberBackend received question for NS of smtp-servers.example.com Jun 08 14:15:19 [MONGODBBackend: (1)] (lookup) Query: { query: { name: "smtp-servers.example.com", type: "NS" }, $hint: { name: 1, type: 1 } } Jun 08 14:15:19 Ueber get() was called for a NS record Jun 08 14:15:19 [MONGODBBackend: (1)] (get) Error: The record '{ $err: "bad hint", code: 10113 }' is missing required element(s) for the query '{ query: { name: "smtp-servers.example.com", type: "NS" }, $hint: { name: 1, type: 1 } }'
Насколько я могу понять - нужно писать hint { ... } а не $hint. Предположительно это баг.