小于博客 小于博客
首页
  • Java学习笔记
  • Docker专区
  • 实战教程
  • Shell
  • 内存数据库
  • Vue学习笔记
  • Nginx
  • Php
  • CentOS
  • Docker
  • Gitlab
  • GitHub
  • MySql
  • MongoDB
  • OpenVPN
  • 配置文件详解
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 电影音乐
  • 效率工具
  • 博客相关
  • 最佳实践
  • 迎刃而解
  • 学习周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

小于博客

行者常至,为者常成
首页
  • Java学习笔记
  • Docker专区
  • 实战教程
  • Shell
  • 内存数据库
  • Vue学习笔记
  • Nginx
  • Php
  • CentOS
  • Docker
  • Gitlab
  • GitHub
  • MySql
  • MongoDB
  • OpenVPN
  • 配置文件详解
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 电影音乐
  • 效率工具
  • 博客相关
  • 最佳实践
  • 迎刃而解
  • 学习周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

    • 运维最佳实践

      • 基于CNAME解析实践的域名优雅方案
        • 1,CNAME
          • 1,分析
          • 2,示例
      • 建设一个运维外挂的最佳实践
      • 关于打包压缩几种格式(gzip,bzip2,xz)的试验对比
      • 利用谷歌浏览器自定义agent监听日志来调试服务
      • fdisk,parted使用非交互式方式对磁盘进行分区操作
      • GitLab部署的最佳实践
      • GitLab全局搜索之SourceGraph
      • vector实践-性能吊打logstash
      • 规范编码之利用pre-commit给项目添加提交前检查
      • CMDB平台建设指南
  • 迎刃而解

  • 学习周刊

  • 积累
  • 最佳实践
  • 运维最佳实践
小于博客
2021-06-22
目录

基于CNAME解析实践的域名优雅方案

通常,我们针对域名管理,以及其下NGINX配置文件的管理,大多都是分散的,这种分散并不是刻意为之,而是随着业务发展以及需求的对接,不知不觉中,发现域名加了一个又一个,配置文件更是各不相同,这对标准化而言是个灾难,对未来的操作更是注入了不稳定因素。

所谓天下大势,分分合合。

形如hosts到dns,jenkinsfile到share library,我统一把这种思路归到初中时的一个数学思路:提取公因式。

那么对于域名解析方面的实践,这里要介绍的,其实也是一次提取公因式。

# 1,CNAME

# 1,分析

通过CNAME的方式,我们能够轻松的将一些相对集中的域名进行更加优雅统一的管理,这种方案的思路大概如下:

假如我们的测试环境所有的域名有一个统一的入口NGINX,此后所有的测试域名都在这里解析,如果按照传统的思路,那么一个域名对应一条A记录,那么如果测试环境有100个域名,就会需要添加100个A记录,这看起来似乎也没什么问题,但是,如果这个时候因为一些原因,此入口NGINX需要迁移,或者外网IP不得不更换,此时即便是有工具能够批量修改100个A记录,也是一个不够优雅便捷的方案。

我们稍微调整一下方案:解析一个统一的A记录在入口处,然后其他域名都通过CNAME的方式解析到统一的A记录上,这样一来,就算是测试入口需要变更,也只需要更改一条记录即可解决此问题,而不需要考虑那100个了。

# 2,示例

此时我拿个人域名eryajf.net举例,当前wiki站点域名解析如下:

$ dig wiki.eryajf.net

; <<>> DiG 9.10.6 <<>> wiki.eryajf.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15687
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;wiki.eryajf.net.		IN	A

;; ANSWER SECTION:
wiki.eryajf.net.	599	IN	A	8.136.215.57

;; Query time: 253 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Jun 22 23:24:33 CST 2021
;; MSG SIZE  rcvd: 60
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

可以看到是直接A记录解析到 8.136.215.57。

现在,我在DNS解析中做一些调整:

  • 先加一条A记录 prod.eryajf.net:

    image-20210622232855369

  • 然后添加一条CNAME记录作为正常的服务域名 wiki.eryajf.net:

    image-20210622233129677

这个时候我们可以将域名CNAME到上边定义的A记录,那么就能把100个域名进行统一解析管理了。

注意:CNAME记录值中域名最后位的点可带可不带。

此时该域名的解析链路如下:

$ dig wiki.eryajf.net

; <<>> DiG 9.10.6 <<>> wiki.eryajf.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40403
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;wiki.eryajf.net.		IN	A

;; ANSWER SECTION:
wiki.eryajf.net.	599	IN	CNAME	prod.eryajf.net.
prod.eryajf.net.	599	IN	A	8.136.215.57

;; Query time: 440 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Jun 22 23:33:39 CST 2021
;; MSG SIZE  rcvd: 79
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

其中的 ANSWER SECTION很清晰地列出了整个链路解析流程。

#DNS#最佳实践#运维最佳实践
上次更新: 2024/03/07, 13:16:45

建设一个运维外挂的最佳实践→

最近更新
01
SpringBoot 快速实现 api 加密!
03-21
02
SpringBoot整合SQLite
03-07
03
SpringBoot配置使用H2数据库的简单教程
02-21
更多文章>
Theme by Vdoing | Copyright © 2017-2024 | 点击查看十年之约 | 豫ICP备2022014539号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式