通过网络负载均衡NLB和私网连接PrivateLink,在同一地域内打通两个Elasticsearch集群的私网,并配置跨集群复制CCR(Cross-Cluster Replication),实现索引数据的近实时同步,满足同地域容灾需求。
前提条件
已在同一地域(如华东1杭州)创建两个Elasticsearch实例,分别作为Leader集群和Follower集群。创建实例的操作,请参见购买阿里云Elasticsearch。
两个集群的管控部署模式均为云原生新管控(v3)。如果集群为v1或v2架构,需先完成架构升级,请参见实例架构升级。
两个集群的版本均为7.10.0及以上,且Follower集群版本不低于Leader集群版本。
方案概述
阿里云ES实例部署在独立的管控VPC内,而非用户VPC中。即使通过CEN打通了同地域用户的不同VPC,也无法直接实现集群间的私网互通。需要在CEN互通的基础上,借助NLB和PrivateLink打通两个集群之间的管控VPC网络。整体流程如下:
通过CEN打通Leader集群和Follower集群所在的VPC网络,如果两个ES在相同VPC中,则可跳过此步骤,直接从步骤二开始。
在Follower集群所在VPC中创建NLB,将流量转发到Leader集群的私网IP。
基于该NLB创建PrivateLink终端节点服务。
在Follower集群的ES控制台中配置私网连接,获取PrivateLink域名。
在Follower集群的Kibana中添加远程集群,配置CCR。
操作步骤
步骤一:通过CEN打通同地域VPC网络
如果两个ES在相同VPC中,则可跳过此步骤,直接从步骤二开始。
通过云企业网CEN,将Leader集群所在的VPC和Follower集群所在的VPC实现互通,详细步骤请参见同地域VPC互通。
步骤二:获取Leader集群的私网IP
在Leader集群的基本信息页面,找到私网地址字段,复制私网域名。
通过同VPC内的ECS实例,执行以下命令解析Leader集群的私网IP:
ping <Leader集群私网域名>记录解析出的IP地址,后续步骤中需要使用。
步骤三:创建NLB和服务器组
在Follower集群所在的VPC中创建NLB,将流量转发到Leader集群。
请确保已切换到Follower集群所在地域再创建NLB和服务器组。NLB必须与Follower集群在同一地域,否则后续无法创建PrivateLink终端节点服务。
创建服务器组。
在左侧导航栏,单击服务器组。
单击创建服务器组,配置以下参数:
参数
说明
服务器组类型
选择IP类型。
转发端口
开启全端口转发。
健康检查
端口填写9300。
在已创建的服务器组中,单击添加后端服务器,添加步骤一中获取的Leader集群私网IP,端口保持默认。
创建NLB实例和监听。
NLB购买页的监听配置不支持全端口功能。需要先创建NLB实例(跳过监听配置),然后在实例详情页创建监听时开启全端口功能。
如已有NLB实例,可直接创建监听;如没有,需先创建NLB实例。
在左侧导航栏,单击实例,选择或创建NLB实例。
进入实例详情页,单击监听页签,单击创建监听。
开启全端口功能,监听端口范围选择9200~9300。
服务器组选择IP类型以及上一步创建的服务器组。
步骤四:配置PrivateLink
通过PrivateLink打通Follower集群管控VPC到Leader集群的网络。
创建终端节点服务。
在左侧导航栏,单击终端节点服务。
单击创建终端节点服务,配置以下参数:
参数
说明
服务资源类型
选择NLB。
服务资源
选择步骤三中创建或使用的NLB实例。
可用区
选择NLB实例所在的可用区。
自动接受终端节点连接
选择是。
在Follower集群中添加私网连接。
登录阿里云Elasticsearch控制台,进入Follower集群的实例详情页。
在左侧导航栏,选择 配置与管理>安全配置。
在集群网络设置区域,单击配置实例私网连接。
单击添加私网连接,选择上一步创建的终端节点服务。
等待连接状态变为已连接。
获取PrivateLink域名。
连接成功后,返回PrivateLink控制台,在终端节点服务的终端节点连接状态页签中,查看自动创建的终端节点连接。该连接的域名即为PrivateLink私网域名,后续配置远程集群时使用。
步骤五:配置跨集群复制(CCR)
进入Follower集群的Kibana,具体步骤请参见通过公网地址登录Kibana(v2/v3部署架构)。
在Follower集群的实例详情页,单击左侧导航栏的可视化控制,单击进入Kibana。
添加远程集群。
在Kibana左侧菜单中,单击Stack Management。
在Data区域,单击Remote Clusters。
单击Add a remote cluster,配置以下参数:
参数
说明
Name
填写Leader集群的实例ID。
Proxy mode
开启代理模式。
Proxy address
填写步骤四中获取的PrivateLink域名,格式为
<域名>:9300。单击Save,确认连接状态为Connected。
配置CCR跟随模式。
CCR支持两种模式:
模式
说明
Follower索引
针对指定的单个索引进行复制。
自动跟随模式
根据索引名称模式自动复制匹配的索引,适合批量同步。
自动跟随模式创建后,Leader集群中新建的索引数据会自动同步到Follower集群。已有索引不会自动同步,如需同步已有索引,请在Follower集群手动创建Follower索引。
以自动跟随模式为例:
在Stack Management中,单击Cross-Cluster Replication。
选择Auto-follow patterns页签,单击Create an auto-follow pattern。
Remote cluster选择上一步添加的远程集群,Index patterns(索引模式)填写
*(复制所有索引)。如只需复制特定索引,可填写具体的索引名称模式,如logs-*。单击Create。
步骤六:验证数据同步
验证存量索引数据同步
如果在创建自动跟随模式前Leader集群中已有索引,这些索引不会自动同步。需要在Follower集群的Kibana中,通过 Stack Management > Cross-Cluster Replication > Follower Indices 手动创建Follower索引来同步。
手动创建Follower索引后,在Follower集群的Kibana中执行以下命令验证数据是否同步:
GET /<索引名>/_search如果返回结果与Leader集群一致,说明存量数据已完成同步。
验证增量数据同步
在Leader集群的Kibana中,创建新索引并写入文档:
PUT /test-increment-index POST /test-increment-index/_doc { "title": "increment test", "content": "This is a test document for CCR incremental sync." }在Follower集群的Kibana中,查询该索引:
GET /test-increment-index/_search如果返回的文档内容与写入的一致,说明增量数据已实时同步。
常见问题
远程集群连接状态不是Connected?
检查以下几点:
CEN同地域带宽是否已分配,两个VPC之间的网络是否已打通。
NLB监听端口范围是否包含9200~9300。
服务器组中的Leader集群私网IP是否正确。
服务器组的健康检查端口是否为9300。
PrivateLink终端节点服务的连接状态是否为已连接。
同地域CCR的同步延迟是否比同地域更高?
同地域CCR的同步延迟受同地域网络延迟影响,通常比同地域场景略高,但仍可保持在秒级范围内。实际延迟取决于CEN带宽配置、数据量和网络状况。建议根据业务需求合理配置CEN同地域带宽。
CCR对集群版本有什么要求?
Follower集群的版本不能低于Leader集群的版本。两个集群均需为7.10.0及以上版本,且管控部署模式为云原生新管控(v3)。