Bytebase 日志出现 “multiple replicas detected ... but HA is not enabled in license“ 怎么排查?
Bytebase 日志出现 multiple replicas detected ... but HA is not enabled in license 怎么排查【免费下载链接】bytebaseDatabase governance built for humans and agents — controlling changes and access across every major database.项目地址: https://gitcode.com/GitHub_Trending/by/bytebaseBytebase 支持多个副本共享同一个元数据库的高可用HA拓扑但 HA 是按许可授权的。当你的部署里同时有超过一个活跃的 Bytebase 副本、而许可并没有启用 HA 时服务端会打出这条警告multiple replicas detected (count) but HA is not enabled in license它说明部署拓扑和许可不匹配。按 HA 运维手册的说法解决路径只有两条把部署收敛回单个活跃副本或者安装一个GET /v1/subscription返回ha: true的许可。本文按手册给出排查顺序和验证方法。先理解这条警告是怎么产生的排查之前需要知道副本计数是怎么来的否则容易误判每个副本启动时立即写一次心跳之后每 10 秒写一次副本的心跳在 30 秒内有更新才被计为活跃副本当前活跃副本数通过 actuator 接口暴露GET /v1/actuator/info的replicaCount字段Bytebase 至少会报告当前服务器这一个活跃副本即使心跳计数失败也是 1数据库里残留的旧心跳行不影响活跃计数只有最近 30 秒的心跳参与计算。也就是说这条警告触发的前提是确实有 ≥2 个进程在持续写心跳且许可的ha字段不为true。检查逻辑见 CheckReplicaLimit当CountActiveReplicas返回的count 1且有效订阅未开启 HA 时返回该错误。第一步确认许可里 HA 是否启用调用GET /v1/subscription检查返回的ha字段ha: true许可允许多副本。如果此时仍看到这条警告回到第二步核对副本数和启动参数是否一致ha不是true许可与多副本拓扑不匹配。要么把部署收敛回单副本要么更换/安装启用 HA 的许可。这是手册给出的全部两种处理方式。第二步确认真实活跃的副本数调用GET /v1/actuator/info记录三个字段version、externalUrl、replicaCount。replicaCount 1且你并不打算保留多副本确认哪个多余的 Bytebase 服务还在跑把它停掉收敛为单副本部署replicaCount不符合预期例如预期 2 个副本却看到 1手册列出的检查项是——另一个 Bytebase 服务是否真的在运行、该副本能否连上共享元数据库并写下心跳、是否已经等待足够时间让新副本开始发布心跳。副本新增或重启后至少等 30 秒活跃数才会稳定。注意一个正常现象副本在大约 30 秒没有心跳后会从活跃集合中掉出所以滚动重启或节点迁移期间replicaCount短暂下降是预期的不属于故障。两种处理路径的具体做法收敛回单副本。停掉多余的 Bytebase 服务只保留一个活跃副本。多副本必须同时满足以下条件才有意义单副本部署则不需要这些每个副本启动时带--ha使用同一个外部 PostgreSQL 的PG_URLHA 模式要求外部 PostgreSQL不能用嵌入式数据库所有副本使用同一个--external-url让 Bytebase 对外报告同一个externalUrl平台侧提供流量管理和滚动更新控制例如负载均衡加编排器管理的滚动更新。仓库自带的 Helm chart 目前渲染的是replicas: 1的单副本 StatefulSet没有提供多副本部署开关所以多副本拓扑本身是 chart 之外、由运维自行管理的这也是拓扑与许可容易失配的原因。保留多副本、补齐 HA 许可。安装启用 HA 的许可使GET /v1/subscription返回ha: true。之后按手册的前置条件核对每个副本的--ha参数、PG_URL和外部 URL 是否一致。解决后怎么验证按 HA 手册的运维检查清单逐项核对GET /v1/subscription返回ha: true若走多副本路线GET /v1/actuator/info的replicaCount与预期一致所有副本都带--ha、指向同一个PG_URL、使用同一个外部 URL日志中不再出现multiple replicas detected ... but HA is not enabled in license。升级运维手册把同样的检查作为升级收尾条件version和replicaCount符合预期、ha值不变、日志无这条警告、后台操作在发布窗口后恢复正常。如果这些检查过不了例如replicaCount回不到预期值、副本间外部 URL 或元数据库配置不一致手册要求暂停发布并继续排查不要带着警告继续推进。为什么不能只把日志当噪音这条警告不是单纯提示。运行时检测到多副本而无 HA 许可时会检查副本上限的后台任务在不受支持的拓扑下直接跳过工作覆盖任务执行、计划检查、schema 同步、审批以及过期运行清理这些调度器与清理路径分别见 taskrun、plancheck、schemasync、cleaner 等 runner。所以即使服务看起来还在响应请求后台作业也可能处于停滞状态。需要说明的边界手册明确 Administrator recoverybytebase recovery不是 HA 许可或副本协调的替代手段也不会修复部署拓扑不要用它来修掉这条警告。相关文档High availability for Bytebase副本检测机制、前置条件、验证清单与故障排查小节Upgrade guidance for HA-aware Bytebase deployments发布窗口内的同一套检查许可检查实现警告的产生逻辑【免费下载链接】bytebaseDatabase governance built for humans and agents — controlling changes and access across every major database.项目地址: https://gitcode.com/GitHub_Trending/by/bytebase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考