Central Dogma 配置同步实战:CD-to-CD 镜像跨集群同步完整教程
【免费下载链接】centraldogmaHighly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2项目地址: https://gitcode.com/gh_mirrors/ce/centraldogma
如果你正在管理多个环境(如开发、预发、生产)或跨地域机房的微服务集群,一定遇到过这样的痛点:一份服务配置改了,却要在每个集群里手工重复修改,既容易漏改,又难以保证一致性。Central Dogma 提供的高可用配置仓库,加上它独有的CD-to-CD 镜像能力,可以让你像同步代码一样自动同步配置,一个集群改了配置,其余集群自动跟上。本文将用零代码的方式,带你从零完成 Central Dogma 跨集群配置同步的完整配置。
上图即 Central Dogma 的镜像(Mirror)配置界面,CD-to-CD 镜像与 Git 镜像共用同一套表单,只需把远程协议换成
dogma即可。
为什么需要 CD-to-CD 镜像:跨集群配置同步的三种典型场景
Central Dogma 本身就是一个高可用的版本化配置仓库,但单个集群往往无法覆盖所有场景,常见的配置同步需求包括:
- 多区域部署:同一套配置需要在多个机房同步生效,保证用户无论访问哪个区域,行为一致。
- 环境隔离:预发环境先验证配置,验证通过后自动同步到生产集群,避免人工复制出错。
- 主备容灾:主集群故障时,备集群必须拥有与主集群一致的配置,才能无缝接管流量。
与其用脚本或人工在多个集群间搬运配置,不如让 Central Dogma 自己完成同步——这正是CD-to-CD 镜像的价值所在:它把"配置同步"变成一项可定时、可审计、可回滚的自动化任务。
前置准备:安装 Central Dogma 与创建访问凭证
开始配置镜像前,你需要准备以下两样东西:
- 两个 Central Dogma 集群(或两个独立仓库),一个作为配置源,一个作为目标。如果还没有集群,可以用官方发行包在本地快速起两个实例进行演练。
- 一个 Access Token 访问令牌:CD-to-CD 镜像要求使用访问令牌(Access Token)作为凭证,因为它本质上是两个 Central Dogma 服务之间的 API 调用,不支持 SSH 密钥。
创建令牌的入口在项目设置的 "Tokens" 区域,创建后记得给令牌分配目标仓库的读写权限——同步方向不同,需要的权限也不同(拉取需要读权限,推送需要写权限):
上图是仓库的权限管理界面,可以为 Token 分别勾选 Read / Write 权限,CD-to-CD 镜像任务会以该令牌的身份操作远端仓库。
配置 CD-to-CD 镜像的完整步骤
整个配置过程在 Web 控制台的仓库设置中进行,路径为项目 > 仓库 > Settings > Mirrors > New Mirror,具体步骤如下:
第一步:填写 Mirror ID 与调度时间
- Mirror ID:镜像任务的唯一标识,仅允许字母、数字、短横线、下划线和句点,例如
cd-to-cd-prod-sync。 - Schedule:使用 Quartz cron 表达式定义同步频率,例如
0 * * * * ?表示每分钟执行一次,0 0/30 * * * ?表示每 30 分钟一次。如果你希望手动触发,也可以关闭调度开关。
第二步:选择同步方向(Direction)
这是 CD-to-CD 镜像最关键的选择,决定配置流动的方向:
| 方向 | 说明 | 典型用途 |
|---|---|---|
| REMOTE_TO_LOCAL | 从远端 Central Dogma 仓库拉取配置到本地仓库 | 订阅上游集群的配置,本地只读消费 |
| LOCAL_TO_REMOTE | 将本地仓库的配置推送到远端 Central Dogma 仓库 | 本地作为配置源,向其他集群分发 |
比如"预发验证后同步到生产",就是LOCAL_TO_REMOTE:预发集群是配置源,把变更推给生产集群。
第三步:配置远程仓库地址(Remote)
这是 CD-to-CD 镜像与 Git 镜像最大的区别,需要注意三个要点:
- 协议 Scheme选择
dogma(HTTP)或dogma+https(HTTPS)。生产环境务必使用dogma+https加密传输。 - 仓库 URI 格式:
<主机>[:<端口>]/<项目>/<仓库>.dogma,例如prod-cd.example.com:36462/app-config/app.dogma。注意仓库路径必须以.dogma结尾,默认端口为 36462。 - 没有 Branch 字段:Central Dogma 没有 Git 分支的概念,镜像的是整个仓库的某个路径,因此无需填写分支。
远程路径(Remote Path)可以指定仓库内的某个子目录;留空则同步整个仓库内容。这些 scheme 的定义可以在 MirrorForm.tsx 中直接看到。
第四步:绑定凭证(Credential)
选择第一步创建好的 Access Token 凭证即可。凭证可以在项目级或仓库级创建,镜像表单会自动列出当前项目与仓库下的全部凭证供你选择。
第五步:按需配置 gitignore 与启用镜像
- gitignore:支持填写排除规则,指定哪些文件不参与同步,例如
*.local.yaml或secrets/。这在你只想同步部分配置时非常有用。 - Enable mirror:默认关闭,确认以上配置无误后再打开,避免误同步。
以上步骤的完整参数说明可在官方文档 mirroring.rst 中查阅。
4 个必须了解的注意事项
1. 镜像任务有数量和大小上限
为保证集群稳定,Central Dogma 对单次镜像的文件数和总大小做了限制:默认单个镜像最多8192 个文件、总大小不超过32 MiB,镜像线程数默认为 16。如果你的配置仓库较大,需要在服务端配置中调高maxNumFilesPerMirror和maxNumBytesPerMirror,详见 setup-configuration.rst。
2. 同步不是"双向实时"的
镜像本质是周期性单向复制,而非双向实时同步。两边的仓库仍然是独立的版本历史,同步发生冲突时,以执行时刻的源端内容为准。建议把同步频率与配置变更频率匹配好,并始终遵循"单边为源"的原则,避免两边同时修改造成覆盖。
3. 镜像变更可回滚、可审计
得益于 Central Dogma 的版本化能力,镜像写入的每一次变更都会产生提交记录,出现问题时可以直接回滚到任意历史版本,这也是相比手工脚本同步的一大优势。
4. 利用 Zone 实现就近同步
如果你的集群配置了多 Zone 部署,可以为镜像指定 Zone,让同步任务在指定的区域执行,进一步优化跨地域场景下的同步效率与稳定性。
结语:把配置同步变成自动化的一部分
通过 CD-to-CD 镜像,Central Dogma 将跨集群配置同步从"人工搬运"升级为"自动复制",配合版本历史、访问控制与调度能力,让多集群配置管理变得简单、可靠、可追溯。配置即代码,同步即自动——这正是高可用配置仓库应有的姿态。现在就打开你的第二个集群,用dogma+https建立第一条同步通道吧!
【免费下载链接】centraldogmaHighly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2项目地址: https://gitcode.com/gh_mirrors/ce/centraldogma
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考