ELK(五)—集群搭建

news2024/11/26 12:37:16

写目录

  • ip规划
  • ElasticSearch集群
    • 集群节点
    • 搭建集群
    • es切片和副本
      • 切片(Shard):
      • 副本(Replica):
  • 故障转移
    • postman创建索引的情况
    • 直接在面板中创建索引
      • 总结

ip规划

ip名称服务
192.168.150.190elk_masterelasticsearch
192.168.150.189elk_node1
192.168.150.188elk_node2

ElasticSearch集群

集群节点

ELasticsearch的集群是由多个节点组成的,通过cluster.name设置集群名称,并且用于区分其它的集群,每个节点通过node.name指定节点的名称。

在Elasticsearch中,节点的类型主要有4种:

master节点

  • 配置文件中node.master属性为true(默认为true),就有资格被选为master节点。master节点用于控制整个集群的操作。比如创建或删除索引,管理其它非master节点等。

data节点

  • 配置文件中node.data属性为true(默认为true),就有资格被设置成data节点。data节点主要用于执行数据相关的操作。比如文档的CRUD(创建(Create),读取(Retrieve),更新(Update) 、删除(Delete))。

客户端节点

  • 配置文件中node.master属性和node.data属性均为false。
  • 该节点不能作为master节点,也不能作为data节点。
  • 可以作为客户端节点,用于响应用户的请求,把请求转发到其他节点

部落节点

  • 当一个节点配置tribe.*的时候,它是一个特殊的客户端,它可以连接多个集群,在所有连接

搭建集群

elk-master节点的信息

#################################
# master节点的 elasticsearch.yml 内容
#################################

# 集群节点名称
node.name: "elk_node1"

# 设置集群名称为elasticsearch
cluster.name: "cluster_es"

# 网络访问限制
network.host: 0.0.0.0

#社会绑定的IP地址,可以是IPV4或者IPV6
network.bind_host: 0.0.0.0

#设置其他节点与该节点交互的IP地址
network.publish_host: 192.168.150.189

#是否开启http服务对外提供服务
http.port: 9200

#设置节点之间交互的端口号
transport.port: 9300

# 是否支持跨域
http.cors.enabled: true

# 表示支持所有域名
http.cors.allow-origin: "*"

# 内存交换的选项,官网建议为true
bootstrap.memory_lock: true

# 集群中的其它节点
discovery.seed_hosts: ["192.168.150.190","192.168.150.189","192.168.150.188"]

#集群中的角色
node.roles: [master,data]

# 集群中初始化的节点
cluster.initial_master_nodes: ["elk_master", "elk_node1", "elk_node2"]

# 取消安全验证
xpack.security.enabled: false
xpack.security.http.ssl.enabled: false
xpack.security.transport.ssl.enabled: false

elk_node1的节点相关信息

#################################
# master节点的 elasticsearch.yml 内容
#################################

# 集群节点名称
node.name: "elk_node1"

# 设置集群名称为elasticsearch
cluster.name: "cluster_es"

# 网络访问限制
network.host: 0.0.0.0

#社会绑定的IP地址,可以是IPV4或者IPV6
network.bind_host: 0.0.0.0

#设置其他节点与该节点交互的IP地址
network.publish_host: 192.168.150.189

#是否开启http服务对外提供服务
http.port: 9200

#设置节点之间交互的端口号
transport.port: 9300

# 是否支持跨域
http.cors.enabled: true

# 表示支持所有域名
http.cors.allow-origin: "*"

# 内存交换的选项,官网建议为true
bootstrap.memory_lock: true

# 集群中的其它节点
discovery.seed_hosts: ["192.168.150.190","192.168.150.189","192.168.150.188"]

#集群中的角色
node.roles: [master,data]

# 集群中初始化的节点
cluster.initial_master_nodes: ["elk_master", "elk_node1", "elk_node2"]

# 取消安全验证
xpack.security.enabled: false
xpack.security.http.ssl.enabled: false
xpack.security.transport.ssl.enabled: false

elk_node2的节点相关信息

#################################
# master节点的 elasticsearch.yml 内容
#################################

# 集群节点名称
node.name: "elk_node2"

# 设置集群名称为elasticsearch
cluster.name: "cluster_es"

# 网络访问限制
network.host: 0.0.0.0

#社会绑定的IP地址,可以是IPV4或者IPV6
network.bind_host: 0.0.0.0

#设置其他节点与该节点交互的IP地址
network.publish_host: 192.168.150.188

#是否开启http服务对外提供服务
http.port: 9200

#设置节点之间交互的端口号
transport.port: 9300

# 是否支持跨域
http.cors.enabled: true

# 表示支持所有域名
http.cors.allow-origin: "*"

# 内存交换的选项,官网建议为true
bootstrap.memory_lock: true

# 集群中的其它节点
discovery.seed_hosts: ["192.168.150.190","192.168.150.189","192.168.150.188"]

#集群中的角色
node.roles: [master,data]

# 集群中初始化的节点
cluster.initial_master_nodes: ["elk_master", "elk_node1", "elk_node2"]

# 取消安全验证
xpack.security.enabled: false
xpack.security.http.ssl.enabled: false
xpack.security.transport.ssl.enabled: false

三个节点的“elasticsearch.yml”文件修改完成后,我们就可以启动elasticsearch服务了

./elasticsearch -d

image.png

cluster.initial_master_nodes: ["elk_master", "elk_node1", "elk_node2"]

因为在集群的master节点初始化的时候,三个节点都有机会成为master节点,那个节点先启动就是对应的主节点了。

创建一个索引,其中加粗的为主分片,其余为副本分片

image.png

查询集群状态:/_cluster/health

在postman工具(或其他工具)

 get http://192.168.150.189:9200/_cluster/health

get http://集群中的节点ip:端口/_cluster/health

image.png

image.png

集群中有三种颜色

image.png

es切片和副本

在Elasticsearch中,切片(shard)和副本(replica)是两个重要的概念,它们对于分布式和高可用性非常关键。以下是对这两个概念的详细解释:

切片(Shard):

  1. 定义
    • 切片是数据在Elasticsearch集群中的基本单元。每个索引都被分成一个或多个切片,每个切片是一个独立的工作单元,包含了索引中的一部分数据。
  2. 目的
    • 切片的主要目的是将索引的数据分散存储在整个集群中,以实现分布式存储和搜索。这使得Elasticsearch能够处理大量数据并提供快速的检索能力。
  3. 类型
    • 主切片(Primary Shard):每个切片都有一个主切片,它是切片的主要工作单元,负责处理所有的读和写操作。
    • 复制切片(Replica Shard):为了提高高可用性和性能,每个主切片可以有零个或多个复制切片。复制切片是主切片的拷贝,可以接收读请求。
  4. 分配策略
    • 切片的分配是在索引创建时确定的,通常在索引创建时指定主切片的数量。副本的数量可以在运行时进行动态调整。
  5. 路由
    • 文档被路由到特定的切片,Elasticsearch使用文档的ID和切片数量来确定路由。这确保了相同ID的文档总是存储在同一个切片上。

副本(Replica):

  1. 定义
    • 副本是主切片的拷贝,用于提供冗余和高可用性。每个主切片可以有零个或多个副本,这些副本存储在不同的节点上。
  2. 目的
    • 主切片和其所有副本一起形成一个分片组,该组提供了在节点故障或网络问题时的冗余和故障恢复能力。
  3. 高可用性
    • 当主切片不可用时,Elasticsearch可以自动将一个副本提升为新的主切片,以保持索引的可用性。
  4. 读操作
    • 读操作可以由主切片或任何副本处理,这取决于请求的路由和索引的健康状况。
  5. 写操作
    • 写操作总是由主切片处理,然后通过异步复制到所有副本。这确保了写操作的一致性和可用性。

总体而言,切片和副本是Elasticsearch实现分布式、高性能和高可用性的关键组件。通过合理设置切片和副本的数量,可以有效地利用集群资源并确保数据的安全和可用性。

故障转移

postman创建索引的情况

这里选择将elk_node2的es停止

image.png

可以看到,elk_node2节点立即从看板中消失了。

重启启动elk_node2节点

image.png

elk_node2节点立马又加入了集群中。

这次选择删除elk_node1节点,可以从看板中知道,该节点是主节点.

看看删除主节点后,会不会在其他节点中产生一个新的节点。

image.png

删除node1节点后,节点信息立马变为unassigned了,同时elknode2节点变为了新的master节点。当然了这是随机的,elk_master也可以是新的master节点。

lasticsearch具备自动分配未分配分片到可用节点的机制。当一个节点离开集群时,未分配的分片应该被自动分配到其他可用的节点上,确保集群的高可用性和数据完整性。

理论上,在这种情况下,其他可用的节点应该接管这个分片。然而,可能存在一些情况导致自动分片分配失败,例如网络问题、节点配置问题等。

进行手动分配分片。

先查看可用节点

[root@elk_node2 ~]# curl -X GET "localhost:9200/_cat/nodes?v"
ip              heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.150.188           39          86   0    0.00    0.00     0.00 dm        *      elk_node2
192.168.150.190           44          88   0    0.03    0.04     0.01 dm        -      elk_master
[root@elk_node2 ~]# curl -X GET "192.168.150.188:9200/_cat/indices?v"
health status index uuid                   pri rep docs.count docs.deleted stor
red    open   elk   EhgU7OuaS_q3aj_wVd5e_A   2   0          0            0
[root@elk_node2 ~]# curl -X GET "192.168.150.188:9200/_cat/shards/elk?v"
index shard prirep state      docs store dataset ip              node
elk   0     p      STARTED       0  249b    249b 192.168.150.190 elk_master
elk   1     p      UNASSIGNED
  1. 分配主分片:
curl -X POST "192.168.150.188:9200/_cluster/reroute" -H 'Content-Type: application/json' -d '{
  "commands" : [
    {
      "allocate_stale_primary" : {
        "index" : "elk",
        "shard" : 1,
        "node" : "elk_node2"
      }
    }
  ]
}'

请注意,这里使用了 allocate_stale_primary 命令,这是一种尝试为失效节点分配主分片的方式。

  1. 等待主分片分配完成后,再分配副本:
curl -X POST "192.168.150.188:9200/_cluster/reroute" -H 'Content-Type: application/json' -d '{
  "commands" : [
    {
      "allocate_replica" : {
        "index" : "elk",
        "shard" : 1,
        "node" : "elk_node2"
      }
    }
  ]
}'

这两个命令组合起来,应该可以解决主分片和副本分配的问题。如果问题仍然存在,可能需要查看 Elasticsearch 的日志以获取更多详细信息。

在有分片的节点down之后,分片不会直接分配。很关键

更关键的是,这样进行手动分配分片是没因的!! 因为没有副本。。

直接在面板中创建索引

先创建索引

image.png

image.png

四分片、一个副本数,可以看到已经创建成功了。

image.png

这个时候我们把elk_node1节点停掉。

image.png

OK,这里可以看到集群颜色变为了黄色,并不是上面的红色了。

表示集群是运行的,但不是所有的主分片和副本分片都是 active(活跃) 状态。这可能是因为某些副本尚未分配,但主分片是活跃的。

经过一段时间之后,我们可以看到集群又重新变为绿色了。

image.png

这是因为,集群将其他节点的副本调动起来了,保证正常运行了。

image.png

有意思的一点,我们上面创建索引的时候指定的分片是四,每个节点都有对应的四个小方块了,保证了只要还存在节点,项目就肯定可以运行。

现在继续吧elk_master节点停掉,然后又启动看分片的分布

image.png

可以看到主片已经全部是elknode2节点上了,而elk_master的分片已经全部是负集了。

总结

  1. 设置集群的时候,各个节点的配置文件要特别注意节点的名称,主要的不一样就是在这里了。
  2. 想要故障转移的效果,我们创建索引的时候,需要设置副本,否则不会自动转移。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1296464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web漏洞原理与防御策略,web漏洞怎么挖掘

目录 Web安全的重要性 ​编辑常见的Web漏洞类型及其原理: 1、跨站脚本攻击(XSS): 2、SQL注入: 3、跨站请求伪造(CSRF): 4、远程文件包含(RFI)和本地文件包含(LFI):…

深入浅出:HTTPS单向与双向认证及证书解析20231208

介绍: 网络安全的核心之一是了解和实施HTTPS认证。本文将探讨HTTPS单向认证和双向认证的区别,以及SSL证书和CA证书在这些过程中的作用,并通过Nginx配置实例具体说明。 第一部分:HTTPS单向认证 定义及工作原理:HTTPS单向认证是一…

数据分析基础之《matplotlib(6)—饼图》

一、饼图介绍 1、什么是饼图 饼图广泛的应用在各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个区块,整个圆饼代表数据的总量,每个区块(圆弧&#xff0…

Python网络爬虫的基础理解-对应的自我理解误区

##通过一个中国大学大学排名爬虫的示例进行基础性理解 以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:(1)按照排名先后顺序输出不同年份的前10…

生产上线需要注意的安全漏洞

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse,否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…

力扣题:数字与字符串间转换-12.9

力扣题-12.9 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:412. Fizz Buzz 解题思想:直接遍历添加至answer即可 class Solution(object):def fizzBuzz(self, n):""":type n: int:rtype: List[str]"""…

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、金融行业软件特…

文献计量学方法与应用、主题确定、检索与数据采集、VOSviewer可视化绘图、Citespace可视化绘图、R语言文献计量学绘图分析

目录 一、文献计量学方法与应用简介 二、主题确定、检索与数据采集 三、VOSviewer可视化绘图 四、Citespace可视化绘图 五、R语言文献计量学绘图分析 六、论文写作 七、论文投稿 更多应用 文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉…

量子芯片技术:未来的计算革命

量子芯片技术:未来的计算革命 一、引言 随着科技的不断发展,人类正在进入一个全新的技术时代,即量子时代。量子芯片技术作为这个时代的重要代表,正逐渐改变我们对计算和信息处理的理解。本文将深入探讨量子芯片技术的基本原理、…

git clone 命令

git clone 是一个用于克隆(clone)远程 Git 仓库到本地的命令。 git clone 可以将一个远程 Git 仓库拷贝到本地,让自己能够查看该项目,或者进行修改。 git clone 命令,你可以复制远程仓库的所有代码和历史记录&#xf…

用23种设计模式打造一个cocos creator的游戏框架----(十)迭代器模式

1、模式标准 模式名称:迭代器模式 模式分类:行为型 模式意图:提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示. 结构图: ​ 适用于: 1、当你需要遍历一个复杂的数据结构…

【JUC】二十三、LongAdder:多线程计数的更优解

文章目录 1、常用API2、热点商品点赞计算器3、LongAdder高性能的原理4、源码:LongAdder-add方法5、源码:LongAdder-longAccumulate方法6、源码:LongAdder-sum方法7、AtomicLong和LongAdder的对比 Since 1.8,新加原子操作增强类&am…

elementUI中的 “this.$confirm“ 基本用法,“this.$confirm“ 调换 “确认“、“取消“ 按钮的位置

文章目录 前言具体操作总结 前言 elementUI中的 "this.$confirm" 基本用法&#xff0c;"this.$confirm" 调换 "确认"、"取消" 按钮的位置 具体操作 基本用法 <script> this.$confirm(这是数据&#xff08;res.data&#xff0…

『Redis』在Docker中快速部署Redis并进行数据持久化挂载

&#x1f4e3;读完这篇文章里你能收获到 在Docke中快速部署Redis如何将Redis的数据进行持久化 文章目录 一、拉取镜像二、创建挂载目录1 宿主机与容器挂载映射2 挂载命令执行 三、创建容器—运行Redis四、查看运行情况 一、拉取镜像 版本号根据需要自己选择&#xff0c;这里以…

现代皮质沙发模型材质编辑

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

微前端 模块联邦技术

目录 介绍 基本使用 演示用法 初始化配置文件 remote 项目 host 项目 为什么讲这个呢&#xff0c;很多人觉得他不是微前端&#xff0c;也有人定义它也是微前端&#xff0c;看怎么理解了&#xff0c;我觉得他是一个去中心化技术&#xff0c;它可以让多个独立构建的应用…

pytorch的二次索引矩阵无法赋值问题

最近在研究中发现torch一个问题&#xff0c;即torch的二次索引的矩阵无法赋值。 具体来说&#xff0c;给定相同的初始常数矩阵a和iou_target矩阵, 以及另一iou矩阵&#xff0c;直接赋值是没问题的。 然而&#xff0c;当对iou_target矩阵进行二次索引时&#xff0c;即idx矩阵和…

基于AIS数据的船舶密度计算与规律研究

参考文献&#xff1a;[1]陈晓. 基于AIS数据的船舶密度计算与规律研究[D].大连海事大学,2021.DOI:10.26989/d.cnki.gdlhu.2020.001129. 谢谢姐姐的文章&#xff01; 网格化AIS数据 网格化 AIS 数据是处理和分析船舶轨迹数据的一种有效方法&#xff0c;特别是当涉及到密度计算和…

驾驭苹果的人工智慧模式:克服反击与应对挑战

苹果一年一度的秋季「春晚」时间越来越近&#xff0c;但在大模型浪潮下&#xff0c;苹果何时推出自己的「苹果GPT」成了另一个关注的话题。 毕竟&#xff0c;前有华为&#xff0c;后有小米&#xff0c;在中国手机厂商争相将大模型装进移动终端的同时&#xff0c;苹果却依旧对A…

Java Spring + SpringMVC + MyBatis(SSM)期末作业项目

本系统是一个图书管理系统&#xff0c;比较适合当作期末作业主要技术栈如下&#xff1a; - 数据库&#xff1a;MySQL - 开发工具&#xff1a;IDEA - 数据连接池&#xff1a;Druid - Web容器&#xff1a;Apache Tomcat - 项目管理工具&#xff1a;Maven - 版本控制工具&#xf…