Skip to content

startUpdater

guoli.luo edited this page Jan 29, 2019 · 7 revisions

updater启动

准备

新增主机组

页面导航: 配置管理 --> 主机管理 --> 新增主机组

说明

  • 主机组名称以MasterSlave结尾
  • 所有主机名或者ip不能重复

命令行配置导入

$ export FLASK_APP=dnsdb_command.py
$ export FLASK_ENV=beta
named.conf导入
$ 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管理 查看
导入要管理的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

定制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