为了提升安全性,阿里云Elasticsearch实例间的网络默认是隔离的,因此使用跨集群搜索功能时,需要先打通两个实例的网络。本文介绍如何通过配置实例网络互通来使用跨集群搜索功能。
前提条件
已创建待互通的源和目标Elasticsearch实例,且待互通的两个实例需要满足以下条件。具体操作,请参见创建阿里云Elasticsearch实例。
归属于相同账号。
版本相同。
重要阿里云Elasticsearch 8.x、7.16版本实例和部分7.10、6.7版本实例不支持配置网络互通,实际以控制台为准。
部署在同一个专有网络中。
同为单可用区实例,或同为多可用区实例。
在同一网络架构下。
2020年10月,阿里云Elasticsearch对网络架构进行了调整。2020年10月之前为旧网络架构,2020年10月及之后为新网络架构。
对于华北3(张家口)和海外地域,由于网络架构调整时间不确定,因此需要提交工单,联系阿里云Elasticsearch技术支持,校验网络是否可以互通。
新网络架构下的实例不支持与旧网络架构下的实例进行跨集群reindex、跨集群搜索、跨集群复制等实例互通操作。
操作步骤
步骤一:配置实例间网络互通
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,选择 。
在集群网络设置区域,单击配置实例网络互通右侧的修改。
在修改配置页面,单击添加实例。
在添加实例对话框中,选择待互通的远程实例。
重要RAM用户需要ListInstance权限才能获取相应阿里云账号下的所有实例。详细信息,请参见Elasticsearch授权资源。
配置实例间网络互通后,在远程实例的配置实例网络互通页面,也可以看到当前实例。即网络打通操作是双向的,如果A实例配置了与B实例的网络互通,则B实例的网络也与A实例进行了打通。
单击确认。
添加成功后,可在修改配置页面查看与当前实例打通的实例列表。
说明添加互通实例后,如果不再使用,可单击移除,移除该互通实例。
步骤二:配置跨集群搜索
在实际业务中,配置完实例网络互通后,您需要继续配置跨集群搜索,才能在当前实例中搜索远程实例的数据。
在远程Elasticsearch实例中,准备测试数据。
说明此步骤的作用是方便您验证跨集群搜索功能,如果您的远程实例中已有待测试的数据,可忽略此步骤。
登录远程Elasticsearch实例的Kibana控制台,根据页面提示进入Kibana主页。
登录Kibana控制台的具体操作,请参见登录Kibana控制台。说明 本文以阿里云Elasticsearch 6.7.0版本为例,其他版本操作可能略有差别,请以实际界面为准。在左侧导航栏,单击Dev Tools。
在Console中,执行以下命令,在远程实例中创建索引和文档,并插入数据。
本文的命令示例如下:
创建索引
PUT /twitter { "settings" : { "index" : { "number_of_shards" : 3, "number_of_replicas" : 2 } } }
创建文档并插入数据
POST twitter/_doc/ { "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" }
在当前Elasticsearch实例中,配置跨集群搜索,并验证是否配置成功。
参见步骤一,登录当前Elasticsearch实例的Kibana控制台,执行以下命令,在当前实例中配置跨集群搜索。
以下为Elasticsearch 6.7版本的配置示例,其他版本与此类似。详细信息,请参见Elasticsearch 7.x版本跨集群搜索、Elasticsearch 6.3版本跨集群搜索和Elasticsearch 5.5版本跨集群搜索。
使用节点IP地址配置跨集群搜索示例如下:
PUT _cluster/settings { "persistent": { "cluster": { "remote": { "cluster_one": { "seeds": [ "10.8.xx.xx:9300", "10.8.xx.xx:9300", "10.8.xx.xx:9300" ] } } } } }
节点IP地址可在实例的基本信息页面的节点可视化区域获取,详细信息请参见查看集群状态和节点信息。
重要不支持使用域名方式配置跨集群搜索。
如果在当前Elasticsearch实例中,配置了远程Elasticsearch实例的节点IP地址(跨集群搜索),则只可在当前实例中查询远程实例的索引数据,无法在远程实例中执行类似命令反向访问。如果需要反向访问,需要在远程实例中配置当前实例的节点IP地址。
执行以下命令,验证跨集群搜索是否配置成功。
POST /cluster_one:twitter/_doc/_search { "query": { "match_all": {} } }
验证成功后,返回如下结果。
{ "took" : 78, "timed_out" : false, "_shards" : { "total" : 3, "successful" : 3, "skipped" : 0, "failed" : 0 }, "_clusters" : { "total" : 1, "successful" : 1, "skipped" : 0 }, "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [ { "_index" : "cluster_one:twitter", "_type" : "_doc", "_id" : "qudxxxxxxxxxx_7ie6J", "_score" : 1.0, "_source" : { "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" } } ] } }