首页 > 其他分享 >ElasticSearch集群的搭建

ElasticSearch集群的搭建

时间:2023-09-21 14:11:27浏览次数:42  
标签:node 集群 elasticsearch 分片 ElasticSearch local 节点 搭建

一、集群有什么用

1.1 群集的含义与产生

群集(或称为集群)是由多台主机构成,但对外,只表现为一个整体,只提供一个访问入口(域名或IP),相当于一台大型计算机。互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器开始无法满足负载均衡及高可用的需求,群集因此应运而生。

1.2 群集的种类

根据集群针对的目标差异,可分为三种:

  • 高可用群集 (High Availability Cluster) :高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果。HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如:“故障切换”、“双机热备” 等。
  • 负载均衡群集(Load Balance Cluster) :将流量均衡的分布在不同的节点上,每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。主要目的提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能。
  • 高性能群集(High Performance Computer Cluster) :以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。高性能依赖于"分布式运算”、“并行计算” , 通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,“云计算”、“网格计算”等。

二、ES集群的基础概念

2.1 集群Cluster

ElasticSearch 是一个分布式的搜索引擎,所以一般由多台物理机组成。而在这些机器上通过配置一个相同的cluster name,让其互相发现从而把自己组织成一个集群。

集群的健康状态,ES集群存在三种健康状态,单节点ES也可以算是一个集群。

  • green(绿色):代表所有索引的主分片和副本均已分配且可用,集群是100%可用
  • yellow(黄色):主分片已分配且全部主分片可用,但所有的副本不全部可用,可能是缺失,也有可能是某个索引的副本未被分配,可以通过move cancel allocate 命令所属的API进行分配或移动分片到指定节点,使用这里要注意主分片和其副本绝不能在同一节点。此时系统容错性和集群高可用被弱化。
  • red(红色):所有的主分片不全部可用,这代表很有可能存在丢失数据的风险。如果只有一个单节点Elasticsearch那么属于一种yellow状态,因为没有副本。

2.2 节点Node

ElasticSearch 是以集群的方式运行的,而节点是组成ES集群的基本单位,所以每个 ElasticSearch 实例就是一个节点,每个物理机器上可以有多个节点,使用不同的端口和节点名称。

节点按主要功能可以分为三种:主节点(Master Node),协调节点(Coordianting Node)和数据节点(Data Node)。下面简单介绍下:

  • 主节点:处理创建,删除索引等请求,维护集群状态信息。可以设置一个节点不承担主节点角色
  • 协调节点:负责处理请求。默认情况下,每个节点都可以是协调节点。
  • 数据节点:用来保存数据。可以设置一个节点不承担数据节点角色

2.3 分片

为了将数据添加到 Elasticsearch中,我们需要索引(index)——一个存储关联数据的地方,而实际上索引只是一个用来指向一个或多个 分片(shards) 的 逻辑命名空间 (logical namespace)。在ES中所有数据都存储于索引(index) 之上,但实际索引只是维护了与多个分片之间的联系,数据则是被路由到多个分片。例如一个索引有5个分片,则该索引将会有0,1,2,3,4,这五个分片 ,起指定每个文档数据存储在哪个分片是根据路由运算公式 has(_routing)%number_of_primary_shards 指定,使数据均匀分布在集群当中。

分片分为:主分片(Primary shard)和副本分片(Replica shard)

  • 主分片Primary shard:用于解决数据水平扩展的问题,通过主分片,可以将数据分布到集群内的所有节点之上,将一份索引数据划分为多小份的能力,允许水平分割和扩展容量。多个分片可以响应请求,提高性能和吞吐量。一个节点(Node)一般会管理多个分片,分片有两种,主分片和副本分片。
  • 副本分片Replica shard:副本分片只是一个主分片的拷贝。副本分片作为硬件故障时保护数据不丢失的冗余备份,从而提高整个集群的容错性,并为搜索和返回文档等读操作提供服务,且需要注意的是副本分片不能与主分片在同一个节点。。一般来说,Elasticsearch 会尽量把一个索引的不同分片存储在不同的主机上,分片的副本也尽可能存在不同的主机上,这样可以提高容错率,从而提高高可用性。
  • 一个Index数据在物理上被分布在多个主分片中,每个主分片只存放部分数据,每个主分片可以有多个副本。
  • 主分片的作用是对索引的扩容,使一个索引的容量可以突破单机的限制。
  • 副本分片是对数据的保护,每个主分片对应一个或多个副本分片,当主分片所在节点宕机时,副本分片会被提升为对应的主分片使用。
  • 一个主分片和它的副本分片,不会分配到同一个节点上。
  • 一个分片就是一个Lucene实例,并且它本身就是一个完整的搜索引擎。应用程序不会和它直接通信。
  • 当索引创建完成的时候,主分片的数量就固定了,如果要修改需要重建索引,代价很高,如果要修改则需Reindex,但是复制分片的数量可以随时调整。

文档路由到对应的分片的公式如下

标签:node,集群,elasticsearch,分片,ElasticSearch,local,节点,搭建
From: https://www.cnblogs.com/ciel717/p/17657147.html

相关文章

  • 直播平台搭建,使用element-ui中的select下拉框
    直播平台搭建,使用element-ui中的select下拉框话不多说,上代码:  <el-selectv-model="value"filterableplaceholder="请选择">   <el-optionv-for="(item,index)inoptions":key="index":value="item.value":label="la......
  • 构建基于neo4j知识图谱、elasticsearch全文检索的数字知识库
    前言:在数字化时代,知识库的建设正逐渐成为企业、学术机构和个人的重要资产。本文将介绍如何使用neo4j和elasticsearch这两种强大的数据库技术来构建知识库,并对其进行比较和探讨。技术栈:springboot+vue+neo4j+elasticsearch+activiti+mysql源码获取:Q+:3588019357正文:首先,让......
  • 学习CC2530单片机(一)开发资料及开发环境搭建
    文件内容:CC2530数据手册.pdfSmartRF.exeIAREWFor8051.exe注册机.exe百度网盘 提取码:06wjSmartRF请自行安装,不再提供教程。下面是IAR安装教程:  这里一定要断网!这里先别动,打开注册机软件:这一步要把激活信息文件保存起来,最好选择一个方便找......
  • springcloud搭建项目二nacos
    在微服务架构中,服务的数量可能会非常庞大,并且会动态地进行扩缩容。Nacos提供了服务发现功能,允许服务实例在注册到Nacos后,其他服务可以通过Nacos查询到它们的地址和信息,从而实现服务之间的通信和调用。当一个服务实例发生变化(比如新增、下线、失败等),Nacos能够及时感知这些变化,确保......
  • 如何查看kubeadm搭建出来的集群,admin.conf文件,使用的是哪些用户?
    当使用kubeadm工具搭建一个k8s集群之后,会自动的创建一个admin.conf文件。 同时,会建议将这个文件拷贝到$HOME/.kube/config,kubectl会使用这个配置文件来访问k8s集群,也可以说是访问apiserver。 那么,在admin.conf中,到底设置的是哪个用户呢? 下面,我们就来看下。 1、首先,获......
  • springcloud项目搭建一
    我们先来搭建一个项目架子,后面再慢慢的往里面填充我们需要的各种组件首先我新建一个项目(FileNewProject) 创建我们的父工程,选择左边SprigInitializr类型的,注意几个箭头的位置,点击Next 啥也不选直接完成就好了,后面反正要改配置文件 生成后目录如下,如果有其它东西删了就......
  • springcloud项目搭建
    先是项目选型我这边参考的是一个视频教程(https://www.bilibili.com/video/BV1fe4y1b7ha/)项目主要架构如下: SpringCloudAlibaba分布式架构Nacos注册中心/配置中心//Ribbon负载均衡器(新版本的openfeign已废弃ribbon,改为了loadbalancer)OpenFeign远程服务调用Sentinel系统......
  • .Net 6搭建仓储模式框架学习(一)
    仓储模式.NET仓储模式是一种软件设计模式,用于将应用程序的数据访问逻辑与业务逻辑分离。它通过将数据访问操作封装在一个单独的仓储类中,使得业务逻辑层可以独立于具体的数据存储技术。在.NET仓储模式中,仓储类负责处理与数据存储相关的操作,例如数据的增删改查、数据的持久化和查......
  • 数据库集群
    一、海量数据存储问题    传统的关系型数据库,因为数据存储量越来越大,已经无法满足快速查询与插入数据的需求。NoSql的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,换取性能的提升。   有的场景要求绝对要有事务与安全指标......
  • HADOOP集群、hive、derby安装部署详细说明
    一、创建用户groupaddanalyzer-fuseraddanalyzer-d/opt/analyzer-ganalyzer-psearchanalyzer二、处理/etc/hosts文件三、设置免密码登录(多台机器的id_rsa.pub,相互拷贝)生成公钥、密钥:ssh-keygen-trsa复制本地id_rsa.pub到远程服务器,使远程服务器登录本地可以免密码scp s......