-
Notifications
You must be signed in to change notification settings - Fork 156
startUpdater
guoli.luo edited this page Jan 29, 2019
·
7 revisions
页面导航: 配置管理 --> 主机管理 --> 新增主机组
说明
- 主机组名称以Master或Slave结尾
- 所有主机名或者ip不能重复
$ export FLASK_APP=dnsdb_command.py
$ export FLASK_ENV=beta
$ flask import-named-conf --group_name Master --file_path /usr/local/etc/named.conf
# 参数
# group_name: 主机组名称
# file_path: named.conf文件位置
# 文件格式
# 所有的zone配置放在文件末尾
named.conf文件解析成两部副: zone配置部分、其他部分
$ vim /usr/local/etc/named.conf
1 //
2 // Include keys file
3 include "/usr/local/etc/rndc.key";
4
5 // Declares control channels to be used by the rndc utility.
6 //
7 // It is recommended that 127.0.0.1 be the only address used.
8 // This also allows non-privileged users on the local host to manage
9 // your name server.
10
11 //
12 // Default controls
13 //
14 controls {
15 inet 127.0.0.1 port 54 allow { any; }
16 keys { "rndc-key"; };
17 };
18
19 options {
20 directory "/usr/local/var/named";
21 /*
22 * If there is a firewall between you and nameservers you want
23 * to talk to, you might need to uncomment the query-source
24 * directive below. Previous versions of BIND always asked
25 * questions using port 53, but BIND 8.1 uses an unprivileged
26 * port by default.
27 */
28 // query-source address * port 53;
29 };
30 //
31 // a caching only nameserver config
32 //
33 logging {
34 category default {
35 _default_log;
36 };
37
38 channel _default_log {
39 file "/usr/local/var/log/named/named.log";
40 severity info;
41 print-time yes;
42 };
43 };
44 zone "localhost" IN {
45 type master;
46 file "localhost.zone";
47 allow-update { none; };
48 };
49 zone "0.0.127.in-addr.arpa" IN {
50 type master;
51 file "named.local";
52 allow-update { none; };
53 };
导入之后刷新页面:
- named.conf中前43行的内容可以点击 配置管理 --> 主机管理 --> Master --> 编辑配置 查看
- zone配置可以点击 配置管理 --> zone管理 查看
如果是刚创建的bind服务可以跳过这一步,直接进行下一步。
将要在DNSDB中管理的zone的解析库文件放在一个文件夹中,按下面的命令导入: 文件名称要和文件内容中**$ORIGIN**定义的zone相同, 比如:
$ head named.local
$ORIGIN named.local.
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
$ flask import-zone-records --zone_dir /usr/local/var/named --zone_group Master --user username
# 参数
# zone_dir: 包含zone文件的目录
# zone_group: zone所属主机组
# user: 操作者
# 文件格式
# zone文件中代表serial_num的一行必须是如下格式:
# '3000000026 ; Serial'
# 文件中非A/CNAME类型的记录通过文件方式管理
# 文件夹中不要包含反解zone
导入之后 刷新页面, 可以在 配置管理 --> header编辑 中查看新导入的zone
$ vim etc/template/zone_header
# 文件内容
$TTL 7200 ; 2 hours
@ IN SOA localhost. root.localhost. (
pre_serial ; Serial
3600 ; Refresh (1 hour)
900 ; Retry (15 minutes)
3600000 ; Expire (5 weeks 6 days 16 hours)
3600 ; Minimum (1 hour)
)
@ 2D IN NS localhost.
$ORIGIN zone_name.
文件末尾行 $ORIGIN zone_name. 不要做任何变动。NS服务器的相关配置请根据自己情况修改。
之后在DNSDB中新加zone时,zone的解析库文件将直接根据此文件生成。
$ cp tools/updater/mkrdns /sbin/mkrdns
$ chmod +x /sbin/mkrdns
配置文件: etc/beta/dnsdb-updater.conf
[etc]
; 临时文件位置
tmp_dir=/usr/local/open-dnsdb/tmp
log_dir = /var/log/open-dnsdb
; 备份文件位置
backup_dir=/usr/local/backup
pidfile=/usr/local/open-dnsdb/tmp/named_updater.pid
; 时间间隔,检查是否有需要更新的zone解析
zone_update_interval = 5
allow_ip = 127.0.0.1
[log]
log-file = dnsdb_updater.log
[web]
port = 9000
[gunicorn]
bind = 0.0.0.0:9000
[bind_default]
;bind相关文件目录
named_dir = /var/named/chroot/etc
zone_dir = /var/named/chroot/var/named
acl_dir = /var/named/chroot/var/named
;bind相关命令
named_checkconf = /usr/sbin/named-checkconf
named_zonecheck = /usr/sbin/named-checkzone
;反解文件生成工具
mkrdns = /sbin/mkrdns
rndc = /usr/sbin/rndc
; 可选配置, 当主机组的配置和bind_default有差异时,配置差异项
[Master]
named_dir = /Users/guoliluo/qunar/var/named/chroot/etc
zone_dir = /Users/guoliluo/qunar/var/named/chroot/var/named
重点关注下 [bind_default]中的内容,根据自己的实际情况更改下。
open-dnsdb程序必须先启动,因为updater会调用它的接口去读获取当前主机所在的主机组。
open-dnsdb-conf-updater: 更新named.conf、访问控制列表文件
open-dnsdb-zone-updater: 更新zone解析库文件
以Slave结尾的主机组中的主机open-dnsdb-zone-updater程序无法启动,因为bind的slave服务器zone解析库文件和master去同步。
$ cp etc/beta/supervisor-updater.conf /etc/supervisor/conf.d/open-dnsdb-updater.conf
$ supervisord -c /etc/supervisord.conf
supervisor> reload
Really restart the remote supervisord process y/N? y
Restarted supervisord
supervisor> status
open-dnsdb RUNNING pid 89500, uptime 0:00:06
open-dnsdb-conf-updater RUNNING pid 89499, uptime 0:00:06
open-dnsdb-zone-updater RUNNING pid 89501, uptime 0:00:06