带你读《Elastic Stack 实战手册》之42:——3.5.1.跨集群操作(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_two和cluster_

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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
6月前
|
监控 前端开发 UED
Python 接口请求超时:try 超时控制与重试机制
Python 接口请求超时:try 超时控制与重试机制
|
机器学习/深度学习 人工智能 资源调度
智能家居环境中的AI决策解释:实现以人为中心的可解释性——论文阅读
本文探讨智能家居中AI决策的可解释性,提出以人为中心的XAI框架。通过SHAP、DeepLIFT等技术提升模型透明度,结合用户认知与需求,构建三层解释体系,增强信任与交互效能。
670 19
智能家居环境中的AI决策解释:实现以人为中心的可解释性——论文阅读
|
4月前
|
负载均衡 算法 NoSQL
5-微服务篇-4
本文详解微服务核心治理技术:Ribbon七大负载均衡策略(默认ZoneAvoidanceRule)及自定义IRule实现;Nacos集中化配置管理;网关层Redis令牌桶限流与Sentinel流控降级;Hystrix/Sentinel断路器三态(closed/open/half-open)熔断机制;以及Feign客户端基于FallbackFactory的服务降级实践。(239字)
224 2
|
8月前
|
敏捷开发 监控 供应链
顶俏生物模式系统开发 - 三匠互联
顶俏生物模式系统是支撑“日化+轻创业”的数字化平台,集成商城、分销、核销、积分、区域管理等功能,将复杂分润规则固化为自动算法。涵盖四层架构、多角色权限、防窜货与合规风控,实现人、货、场、钱的清晰闭环。
357 0
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
1761 6
|
数据采集 开发框架 搜索推荐
静态网页与动态页面
静态网页与动态页面
719 1
|
SQL 关系型数据库 MySQL
Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持
Flink CDC 2.3 发布,新增 Db2 数据源,MongoDB CDC 和 Oracle CDC支持增量快照,MySQL CDC 性能大幅提升
Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持
|
消息中间件 Linux Kafka
CentOS7下使用Mondo Rescue实现系统全备份
CentOS7下使用Mondo Rescue实现系统全备份
2208 0
CentOS7下使用Mondo Rescue实现系统全备份
|
敏捷开发 设计模式 Devops
深入理解软件测试中的自动化框架设计原则
【5月更文挑战第26天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将探讨自动化测试框架的设计原则,旨在为读者提供如何构建一个高效、可靠且易于维护的自动化测试框架的洞见。通过对框架设计模式的深入分析,以及实际案例研究,我们阐述了如何优化测试脚本的重用性、可扩展性和灵活性。文章还讨论了持续集成环境中自动化框架的最佳实践,帮助团队有效地实施自动化策略,并最终实现更快的反馈循环和更高的产品质量。
|
编译器 C++
【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数
【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数

热门文章

最新文章