跨地域ES数据复制

更新时间:
复制为 MD 格式

通过云企业网CEN、网络负载均衡NLB和私网连接PrivateLink,跨地域打通两个Elasticsearch集群的私网,并配置跨集群复制CCR(Cross-Cluster Replication),实现索引数据的近实时同步,满足跨地域容灾需求。

前提条件

  • 已在两个不同地域(如华东2上海和华东1杭州)分别创建Elasticsearch实例,作为Leader集群和Follower集群。创建实例的操作,请参见购买阿里云Elasticsearch

  • 两个集群的管控部署模式均为云原生新管控(v3)。如果集群为v1v2架构,需先完成架构升级,请参见实例架构升级

  • 两个集群的版本均为7.10.0及以上,且Follower集群版本不低于Leader集群版本。

方案概述

阿里云ES实例部署在独立的管控VPC内,而非用户VPC中。即使通过CEN打通了两个地域的用户VPC,也无法直接实现集群间的私网互通。需要在CEN互通的基础上,借助NLBPrivateLink打通两个集群之间的管控VPC网络。整体流程如下:

  1. 通过CEN打通Leader集群和Follower集群所在VPC的跨地域网络。

  2. Follower集群所在地域的VPC中创建NLB,通过IP类型服务器组将流量跨地域转发到Leader集群的私网IP。

  3. 基于该NLB创建PrivateLink终端节点服务。

  4. Follower集群的ES控制台中配置私网连接,获取PrivateLink域名。

  5. Follower集群的Kibana中添加远程集群,配置CCR。

操作步骤

步骤一:通过CEN打通跨地域VPC网络

通过云企业网CEN,将Leader集群所在地域的VPCFollower集群所在地域的VPC实现跨地域互通,详细步骤请参见跨地域VPC互通

重要

CEN企业版转发路由器要求VPC中至少有2个不同可用区的VSwitch。如果VPC中只有1VSwitch,需要在另一个可用区创建新VSwitch后才能将VPC挂载到转发路由器。

步骤二:获取Leader集群的私网IP

  1. 登录阿里云Elasticsearch控制台

  2. Leader集群的基本信息页面,找到私网地址字段,复制私网域名。

  3. 通过同VPC内的ECS实例,执行以下命令解析Leader集群的私网IP:

    ping <Leader集群私网域名>

    记录解析出的IP地址,后续步骤中需要使用。

步骤三:创建NLB和服务器组

Follower集群所在的VPC中创建NLB,将流量转发到Leader集群。

重要

请确保已切换到Follower集群所在地域再创建NLB和服务器组。NLB必须与Follower集群在同一地域,否则后续无法创建PrivateLink终端节点服务。

  1. 登录网络型负载均衡NLB控制台

  2. 创建服务器组。

    1. 在左侧导航栏,单击服务器组

    2. 单击创建服务器组,配置以下参数:

      参数

      说明

      服务器组类型

      选择IP类型

      转发端口

      开启全端口转发

      健康检查

      端口填写9300

    3. 在已创建的服务器组中,单击添加后端服务器,添加步骤一中获取的Leader集群私网IP,端口保持默认。

  3. 创建NLB实例和监听。

    NLB购买页的监听配置不支持全端口功能。需要先创建NLB实例(跳过监听配置),然后在实例详情页创建监听时开启全端口功能。

    如已有NLB实例,可直接创建监听;如没有,需先创建NLB实例。

    1. 在左侧导航栏,单击实例,选择或创建NLB实例。

    2. 进入实例详情页,单击监听页签,单击创建监听

    3. 开启全端口功能,监听端口范围选择9200~9300

    4. 服务器组选择IP类型以及上一步创建的服务器组。

步骤四:配置PrivateLink

通过PrivateLink打通Follower集群管控VPCLeader集群的网络。

  1. 登录私网连接PrivateLink控制台

  2. 创建终端节点服务。

    1. 在左侧导航栏,单击终端节点服务

    2. 单击创建终端节点服务,配置以下参数:

      参数

      说明

      服务资源类型

      选择NLB

      服务资源

      选择步骤三中创建或使用的NLB实例。

      可用区

      选择NLB实例所在的可用区。

      自动接受终端节点连接

      选择

  3. Follower集群中添加私网连接。

    1. 登录阿里云Elasticsearch控制台,进入Follower集群的实例详情页。

    2. 在左侧导航栏,选择 配置与管理>安全配置

    3. 集群网络设置区域,单击配置实例私网连接

    4. 单击添加私网连接,选择上一步创建的终端节点服务。

    5. 等待连接状态变为已连接

  4. 获取PrivateLink域名。

    连接成功后,返回PrivateLink控制台,在终端节点服务的终端节点连接状态页签中,查看自动创建的终端节点连接。该连接的域名即为PrivateLink私网域名,后续配置远程集群时使用。

步骤五:配置跨集群复制(CCR)

重要

配置远程集群前,确保Leader ES集群的VPC私网访问白名单包含NLB所在VPC的网段。在跨地域场景下,NLB通过CEN转发健康检查和数据流量到Leader ES时,源IP来自NLB所在VPC,如果Leader ES白名单未覆盖这些IP,会导致NLB健康检查异常和远程集群连接失败。配置白名单的操作请参见设置集群IP白名单

  1. 进入Follower集群的Kibana,具体步骤请参见通过公网地址登录Kibana(v2/v3部署架构)

    Follower集群的实例详情页,单击左侧导航栏的可视化控制,单击进入Kibana

  2. 添加远程集群。

    1. Kibana左侧菜单中,单击Stack Management

    2. Data区域,单击Remote Clusters

    3. 单击Add a remote cluster,配置以下参数:

      参数

      说明

      Name

      填写Leader集群的实例ID。

      Proxy mode

      开启代理模式。

      Proxy address

      填写步骤四中获取的PrivateLink域名,格式为 <域名>:9300

    4. 单击Save,确认连接状态为Connected

  3. 配置CCR跟随模式。

    CCR支持两种模式:

    模式

    说明

    Follower索引

    针对指定的单个索引进行复制。

    自动跟随模式

    根据索引名称模式自动复制匹配的索引,适合批量同步。

    自动跟随模式创建后,Leader集群中新建的索引数据会自动同步到Follower集群。已有索引不会自动同步,如需同步已有索引,请在Follower集群手动创建Follower索引。

    以自动跟随模式为例:

    1. Stack Management中,单击Cross-Cluster Replication

    2. 选择Auto-follow patterns页签,单击Create an auto-follow pattern

    3. Remote cluster选择上一步添加的远程集群,Index patterns(索引模式)填写 *(复制所有索引)。如只需复制特定索引,可填写具体的索引名称模式,如 logs-*

    4. 单击Create

步骤六:验证数据同步

验证存量索引数据同步

如果在创建自动跟随模式前Leader集群中已有索引,这些索引不会自动同步。需要在Follower集群的Kibana中,通过 Stack Management > Cross-Cluster Replication > Follower Indices 手动创建Follower索引来同步。

手动创建Follower索引后,在Follower集群的Kibana中执行以下命令验证数据是否同步:

GET /<索引名>/_search

如果返回结果与Leader集群一致,说明存量数据已完成同步。

验证增量数据同步

  1. Leader集群的Kibana中,创建新索引并写入文档:

    PUT /test-increment-index
    
    POST /test-increment-index/_doc
    {
        "title": "increment test",
        "content": "This is a test document for CCR incremental sync."
    }
  2. Follower集群的Kibana中,查询该索引:

    GET /test-increment-index/_search

    如果返回的文档内容与写入的一致,说明增量数据已实时同步。

常见问题

远程集群连接状态不是Connected?

检查以下几点:

  • Leader ES集群的VPC私网访问白名单是否包含NLB所在VPC的网段。在跨地域场景下,NLB通过CEN转发健康检查和数据流量到Leader ES时,源IP来自NLB所在VPC,如果Leader ES白名单未包含这些IP,会导致NLB健康检查异常和连接失败。

  • CEN跨地域带宽是否已分配,两个VPC之间的网络是否已打通。

  • NLB监听端口范围是否包含9200~9300。

  • 服务器组中的Leader集群私网IP是否正确。

  • 服务器组的健康检查端口是否为9300。

  • PrivateLink终端节点服务的连接状态是否为"已连接"。

跨地域CCR的同步延迟是否比同地域更高?

跨地域CCR的同步延迟受跨地域网络延迟影响,通常比同地域场景略高,但仍可保持在秒级范围内。实际延迟取决于CEN带宽配置、数据量和网络状况。建议根据业务需求合理配置CEN跨地域带宽。

CCR对集群版本有什么要求?

Follower集群的版本不能低于Leader集群的版本。两个集群均需为7.10.0及以上版本,且管控部署模式为云原生新管控(v3)。