配置中心实例只有一台,磁盘写满后进程退出,三套环境共 60 多个服务同时启动失败,报 Could not resolve placeholder。恢复配置中心后服务才陆续起来。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,所有服务启动时强依赖配置中心拉取配置,本地没有可用的快照。配置中心本身没有做多副本,也没纳入核心依赖清单。

「单点依赖」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。

curl -s config.internal/actuator/health
ls -l ~/.config-snapshot/ | tail -3
systemctl status config-server --no-pager

同一份配置存在多处的,先确认改的是被加载的那一份。

具体做法是,配置中心至少部署两个实例 跨可用区;客户端开启本地快照 拉不到配置时用上一次的值启动;梳理强依赖清单 把配置中心 注册中心 数据库列进去;给单点组件加探活告警 不要等业务挂了才发现。

最后用这个标准收尾,停掉一台配置中心实例后服务仍能启动,本地快照文件更新时间在 24 小时内。

作者 9823189