我要开始一个新的网站,这将需要DNS服务器。 它可能有超过10,000个区域,随着我们变得更大,将会获得更多的区域文件。 问题是,你认为哪个DNS服务器软件更有效率: mydns使用mysql来存储数据或bind使用平面文件? 这些DNS服务器如何处理负载平衡,以便我们可以平衡多个服务器之间的负载,使任何一个不会超载?
对我来说,BIND更好。 configuration起来很简单,除非升级软件,否则不需要重新启动BIND。 你应该看看BIND是rndc命令。 Rndc允许您重新加载一个单独的区域,同时让BIND运行。 如果您已经编辑了区域文件,rndc会立即发布更改。
BIND绝对有可能运行数据库。 您需要在./configure步骤中指定一些步骤。
我有一些很好的指示,但他们是俄语。 我会尽量写一点行动计划。
跳转到下载文件的文件夹以提取:
cd〜/ downloads / tar -xzf mysql-bind.tar.gz
跳转到端口并下载源代码bind9(您的mysql-bind版本是为此服务devise的)。 虽然没有编译!
cd / usr / ports / dns / bind9 make fetch提取
复制下载的文件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 /斌/命名/包括/命名/
跳转到源文件夹(work / bind-xxx),并进行以下更改:a)bin / named / Makefile.in文件读取:
DBDRIVER_OBJS = mysqldb。@ O @ DBDRIVER_SRCS = mysqldb.c
运行命令mysql_config -cflags并将输出写入variablesDBDRIVER_INCLUDES (例如: DBDRIVER_INCLUDES = -I/usr/local/include/mysql -fno-strict-aliasing -pipe )
运行命令mysql_config -libs并将输出写入variablesDBDRIVER_LIBS (例如: DBDRIVER_LIBS = -L/usr/local/lib/mysql-lmysqlclient-lz-lcrypt-lm )
b)在文件bin/named/main.c :
<named/mysqldb.h> setup() , mysqldb_init()之前添加一个调用ns_server_create() 。 cleanup()里面,添加mysqldb_clear(); 在ns_server_destroy() 。 安装绑定:
cd / usr / ports / dns / bind make make install
为每个区域创build其表mysql:
CREATE TABLE table_name(name varchar(255)default NULL,ttl int(11)default NULL,rdtype varchar(255)default NULL,rdata varchar(255)default NULL)TYPE = MyISAM;
为区域创build必要的logging:
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 table_name VALUES('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”{type master; 通知否; 数据库“mysqldb database_name表名mysql_ip_addresslogin密码”; };