CoreDNS实战(二)-CoreDNS+ETCD实现DNS服务发现
2023-12-13 23:53:27
1 引言
在前面的文章中讲了如何搭建一个内网的DNS服务,但是这里有个问题,mxsm-register.local表示局域网的注册中心域名,如果需要将每台部署了注册中心的IP地址写到CoreDNS的配置文件中。这样就需要每次都去修改 Corefile
配置文件。那有没有一种方式在服务启动后自动将注册中心所在机器的IP与mxsm-register.local进行绑定,注册中心下线对应的IP也从DNS服务器删除。下面就来讲一下如何利用CoreDNS+etcd来实现这个功能。
2?CoreDNS etcd 插件
CoreDNS 是一个高度灵活插件化的一个组件,其本身提供了很多插件官方的插件,同时也允许开发者进行插件的拓展。要实现上述的功能这里依赖了一个叫做 etcd插件 ,这个插件有如下功能:实现了SkyDNS服务发现,它不适合作为一个通用的DNS区域数据插件。只实现了DNS记录类型的一个子集。
配置语法:
etcd [ZONES...] {
fallthrough [ZONES...]
path PATH
endpoint ENDPOINT...
credentials USERNAME PASSWORD
tls CERT KEY CACERT
}
- fallthrough: 如果区域匹配但没有记录可以生成,将请求传递给下一个插件
- path: etcd中的路径,默认值/skydns
- endpoint: etcd endpoint
- credentials: etcd的用户名和密码
- tls: CA
3 部署搭建
3.1 环境准备
- etcd环境搭建(自行去etcd官网查看搭建教程Release v3.5.0 · etcd-io/etcd · GitHub)
- CoreDNS搭建
这两个是前置条件。
3.2 配置文件
这里使用之前的CoreDNS实战(一)-构建高性能、插件化的DNS服务器-CSDN博客里面的配置进行修改,Corefile
文件:
. {
forward . 8.8.8.8
}
mxsm.local {
file mxsm.local {
reload 30s
}
}
etcd-mxsm.local:53 {
etcd {
path /mxsm
endpoint http://172.22.50.98:2379 --- 这里根据自己的etcd部署进行填写
}
}
启动CoreDNS进行验证。
3.3 etcd key值说明
etcd插件利用目录结构查询相关条目,已上面的 etcd-mxsm.local
为例,配置的etcd的path为 /mxsm
, 上面的条目就是如下:/mxsm/local/etcd-mxsm/
、/mxsm/local/etcd-mxsm/x
、 /mxsm/local/etcd-mxsm/b
等等。这种情况下就是查询 etcd-mxsm.local
。
3.4 验证
利用 etcdctl
命令put:
$./etcdctl put /mxsm/local/etcd-mxsm/ '{"host":"172.22.50.28","ttl":60}'
$./etcdctl put /mxsm/local/etcd-mxsm/1 '{"host":"172.22.50.128","ttl":60}'
$./etcdctl put /mxsm/local/etcd-mxsm/2 '{"host":"172.22.50.228","ttl":60}'
然后用 dig
进行验证:
$ dig @127.0.0.1 a etcd-mxsm.local +short
172.22.50.28
172.22.50.128
172.22.50.228
文章来源:https://blog.csdn.net/ygq13572549874/article/details/134815424
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!