当前位置: 首页 > news >正文

Elasticsearch 跨集群搜索 CCR 配置失败报错怎么排查?

Elasticsearch 跨集群复制(CCR)配置失败通常源于远程集群连接未建立、许可证权限不足或网络通信受阻。注意区分 CCR(复制)与 CCS(搜索),本文针对 CCR 同步失败场景。

先说结论:大部分 CCR 报错是因为远程集群未正确注册或节点间传输层通信失败,先检查 remote clusters 配置再查看日志堆栈。

  • 先确认:许可证是否支持 CCR 功能(Gold 及以上)且远程集群名称不冲突
  • 先处理:修复 transport 端口连通性及 SSL 证书信任链
  • 再验证:通过 _ccr/stats 接口确认复制状态是否转为 active

前置条件与许可证检查

CCR 属于 X-Pack 高级功能,基础版(Basic)许可证无法启用。执行以下命令确认许可证状态,features 中需包含 ccr。

GET _license

若 type 为 basic 或 ccr 状态为 false,需升级至 Gold、Platinum 或 Enterprise 版。此外,CCR 自 6.7 版本引入,建议领导集群(Leader)与跟随集群(Follower)版本保持一致,或跟随集群版本不低于领导集群。

远程集群配置实操

在跟随集群上注册领导集群信息。不要仅查看配置,需确保写入生效。以下命令将远程集群命名为 leader_cluster。

PUT _cluster/settings
{"persistent": {"cluster.remote.leader_cluster.seeds": ["192.168.1.10:9300", "192.168.1.11:9300"]}
}

配置完成后,再次检查连接状态:

GET _remote/info

若 connected 为 false,检查网络防火墙是否放行 transport.port(默认 9300)。

SSL 与安全配置示例

若集群启用 xpack security,需在 elasticsearch.yml 中配置传输层 SSL。常见配置缺失导致 handshake_failure。

# elasticsearch.yml 配置示例
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.certificate_authorities: ["certs/ca.crt"]
xpack.security.transport.ssl.certificate: "certs/elastic-certificates.crt"
xpack.security.transport.ssl.key: "certs/elastic-certificates.key"

配置修改后需重启节点生效。确保证书路径正确且文件权限可读。

创建跟随索引

远程集群连通后,需显式创建跟随索引。以下命令将远程 leader_index 同步到本地 follower_index。

PUT follower_index/_ccr/follow
{"remote_cluster": "leader_cluster","leader_index": "leader_index"
}

典型报错与解决方案

报错信息/日志关键词可能原因解决方案
security_exception: missing authentication token未配置远程集群认证信息在 _cluster/settings 中补充 cluster.remote.<name>.skip_unavailable 及认证配置
remote_transport_exception: ConnectException网络不通或端口被防火墙拦截telnet 检查 9300 端口,确认 seeds 地址可达
license_exception: CCR feature not enabled许可证等级不足升级许可证至 Gold 及以上版本
index_block_exception: read_only_allow_delete领导集群索引被锁定检查领导集群索引设置,解除只读锁定

验证与监控

执行 _ccr/stats 接口,观察 follower_shards 状态。若 status 显示为 active 且 no_shard_failures 为 0,表示配置生效。

GET _ccr/stats

同时检查索引健康度,确保副本分片已分配。

GET _cat/indices?v&h=index,health,status

常见坑

  • 两个集群的 cluster.name 设置相同,导致节点混淆,必须确保全局唯一。
  • 远程集群配置中使用了 localhost 或内网 IP,但实际网络环境无法路由,建议使用可路由 IP。
  • 领导集群索引开启了 readonly 或 block 写入,导致跟随集群无法拉取操作日志。
  • 版本差异过大,低版本集群无法作为高版本集群的跟随者。

原文链接:https://www.zjcp.cc/ask/10870.html

http://www.jsqmd.com/news/799628/

相关文章:

  • 开源安全工具ClawGuard:轻量级请求拦截与API防护实战解析
  • Andorid下给PDF盖骑缝章的方法—安卓手机批量盖骑缝章的方法
  • SubLens:AI订阅管理浏览器插件,一站式聚合账单与扣款提醒
  • 「对内逻辑文档 + 对外操作文档」
  • python学习笔记 | 9.2、模块-安装第三方模块
  • 3PEAK思瑞浦 TP2262-TSR TSSOP8 运算放大器
  • [特殊字符]开源 | 仿生神经 AI Agent框架 meowcat
  • 基于MCP的AI智能体:自动化与优化亚马逊DSP广告实战指南
  • 2026年4月家装建材代运营团队推荐,定制门窗代运营/全屋定制代运营/家装建材代运营,家装建材代运营机构推荐 - 品牌推荐师
  • 高效注意力机制与轻量级模型优化实践
  • Unity中Spine混合模式插槽的Shader实现与优化
  • 实战指南:构建企业级AI模型网关的数据导出与报表系统
  • VSCode + Cline + Codeium + OpenSpec + DeepSeek 完整配置指南
  • 从零构建开源任务管理中枢:TaskWing部署、插件化与自动化实战
  • Arthas介绍与使用
  • uniapp发开微信小程序处理手机物理按键逻辑
  • Jetpack Compose × Gemini实时语义理解:如何用200行Kotlin代码构建离线语音助手,已通过Play Integrity API v4认证
  • 【源码深度】Android 系统底层机制精讲|Linux 进程 Binder 通信 ART 虚拟机|Android 全栈体系 150 讲 - 41
  • 基于本地大模型与OCR的桌面自动化智能体实现指南
  • InjectFix实战解析:在Unity IL2CPP环境下实现C#热修复的权衡与策略
  • SITS 2026多目标优化落地指南:从梯度冲突到任务解耦,7步实现Pareto前沿精度提升23.6%
  • 如何使用Arthas进行内存分析?
  • Zotero茉莉花插件:3大功能轻松管理中文文献,科研效率翻倍提升
  • i.MX 6UL/6ULL开发环境配置与驱动开发实战
  • VS Code主题设计:ini Theme如何通过认知减负提升编码效率
  • Arduino Uno R3 bootloader烧写避坑全记录:从USBasp驱动安装到熔丝位设置(Win10/11实测)
  • 图解人工智能(8)图灵测试作为智能与否的标准
  • 别再混淆了!一文搞懂USB HID描述符、报告描述符和物理描述符的区别与联系
  • 生成引擎优化(GEO)与内容创作融合提升用户体验的实施策略
  • 基于MCP协议构建统一AI编程助手:OpenWork v12架构与实战