带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(1)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(1)

3.5 进阶篇

3.5.1.跨集群操作


创作人张刘毅

审稿人吴斌

 

Elasticsearch 集群天然支持横向水平扩展,因此当业务规模扩大、对集群产生读写压力时,增加节点总是运维人员的“懒人选择”。但随着节点数增多,集群主节点要维护的 meta 信息也随之增多,这会导致集群更新压力增大,甚至无法提供正常服务。 另外每个企业的数据中心都需要有灾备方案,在集群间同步数据,因为单点集群会存在隐患。

鉴于此,Elastic官方提供了跨集群操作。主要包括:

 

1、跨集群搜索(CCS):允许配置多个远程集群并且在所有已配置的集群中实现联合搜索。

2、跨集群复制(CCR):允许跨多个集群复制索引,适合于做灾备方案和数据本地化场景。

 

跨集群配置

 

跨集群操作有两种配置模式连接远程的集群:嗅探模式(Sniff mode)或者代理模式(Proxy mode)。

 

l 在嗅探模式下,我们使用集群名称和种子节点列表注册远程集群。注册后,集群状态将被种子节点获取,该模式要求本地群集可以访问网关节点的发布地址。

l 在代理模式下,使用集群名称和单个代理地址注册远程集群。代理模式不需要远程集群节点具有可访问的发布地址。

 

我们可以在 Kibana 上动态配置远程集群,也可以在各个节点的 elasticsearch.yml 文件的上配置。

 

 

动态配置远程集群

 

我们在 Kibana 上使用 cluster update settings API 为每个节点动态配置远程集群。

 

例如:


PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "cluster_one": {
          "seeds": [
            "127.0.0.1:9300"
          ],
          "transport.ping_schedule": "30s"
        },
        "cluster_two": {
          "mode": "sniff",
          "seeds": [
            "127.0.0.1:9301"
          ],
          "transport.compress": true,
          "skip_unavailable": true
        },
        "cluster_three": {
          "mode": "proxy",
          "proxy_address": "127.0.0.1:9302"
        }
      }
    }
  }
}

上面的配置中,当前集群是 cluster_one,一起联合远程访问的集群 cluster_twocluster_

three。其中 cluster_two 的连接方式是嗅探模式,cluster_three 的连接方式是代理模式,代理地址是 "127.0.0.1:9302"。

 

其中:

 

l transport.compress:网络传输的压缩参数

l transport.ping_schedule :集群内部通信(tcp)的访问频率

l skip_unavailable:默认情况下如果请求中的任何集群都不可用则会返回错误。如果跳过不可用的集群,可以将 skip_unavailable 设置为 true。

 

以上这些参数是可以动态调整的,但必须要包括 seed 列表或者代理地址。

 

我们如果想关闭压缩将 ping_schedule 由 30s 改成 60s可以通过如下示例方式


PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "cluster_one": {
          "seeds": [
            "127.0.0.1:9300"
          ],
          "transport.ping_schedule": "60s"
        },
        "cluster_two": {
          "mode": "sniff",
          "seeds": [
            "127.0.0.1:9301"
          ],
          "transport.compress": false
        },
        "cluster_three": {
          "mode": "proxy",
          "proxy_address": "127.0.0.1:9302",
          "transport.compress": true
        }
      }
    }
  }
}

静态配置远程集群

 

在节点的 elasticsearch.yml 中配置远程连接,只有在 YAML 文件中设置的节点,才能连接到远程集群,并处理远程集群请求。

 

举例


cluster:
    remote:
        cluster_one: 
            seeds: 127.0.0.1:9300 
            transport.ping_schedule: 30s 
        cluster_two: 
            mode: sniff 
            seeds: 127.0.0.1:9301 
            transport.compress: true 
            skip_unavailable: true 
        cluster_three: 
            mode: proxy 
            proxy_address: 127.0.0.1:9302 

其中,cluster_one,cluster_two 和 cluster_three 是表示与每个集群的连接的集群名称,用于区分本地索引和远程索引。


《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.1.跨集群操作(2) https://developer.aliyun.com/article/1228851

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
安全 API 数据安全/隐私保护
带你读《Elastic Stack 实战手册》之12:——3.4.1.5.配置集群安全访问(2)
带你读《Elastic Stack 实战手册》之12:——3.4.1.5.配置集群安全访问(2)
121 0
带你读《Elastic Stack 实战手册》之12:——3.4.1.5.配置集群安全访问(2)
|
安全 应用服务中间件 网络安全
带你读《Elastic Stack 实战手册》之12:——3.4.1.5.配置集群安全访问(1)
带你读《Elastic Stack 实战手册》之12:——3.4.1.5.配置集群安全访问(1)
117 0
带你读《Elastic Stack 实战手册》之12:——3.4.1.5.配置集群安全访问(1)
|
存储 人工智能 大数据
带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(4)
带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(4)
|
存储 自然语言处理 网络协议
带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(2)
带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(2)
|
API 数据中心 索引
带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(3)
带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(3)
136 0
|
监控
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(4)
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(4)
101 0
|
Kubernetes 监控 开发者
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(3)
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(3)
110 0
|
Ubuntu 物联网 大数据
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(5)
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(5)
134 0
|
iOS开发 Docker MacOS
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(1)
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(1)
113 0
|
Kubernetes Docker 容器
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(2)
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(2)
110 0