為了提升安全性,Elasticsearch(ES)執行個體間的網路預設是隔離的,因此使用跨叢集搜尋功能時,需要先打通兩個執行個體的網路。本文介紹如何通過配置執行個體網路互連來使用跨叢集搜尋功能。
適用範圍
兩個ES叢集之間實現跨叢集搜尋,首先要實現叢集間網路互連,需要滿足以下條件:
兩個叢集的管控部署架構均為v2基礎管控架構,且處於同一VPC。
ES 叢集存在三種管控部署模式,分別為基礎管控(v1架構)、基礎管控(v2架構)和雲原生新管控(v3架構),通過叢集基本資料頁查看叢集架構。

叢集為6.7.0及以上版本。
同時開啟OpenStore和IndexingService服務的叢集和其他類型叢集不支援跨叢集搜尋。
互連叢集數量限制:所有互連叢集即
sum(叢集的角色個數 * 叢集的可用性區域個數)≤ 20樣本說明:A叢集需同時連通B、C叢集,每個叢集含3種角色(Master/協調/資料)、每個叢集部署在3個可用性區域。
計算總和:
(3角色 × 3可用性區域) × 3叢集 = 27 > 20→ 超出限制,A無法同時連通B和C。
操作步驟
步驟一:配置執行個體間網路互連
在左側導覽列,單擊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" } } ] } }