1、背景介绍
目前公司使用PowerDNS进行DNS管理,但由于采用的是单节点架构,存在不可用的风险。为提升系统的稳定性和可靠性,我们计划对现有架构进行重构。通过引入高可用性设计,我们将优化系统架构,使其能够在故障情况下依然保持服务的连续性和高效性,从而提升整体的业务稳定性。
2、环境介绍
系统:Cnetos7 软件: pdns-4.1.8-1.el7.MIND.x86_64 pdns-recursor-4.1.11-1.el7.MIND.x86_64 (相关信息已经脱敏)
名称 | ip | 组件 |
---|---|---|
matser | 172.17.20.20 | nginx,mysql,PowerDNS Authoritative ,PowerDNS Recursor (主) |
slave | 172.17.20.21 | nginx,mysql,PowerDNS Authoritative ,PowerDNS Recursor (备) |
nginx(53):作为upstream 代理 53 端口
mysql(3306):作为PowerDNS的后端存储
PowerDNS Authoritative(5300):用于管理企业私有域名
PowerDNS Recursor(5301): 用于DNS解析转发、缓存
3、组件介绍
PowerDNS全家桶中包含PowerDNS Authoritative、Recursor、DNSList(暂不使用)三个组件。
- PowerDNS Authoritative:DNS权威服务器,用于提供企业私有域名的管理和解析;
- PowerDNS Recursor:DNS递归服务器,用于接受客户端DNS查询请求,并根据目标域转发配置转发到不同的上游DNS服务器进行解析,并对DNS解析记录进行缓存;
- PowerDNS-Admin:DNS权威服务器的Web管理页面;
- PowerDNS-Monitor:使用Grafana提供权威服务器和递归服务器的监控页面
PowerDNS权威服务器支持多种复制模式,本架构采用MySQL作为后端存储,并通过MySQL复制实现主备数据同步。
PowerDNS(PDNS)成立于20世纪90年代末,是开源DNS软件、服务和支持的主要供应商,它们提供的权威认证DNS服务器和递归认证DNS服务器都是100%开源的软件,同时也和红帽等开源方案提供商一样提供了付费的技术支持版本。同时官方表示为了避免和软件使用者出现竞争,他们只提供服务支持而不提供DNS托管服务。
熟悉DNS工作原理的同学可以大致地将DNS记录的查询分为两种:查询本地缓存和向上递归查询。和其他的如BIND、dnsmasq等将这些功能集成到一起的DNS软件不同,PowerDNS将其一分为二,分为了PowerDNS Authoritative Server
和PowerDNS Recursor
,分别对应这两种主要的需求,而我们常说的pdns
指的就是PowerDNS Authoritative Server (后面简称PDNS Auth)
,主要用途就是作为权威域名服务器,当然也可以作为普通的DNS服务器提供DNS查询功能。
对于PowerDNS-Recursor,PowerDNS官网介绍其是一个内置脚本能力的高性能的DNS递归查询服务器,并且已经为一亿五千万个互联网连接提供支持。
4、MySQL安装
可参照博客安装 : https://blog.csdn.net/heian_99/article/details/106644755
MySQL主从同步
master创建账号
|
|
slave库同步
注意:主从库的server_id 不能设置一样,auto.cnf 设置也不能一样,不满会出现mysql主从同步失败的
|
|
创建powerdns数据库
需要在主从配置完成后创建
在主库执行以下命令
|
|
导入PowerDNS 的数据库
|
|
创建文件导入数据库
|
|
5、PowerDNS Authoritative Server安装
- 参考官网文档:https://doc.powerdns.com/authorit文章来源(Source):https://www.dqzboy.comative/installation.html
- PowerDNS已经集成到
epel
源中,所以我们首先需要安装elel源
|
|
修改配置文件
/etc/pdns/pdns.conf
|
|
启动Pdns服务
|
|
6、PowerDNS Recursor安装
|
|
修改配置文件
/etc/pdns-recursor/recursor.conf
|
|
创建forward 和hosts 文件
1. Forward 配置
forward
配置用于指定 PowerDNS 在无法解析某个 DNS 请求时,将请求转发给其他上游 DNS 服务器进行解析。这在多种情况下都很有用,比如公司内部网络中的 DNS 服务器需要解析外部互联网域名时。
主要用途:
- 外部解析:如果本地 DNS 服务器没有相应的记录,可以通过 forward 配置将请求转发给公共 DNS 服务器,如 Google DNS(8.8.8.8)。
- 负载均衡和冗余:可以配置多个上游 DNS 服务器,提高解析请求的成功率和响应速度。
配置示例:
|
|
上面的示例表示将所有(.
代表所有域名)未解析的请求转发给 Google 的 DNS 服务器。
2. Hosts 文件
hosts
文件是一个静态的 DNS 记录文件,用于手动定义特定域名的 IP 地址。这类似于传统的 /etc/hosts
文件,用于快速、本地化地解析一些常用或特定的域名,而无需通过外部 DNS 服务器。
主要用途:
- 本地解析:快速解析常用域名,避免每次都去查询外部 DNS。
- 自定义解析:为本地网络设备或特定服务自定义域名解析记录。
- 简化开发和测试:开发和测试环境中,直接在 hosts 文件中添加记录,方便快捷。
配置示例:
假设 hosts
文件内容如下:
|
|
这表示将 server1.local
解析为 192.168.1.1
,将 server2.local
解析为 192.168.1.2
。
总结
- Forward 配置:用于指定 PowerDNS 在无法解析请求时,将请求转发给其他上游 DNS 服务器,确保解析的成功率和速度。
- Hosts 文件:用于手动定义特定域名的 IP 地址,实现本地化、静态的 DNS 解析。
通过合理配置和使用 forward
和 hosts
文件,可以大大提升 PowerDNS 系统的灵活性和解析效率,满足各种不同的网络需求。
|
|
借鉴配置
|
|
|
|
启动Pdns-recursor
|
|
7、PowerAdmin安装
|
|
安装步骤
|
|
需要移除从PowerAdmin的根目录中移除“install”文件夹,这一点很重要。使用以下命令:
添加主域名
添加子域名
8、成功测试
|
|
9、备服务器同上步骤
备份服务器 按照上面配置,可以进行安装 和配置文件scp
|
|
10、nginx负载均衡
安装nginx
|
|
把这个配置加入 nginx.conf 后面
|
|
|
|
备份服务器的nginx也如上配置即可