首页 > 其他分享 >技术实践|浅谈Elasticsearch跨集群搜索

技术实践|浅谈Elasticsearch跨集群搜索

时间:2023-01-17 23:00:53浏览次数:62  
标签:浅谈 CCS 查询 集群 Elasticsearch 日志 节点 ES

前言

Elasticsearch(简称ES)是基于Lucene库的分布式架构搜索引擎。它支持水平横向扩展,但是集群节点不能无限增加。因为当集群的meta信息(节点、索引、集群状态)过多时,会使集群更新压力变大,单个可用主节点会成为性能瓶颈,导致整个集群无法正常工作。在早期版本时,为了弥补ES不能无限横向水平扩展的能力,通常会采用多集群的方式,通过部落节点(Tribe Node)实现多集群访问,但是也存在一定的问题,所以现在已经被废弃(Deprecated)了。

随后,ES在5.3及以后的版本中引入了跨集群搜索的功能,可以针对一个或多个远程集群进行单个搜索请求,这也是目前主流的ES跨集群搜索方案。本文主要围绕CCS的基本概念、应用场景以及CCS配置方面进行了简要的梳理。

作者|中电金信云计算实验室  罗艳鹏

一、CCS简单介绍

1. 概念

跨集群搜索(Cross Cluster Search)简称CCS,顾名思义就是可以通过当前ES集群去查询远程ES集群中的数据。它能用来过滤和分析存储在不同数据中心的集群中的数据。

2. 简介

CCS功能允许任何节点在多个集群之间充当联合客户端(Federated Client)。与部落节点(Tribe Node)功能相比,进行CCS的节点将不会加入远程集群,而是以轻量的方式连接到远程集群,以便执行联合搜索(Federated Search)请求。

■ 远程集群(Remote Cluster)

要使用CCS之前需要先了解远程集群(Remote Cluster)。CCS的工作原理是在集群状态中配置一个远程集群,并且仅连接到远程集群中有限数量的节点。每个远程集群中有名称(Name)和种子节点(Seed Nodes)列表以供引用,这些种子节点用于发现远程集群中有资格作为网关节点的节点。

注册远程集群时,会从其中一个种子节点来检查其集群状态,以便在默认情况下选择最多三个有资格的节点作为网关节点(Gateway Nodes), 集群中配置了远程集群的每个节点都连接到一个或多个网关节点,并使用它们将搜索请求发送到远程集群。

技术实践|浅谈Elasticsearch跨集群搜索_中电金信

如上图所示,当我们的客户端向当前集群发送请求时,它可以搜索自己本身的集群,同时也可以向另外两个集群——远程集群一和远程集群二发送请求。最后的结果由当前ES集群返回给客户端。

二、CCS应用场景

1. 场景一

■ 实际场景

以G市某银行为例,在同城双活的场景下,有一个主机房和一个同城机房,主机房会产生80%的日志,同城机房会产生20%的日志,每个机房都有一套ELK对日志进行分析存储,两个机房共用一个PaaS平台。

■ 场景分析

在该场景下已经明确有两套ES集群和一个管控台,所以现在需要对两套ES集群的数据进行查询汇总,然后在PaaS平台上进行展示分析。由于数据量太大,虽然ES的查询能力很好,但是如果直接把查询到的数据通过日志管理进行汇总排序的话,不仅会增加在PaaS平台的显示耗时,而且也会给日志管理带来很大的内存压力。

■ 解决办法

通过ES的跨集群搜索能力,在主机房配置同城机房的CCS,这样主机房的ES集群就只需要对日志进行查询分析,不用考虑合并日志以及对日志排序的问题,因为这些问题都在主机房的ES集群中处理过了。

2. 场景二

■ 存在场景

假设在原有的系统上经过分析和综合评定以后搭建了5个节点的ES集群,但是随着系统的发展以及数据量的暴增,ES的压力也越来越大,迫切需要对ES进行扩容。

■ 场景分析

随着业务的发展和数据量的增加,需要对ES进行扩容,ES采用分布式架构,支持横向的水平扩容,但由于业务持续发展,数据量也在持续增加,不可能单纯依靠横向增加ES节点的方式进行扩容,因为ES的节点不能无限制的增加,否则会导致整个ES集群不可用。

■ 解决办法

采用多集群的方式,在原有的5节点的ES集群上,根据综合评定再搭建n个节点的另外一套ES集群,随着数据量的增加,可以随之增加ES集群的个数。对于多个ES集群之间的数据查询可以通过配置CCS来实现。

三、CCS装置

可以使用集群设置修改elasticsearch.yml来设置CCS,也可以通过cluster settings API设置CCS,推荐使用API的方式配置CCS(本次以API的方式为例配置CCS)。

假设现在有两个集群Ecas-im,Ecas-re:

技术实践|浅谈Elasticsearch跨集群搜索_中电金信_02

现在需要通过Ecas-im集群联合查询Ecas-re集群的数据,CCS配置如下:

注:文中所出现IP地址均为虚假地址,实际操作时可根据实际情况进行IP地址设定。

技术实践|浅谈Elasticsearch跨集群搜索_联合查询_03

(部分展示,详情请关注 中电金信 招聘)

 验证CCS是否配置成功

技术实践|浅谈Elasticsearch跨集群搜索_联合查询_04

(部分展示,详情请关注 中电金信 招聘)

 如上图所示,如果看到两个ES集群都提示connected:true,证明CCS配置完成。

四、CCS注意细节

● CCS需要配置es的Transport Port内部通信端口,默认值是9300,如果同一台机器安装多个es节点,注意要修改9300端口,否则端口冲突;

● 两个ES集群之间要保证网络相通;

● 两个ES需要联合查询的数据索引要保持一致,比如Ecas-im集群的索引是ecas-batch,那么Ecas-re集群的索引也应该是ecas-batch,这样才能保证ecas-batch的数据从两个集群下进行联合查询;

● CCS配置时skip_unavailable的值默认是false,推荐改为true(查询的时候跳过不可达的集群)

五、CCS使用

假设Ecas-im集群和Ecas-re集群都有一个索引为ecas-batch,在联合查询的时候可以执行下面的api来联合查询调用链id相关的日志信息。

技术实践|浅谈Elasticsearch跨集群搜索_联合查询_05

(部分展示,详情请关注 中电金信 招聘)

 如果在查询时把索引改成*:ecas-batch就代表查询所有集群的数据,因为现在就两个集群ecas-im:ecas-batch,ecas-re:ecas-batch和*:ecas-batch查询的结果是一样的,所以上述查询api可以按照下面的方式进行查询。

技术实践|浅谈Elasticsearch跨集群搜索_联合查询_06

(部分展示,详情请关注 中电金信 招聘)

 
写在文末

在金融行业,多数银行在进行应用部署时出于可靠性和安全性考虑,一般都会采用两地三中心或者三地五中心的方式进行部署规划,所以应用可能会在多个地方存活,并输出相应日志。

这些日志数据一般会输出到其所在的数据中心,通过局域网进行内处理,不会跨远程网络,因此一般针对跨数据中心、不在同一个业务域或集群服务内的应用日志输出就会被映射到各自所在的区域。

这个时候ES集群就会出现多个,且每个集群都是一整套管理机制,会对运维管理造成很大的麻烦,也会形成日志数据孤岛,本文主要是针对此类问题分享了一些解决办法和思路,谨供大家参考。

标签:浅谈,CCS,查询,集群,Elasticsearch,日志,节点,ES
From: https://blog.51cto.com/u_15430715/6017842

相关文章

  • Spring Cloud Alibaba Nacos+Nginx+Keepalived高可用集群注册中心搭建
    简介Nacos简介Nacos官网:https://nacos.ioNacos源码:https://github.com/alibaba/nacos下载Nacos服务端压缩包:https://github.com/alibaba/nacos/releasesNacos三种部署......
  • ElasticSearch进阶:一文全览各种ES查询在Java中的实现
    1词条查询1.1等值查询-term1.2多值查询-terms1.3范围查询-range1.4前缀查询-prefix1.5通配符查询-wildcard2复合查询2.1布尔查询2.2Filter查询3聚......
  • ElasticSearch7.10配置Search-Guard之配置用户
    ElasticSearch7.10配置Search-Guard之配置用户配置sg_internal_user.yml密码是:elasticjode:hash:$2y$12$nUzkcjdnufzvI1HlmN7xSuND3skGhmwV5le5IINejz.asMFpLYNRy......
  • 使用管控平台管理redis集群
    1添加redis集群在数据库资源中添加redis集群,配置参数并将URL中cluster调整为true。2验证配置资源是否正常3操作redis数据库中的数据可以通过使用图形化界面或者命......
  • 【多任务损失函数】浅谈多任务中的损失函数如何定义与优化
    ·本文目录  1、损失函数与反向传播的关系  2、添加系数的损失函数会影响实验结果(实验证明)  3、多任务中损失函数与反向传播的思考  4、学习多任务模型损失函数的......
  • ElasticSearch必知必会-进阶篇
    京东物流:康睿姚再毅李振刘斌王北永说明:以下全部均基于elasticsearch 8.1版本一.跨集群检索-ccr官网文档地址:​​​https://www.elastic.co/guide/en/elasticsearch/......
  • ElasticSearch必知必会-进阶篇
    京东物流:康睿姚再毅李振刘斌王北永说明:以下全部均基于elasticsearch8.1版本一.跨集群检索-ccr官网文档地址:https://www.elastic.co/guide/en/elasticsearch/re......
  • Elasticsearch 基础入门详文
    Elasticsearch(简称:ES)功能强大,其背后有很多默认值,或者默认操作。这些操作优劣并存,优势在于我们可以迅速上手使用ES,劣势在于,其实这些默认值的背后涉及到很多底层原理,怎么......
  • GO语言操作Elasticsearch
    Elasticsearch简介Elasticsearch是一个开源的搜索引擎,建立在一个全文搜索引擎库ApacheLucene™基础之上。Lucene可以说是当下最先进、高性能、全功能的搜索引擎库–......
  • elasticsearch 安装与配置
    一、JAVA与elasticsearch的版本对应个人实测能够对应起来的版本:elasticsearch-rtf-2.2.1需要JDK7或更低的版本,推荐使用7elasticsearch-rtf-2.3.3个人测试可以使......