跳到主要内容

DNS设计介绍

介绍 DNS 资源相关的同步逻辑。

旧版本设计

3.10.4版本之前由于采用的是一对多模式,本地dns域会对应到多个云平台的dns域,因此会存在以下两个问题:

  1. 若不同云平台的dns解析记录不一致,在往本地同步时会不断覆盖本地的解析记录
  2. 若云平台到本地同步不及时,再次从本地推送解析记录到云上,会导致未同步到本地的记录在云上删除

新版本设计

3.10.4之后版本采用一对一模式,云上的dns域及解析记录会对应到本地的一条数据

因此增删改本地的一个dns解析,仅会影响到云上的一个确定的记录,即使有些记录未同步到本地,也不会被影响到

新版本采用新的表存储dns解析,因此在更新新版本之后公有云的dns解析会暂时置空,需要等待云账号完全同步后恢复

region-dns服务

3.10.4 版本之前region-dns采用一张表存储dns解析,类似于如下

dnsrecord_tbl:

NameRecords
hello.example.comA: 1.1.1.1
world.example.comA: 2.2.2.2

新版本统一采用使用类似公有云设计,一张表存dns zone,一张表存解析记录,类似如下

dnszones_tbl:

NameZoneTypeId
example.comPrivateZone1111-xxxx-xxxxx
cloud.orgPublicZone2222-xxxx-xxxxx

dnsrecords_tbl:

DnsZoneIdNameDnsTypeDnsValue
1111-xxxx-xxxxx*A1.1.1.1
1111-xxxx-xxxxxhelloCNAMEworld.example.com
2222-xxxx-xxxxxisoA2.2.2.2

因此新版本创建cloudpods本地dns解析将和公有云保持一致。