首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >腾讯云 Elasticsearch CCR 跨版本使用实践及问题解决

腾讯云 Elasticsearch CCR 跨版本使用实践及问题解决

原创
作者头像
牛朝阳
发布2025-07-29 14:07:05
发布2025-07-29 14:07:05
1480
举报

一. 需求背景:

源集群为714, 从集群为717, 需要进行CCR同步

二. 过程中遇到的问题:

714版本是腾讯云主推的7.x版本, 包含丰富的自研特性,因此增加了很多开源社区之外的功能, 及对应设置

717非云上主推版本, 主要面向具有特殊需求的客户, 例如为自建7.14版本以上集群, 迁移上云提供支撑

CCR 需要索引的多个settings相同, 例如主分片数, 如果源集群为714版本, 则会在索引创建时, 如果不手动指定默认增加两个配置

代码语言:txt
复制
  "merge": {
    "policy": {
      "auto_merge_enabled": "false",
      "inactive_merge_enabled": "false"
    }
  },
  "bulk_routing": {
    "enabled": "true
  }

merge.policy.auto_merge_enabled及inactive_merge_enabled是714自动断合并调优的参数,为动态参数, 具体描述这路不赘述

bulk_routing是bulk路由优化参数, 为动态设置, 具体这里也不赘述

717无上述自研特性, 因此不支持配置

三. 环境准备:

提前在同一个vpc下, 创建好两个es集群, 并且需要进行CCR证书同步, 同步完成之后, 在从集群kibana上面设置远程集群

四. 问题复现及解决:

1. 在主714集群创建源索引

代码语言:txt
复制
PUT test_ccr_leader_es-n6oxi6zq
{
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date",
        "format": "strict_date_optional_time||epoch_millis"
      },
      "message": {
        "type": "text"
      }
    }
  },
  "settings": {
    "index.number_of_shards": 2,
    "index.number_of_replicas": 0,
    "codec": null
  }
}

# 查看索引settings
GET test_ccr_leader_es-n6oxi6zq/_settings

可以看到增加了如下设置

2. 直接到从集群创建从索引

配置如下:

leader index为上面创建的 test_ccr_leader_es-n6oxi6zq

follower index命名为test_ccr_follower_es-m8w3iko4

创建成功,但是同步未进行, 处于paused状态

手动执行 resume replication, f12查看浏览器调试界面的resume接口, 可以看到报错如下

代码语言:txt
复制
"type": "illegal_argument_exception",
"reason": "the leader index settings [{\"index.bulk_routing.enabled\":\"true\",\"index.merge.policy.auto_merge_enabled\":\"false\",\"index.merge.policy.inactive_merge_enabled\":\"false\",\"index.number_of_shards\":\"2\"}] and follower index settings [{\"archived.index.bulk_routing.enabled\":\"true\",\"archived.index.merge.policy.auto_merge_enabled\":\"false\",\"archived.index.merge.policy.inactive_merge_enabled\":\"false\",\"index.number_of_shards\":\"2\"}] must be identical"

两边setting不匹配

3. 解决方案如下

修改源集群源索引test_ccr_leader_es-n6oxi6zq的settings

代码语言:txt
复制
PUT test_ccr_leader_es-n6oxi6zq/_settings
{
  "merge": {
    "policy": {
      "auto_merge_enabled": null,
      "inactive_merge_enabled": null
    }
  },
  "bulk_routing": {
    "enabled": null
  }
}

4. 然后再到从集群执行创建从索引的操作, 需要先把之前创建出来的索引删除, 然后再创建

代码语言:txt
复制
delete test_ccr_follower_es-m8w3iko4

创建完成之后刷新一下,可以看到status处于Active了

5.验证:

在主索引写入几个测试文档

代码语言:txt
复制
POST test_ccr_leader_es-n6oxi6zq/_bulk?refresh
{"index":{}}
{"@timestamp": "2025-07-28T16:00:00Z","message": "UTC时间16点整"}
{"index":{}}
{"@timestamp": "2025-07-28T00:00:00+08:00","message": "东八区时间0点整"}
{"index":{}}
{"@timestamp": "2025-07-28T00:00:00+0800","message": "东八区时间0点整"}

在从集群查询, 查看是否有数据

代码语言:txt
复制
GET test_ccr_follower_es-m8w3iko4/_search

可以看到数据同步完成了, 从集群从索引中也可以查到了

五. 总结:

在集群版本不一致的情况下, 如果从集群需要从主集群建立从索引, 但主索引中有从集群不支持的动态配置, 可以在主索引创建完成之后, 手动设置对应配置为null

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档