Я собираюсь запустить новый веб-сайт, для которого потребуются DNS-серверы. Он может иметь более 10 000 зон и будет получать больше файлов зон по мере нашего увеличения. Проблема в том, какое программное обеспечение DNS-сервера, по вашему мнению, более эффективно: mydns
который использует mysql для хранения данных или bind
где используются плоские файлы? Как эти DNS-серверы обрабатывают балансировку нагрузки, чтобы мы могли сбалансировать нагрузку между несколькими серверами, чтобы ни один из них не перегружался?
На мой взгляд, BIND лучше. Его легко настроить, вам не нужно перезапускать BIND, кроме случаев, когда вы обновляете программное обеспечение. Что вам нужно знать для BIND, так это команду rndc. Rndc позволяет перезагрузить отдельную зону, оставив BIND включенным. Если вы редактировали файл зоны, rndc немедленно опубликует изменения.
BIND может запускать базу данных. Вам необходимо указать некоторые шаги в шаге ./configure.
У меня есть хорошие инструкции, но они на русском языке. Попробую написать небольшой план действий.
Перейдите в папку с загруженным файлом, чтобы извлечь:
cd ~ / загрузки / tar -xzf mysql-bind.tar.gz
Перейдите в порт и загрузите исходный код bind9 (ваша версия mysql-bind предназначена для этой службы). Пока не компилировать!
cd / usr / ports / dns / bind9 сделать извлечение извлечения
Скопируйте загруженные файлы mysql-bind в источники привязки:
cp ~ / downloads / mysqldb.c / usr / ports / dns / bind9 / work / bind-xxx / bin / named / cp ~ / downloads / mysqldb.h / usr / ports / dns / bind9 / work / bind-xxx / bin / named / include / named /
Перейдите в папку с исходным кодом (work / bind-xxx) и внесите следующие изменения: a) Файл bin / named / Makefile.in читается:
DBDRIVER_OBJS = mysqldb. @ O @ DBDRIVER_SRCS = mysqldb.c
Запустите команду mysql_config -cflags
и записываем вывод в переменную DBDRIVER_INCLUDES
(пример: DBDRIVER_INCLUDES = -I/usr/local/include/mysql -fno-strict-aliasing -pipe
)
Запустите команду mysql_config -libs
и записываем вывод в переменную DBDRIVER_LIBS
(пример: DBDRIVER_LIBS = -L/usr/local/lib/mysql-lmysqlclient-lz-lcrypt-lm
)
б) В файле bin/named/main.c
:
<named/mysqldb.h>
setup()
, добавить звонок mysqldb_init()
перед линией ns_server_create()
.cleanup()
, добавьте mysqldb_clear (); после ns_server_destroy()
.Установите Bind:
cd / usr / ports / dns / bind make make install
Создайте для каждой зоны свою таблицу mysql:
CREATE TABLE имя_таблицы (имя varchar (255) по умолчанию NULL, ttl int (11) по умолчанию NULL, rdtype varchar (255) по умолчанию NULL, rdata varchar (255) по умолчанию NULL) TYPE = MyISAM;
Создайте необходимые записи для зоны:
INSERT INTO table_name VALUES ('mydomain.com', 259200, 'SOA', 'mydomain.com. Webmaster.mydomain.com. 2008092901 28800 7200 86400 28800'); INSERT INTO table_name VALUES ('mydomain.com', 259200, 'NS', 'ns0.mydomain.com.'); INSERT INTO table_name VALUES ('mydomain.com', 259200, 'NS', 'ns1.mydomain.com.'); INSERT INTO table_name VALUES ('mydomain.com', 259200, 'MX', '10 mail.mydomain.com. '); INSERT INTO имя_таблицы ЗНАЧЕНИЯ ('w0.mydomain.com', 259200, 'A', '192.168.1.1'); INSERT INTO table_name VALUES ('w1.mydomain.com', 259200, 'A', '192.168.1.2');
В файле named.conf прописываем правильную зону:
зона "smol.website.ru" {тип мастер; уведомить нет; database "mysqldb имя_базы_данных имя_таблицы mysql_ip_address пароль для входа"; };
http://mysql-bind.sourceforge.net/ будет создавать таблицы для каждой добавляемой вами зоны, это действительно плохо, если вы собираетесь разместить более 100 тысяч зон.