想要将不同VPC下的私有云ES集群通过CCR的方式远程拷贝到云上ES集群;
不同VPC网络底层网络已经打通,在各自VPC下能Curl到彼此的ES VIP;
该用户的ES集群创建于近期,具备节点外访的功能;
客户在进行remote cluster设置的时候,报错如下:
“handshake failed because connection reset”
按理说,基于以上条件,通过配置CCR应该是可以将远程集群上的索引复制到云上集群的,那为何会不通呢?基于此,我们自己走一波测试,看能否复现客户问题,具体如下图:
私有云, ES 7.2 集群 基础版
公有云 ,ES 7.5.1 白金版
我们知道,CCR的前提是必须要配置 Remote Cluster,那么我们是云上配置远程集群为私有云,可以如下配置:
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote":{
"hezhenserver":{
"seeds":[
"172.16.15.11:9300" //在云上配置自建集群为远程集群,需要配置节点的transport端口
]
}
}
}
}
}
随后我们可以使用,GET /_remote/info 查看远程集群信息,返回如下:
{
"hezhenserver" : {
"seeds" : [
"172.16.15.11:9300"
],
"connected" : false, //链接失败,无法与远程节点取得联系。
"num_nodes_connected" : 0,
"max_connections_per_cluster" : 3,
"initial_connect_timeout" : "30s",
"skip_unavailable" : false
}
}
无法建立,远程连接,也就是无法与远程集群建立通信,自然CCR无法正常工作。随后,相关检查展开,包括从私有云 telnet 公有云 transport 端口、安全组设置等,仍无法通信。那么我们去查看云ES集群的日志,看看是否有发现呢?
错误截图如下:
从日志记录来看,我们复现了客户的问题。日志的意思,大概就是“从云上访问你本地的cvm端口不通”。
云上的集群节点间的通信都是加密过的,这个证书是私密的;你自建的集群默认没有开启transport SSL加密,即便开启了,因为证书的原因也不能直接连接云上的集群,云上集群的SSL密钥也不能直接公开。因为通信加密的原因,所以只有云上的集群可以互联不通。
前面我们知道ES集群开启安全认证后,节点之间的通信是加密的,称为TLS.这个里边会生产一个CA证书。这个证书是不对外开放的。那么既然知道这个原因后,我们可以新申请一个基础版ES,同时不开启安全认证,那么这样我们就能绕开这个证书不同步的问题。
第一步,申请一个同VPC下的集群,ES 7.5.1 基础版 不开启安全认证;
第二步 ,在该集群上配置私有云集群为远程集群,比如这里远程集群地址为:172.16.15.11:9300,配置如下:
发现结果是成功的。
第三步,开启该集群,白金版 trial试用功能,尝试能否使用 CCR 拷贝远程集群的索引。
第四步,配置并验证CCR功能,如下图所示:
第五步,去远程集群上创建Leader索引,“hezhenserver" ,如下:
PUT hezhenserver/_doc/1
{
"name":"eric",
"age":29,
"job":"bigdatasever maintance"
}
PUT hezhenserver/_doc/2
{
"name":"steven",
"age":30,
"job":"bigdata engineer development"
}
第六步,验证local 集群上,Follower索引是否自动同步?发现是可以的。如下图:
Ok,经过上面的测试,我们通过绕过节点加密通信,有效规避了这个问题。
值得注意的是:基础版试用CCR功能,时间只有1个月的时间,因此我们建议用户将数据同步到云上集群后,及时升级版本到白金版。以免很多Api都报过期,控制台的监控数据都没法获取。
本节基于大客户需求作了一定的测试,并就相关问题提出了解决方案并给出了验证,总结一下:
1,CCR是白金版功能,白金版ES集群不支持与自建集群建立通信;
2 ,云上集群要建立远程通信,也需要条件一致,需要一致的TLS加密环境。
3,可以通过基础版集群作为桥梁,将自建集群的索引复制到云上,再开启云上集群的CCR。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。