ES集群规模与角色规划

业务场景需求

业务特征

目前日志统计分析集群具有以下关键特征:

  • 延迟要求:30秒以内
  • 并发性能:高并发读写
  • 数据容错:可容忍少量数据丢失

数据规模

  • 每日原始日志采集量:约150GB
  • 数据查询范围:
    • 近期数据:最近3天
    • 历史数据:最大查询时间7天
    • 归档数据:目前最长支持30天

在正式规划前,我们需要详细了解Elasticsearch(ES)的资源组成,以选择最合适的资源配置。

硬件设置

  • ES集群:在k8s集群下部署,3个master节点、3个hot节点,2个warm节点,1个冷节点
  • ELK版本:7.17.15

ES 性能资源分析

ES 的高性能依赖于以下四类资源:

  1. 存储:负责保存数据。
  2. 内存:用于缓存数据。
  3. 计算:处理数据操作。
  4. 网络:支持数据传输。

存储策略建议

  • 建议:优先使用 SSD,特别是搜索和索引节点。对于冷热分层架构,可以选择热节点使用 SSD,温节点和冷节点使用更经济的存储方案。
  • 最佳实践
    • 使用本地磁盘,成本低且避免网络开销。
    • 避免使用网络附加存储(NAS),例如 SMB、NFS 等,因其可能导致高延迟和存储抽象层带来的性能问题。

内存配置

内存分为两个关键部分:JVM内存和操作系统缓存

JVM内存配置

  • JVM内存建议:

    • Xms和Xmx设置必须一致

      在 jvm 的参数中 -Xms 和 -Xmx 设置的不一致,在初始化时只会初始 -Xms 大小的空间存储信息,每当空间不够用时再向操作系统申请,这样的话必然要进行一次 GC,GC会带来 STW。而剩余空间很多时,会触发缩容。再次不够用时再扩容,如此反复,这些过程会影响系统性能。同理在 MetaSpace 区也有类似的问题。

      并且如果不一样的话,es也启动不起来,会报错

      Initial heap size set to a larger value than the maximum heap size
      
    • jvm 建议不要超过 32G,否则 jvm 会禁用内存对象指针压缩技术,造成内存浪费

    • Xmx 和 Xms 不要超过物理 RAM 的50%。 参考:官方堆内存设置的建议

操作系统缓存

操作系统缓存,Elasticsearch 将使用剩余的可用内存来缓存数据(Lucene 使用), 通过避免在全文检索、文档聚合和排序环节的磁盘读取,极大地提高了性能。

计算资源

  • CPU核心数和性能决定数据操作速度和吞吐量
  • 关注线程池和线程队列配置

网络资源

  • 带宽可能成为Elasticsearch性能瓶颈
  • 大规模集群面临网络饱和风险
  • 优化建议:
    • 升级网络连接速度
    • 考虑跨集群搜索(CCS)方案

集群架构规划

架构选型

日志分析业务通常采用 热温冷 架构:

  • 热节点:用于存储近期高频访问的数据,推荐使用高速 SSD 和较高写入性能配置。
  • 温节点:存储中期数据,使用成本较低的 HDD。
  • 冷节点:用于归档长期数据,存储成本最低(如 DAS 或磁带存储)。

但是我们现状是使用nas磁盘

容量预估

计算公式
  • 原始数据与索引空间比例:1:1.1
  • 预留 15%警戒磁盘水位空间。
  • 为错误余量和后台活动预留+ 5%。
  • 保留等效的数据节点以处理故障。
存储容量计算
  • 150GB原始数据 → 150 * 1.1 = 165GB索引
  • 加1个副本后:330GB/天
  • 30天总空间:
    • 主副分片:165 * 2 * 30 = 9,900GB
    • 归档存储(0副本):165 * 30 = 4,950GB
    • 总计:14,850GB

热节点规模预估

磁盘与内存的比例有效保留期(天)需存储的数据量 (GB)所需总磁盘空间 (GB)所需总内存 (GB)
30:13330 * 3 = 990G330* 1.2 * 3 = 1188G1188/30 = 39.6

为保障数据完整性,避免单点故障,同一索引的主副分片不能位于同一节点,因此热温节点数量最少各2台。考虑到hot节点写入负载较高,为提高集群写入能力,规划三台节点,热节点的最低配置如下所示

节点CPU(核)内存(GB)数据盘(GB)es角色
hot-1414400data_content,data_hot
hot-2414400data_content,data_hot
hot-3314400data_content,data_hot

温节点规模预估

热节点上超出保留期的数据将会转移到温节点。通过计算这些节点需要存储的数据量,我们便可以预估所需的规模,计算时也需要将高磁盘水位线和后台活动预留的开销考虑在内。

磁盘与内存的比例有效保留期(天)需存储的数据量 (GB)所需总磁盘空间 (GB)所需总内存 (GB)
100:14330 * 4=1320G330* 1.2 * 4 = 1584G1584/100 = 15.84

温节点的配置如下所示

节点CPU(核)内存(GB)数据盘(GB)es角色
warm-148800data_content,data_warm
warm-248800data_content,data_warm

冷节点规模预估

温节点上超出保留期的数据将会转移到冷节点。

磁盘与内存的比例有效保留期(天)需存储的数据量 (GB)所需总磁盘空间 (GB)所需总内存 (GB)
1000:130165 * 30 =4950G165* 1.2 * 30= 5940G5940/1000 = 5.94

冷节点的配置如下所示

节点CPU(核)内存(GB)数据盘(GB)es角色
cold-1266000Gdata_content,data_cold

master节点预估

除了数据节点,我们通常还需要专用master节点,在实际生产环境建议部署3台master节点,以便提高集群的弹性和可用性。由于这些节点不处理任何流量,所以它们的规模很小,后期随着业务集群规模增长再提高配置或增加master节点数。master节点的最低配置如下所示

master节点的最低配置如下所示(生产环境建议master节点3台)

节点CPU(核)内存(GB)数据盘(GB)es角色
master28100Gmaster,ingest
master28100Gmaster,ingest
master28100Gmaster,ingest

节点资源使用

角色描述存储内存计算网络
主节点管理集群状态
数据节点存储和检索数据极高
Ingest 节点转换输入数据
协调节点请求转发和合并检索结果
机器学习节点机器学习极高极高

集群架构

在这里插入图片描述

集群调用关系

在这里插入图片描述

基准测试

至此,我们已经确定了适当的集群规模,我们接下来需要确认所得出的值在实际条件下能否成立。为了在投入生产环境之前更有把握,我们需要进行基准测试,以确认能够达到预期性能和目标 SLA。

可以参考 如何确定ES的集群规模?

参考文献

ES集群与角色规划

Elasticsearch 集群规模和容量规划

如何确定ES的集群规模?

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

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

相关文章

[Redis#14] 持久化 | RDB | bgsave | check-rdb | 灾备

目录 0.概述 持久化的策略 1 RDB 1.1 触发机制 1.2 流程说明 1.3 RDB 的优缺点 0.概述 在学习 MySQL 数据库时,我们了解到事务的四个核心特性:原子性、一致性、持久性和隔离性。这些特性确保了数据库操作的安全性和可靠性。当我们转向 Redis 时&a…

Modern Effective C++ 条款二十九三十:移动语义和完美转发失败的情况

条款二十九:假定移动操作不存在,成本高,未被使用 移动语义可以说是C11最主要的特性。"移动容器和拷贝指针一样开销小","拷贝临时对象现在如此高效,“写代码避免这种情况简直就是过早优化"。很多开…

C++【模板】plus

目录 一、非类型模板参数 1.引入 2.使用 二、模板特化 1.函数模板特化 2.特化失效 3.类模板特化 应用 三、*带模板的分离编译 一、非类型模板参数 1.引入 我们使用宏对某个变量进行定值,如 #define N10 --->那么N在下面使用时始终为10,如果…

Leetcode 每日一题 290.单词规律

目录 一、问题分析 二、解题思路 三、代码实现 四、复杂度分析 五、总结 在编程的世界里,我们常常会遇到各种有趣的字符串匹配问题。今天要探讨的就是这样一个问题:给定一种规律 pattern 和一个字符串 s,判断 s 是否遵循与 pattern 相同…

浅谈FRTC8563M实时时钟芯片

FRTC8563M是NYFEA徕飞公司推出的一款实时时钟芯片和日历芯片,采用MSOP-8封装形式。它具有低功耗特性,适用于电池供电的便携式设备。该芯片提供年、月、日、星期、小时、分钟和秒的计时功能,并且具有闹钟功能。FRTC8563M通过I2C总线与微控制器…

HOC vs Render Props vs Hooks

相关问题 什么是 HOC / Render Props / Hooks为什么需要 HOC / Render Props / Hooks如何提高代码复用性Hooks 的实现原理Hooks 相比其他方案有什么优势 关键点 复用性HOC / Render Props / Hooks 三种写法都可以提高代码的复用性,但实现方法不同: H…

【每天一篇深度学习论文】2024多级卷积模块MCM

目录 论文介绍题目:论文地址: 创新点方法模型总体架构双流编码器特征融合模块解码器 核心模块描述多尺度感知融合模块(MAFM)全局融合模块(GFM)多级卷积模块(MCM) 即插即用模块作用特…

Play with docker 使用ssh命令远程登录时Permission denied (publickey)

可以看到这里使用的是 ssh-ed25519 在本机生成对应密钥: ssh-keygen -t ed25519 -P "" -f ~/.ssh/id_ed25519 然后再尝试远程连接就好了。 参考:无法通过SSH连接到码头游乐场中的实例-腾讯云开发者社区-腾讯云

我眼中的“懂重构”(一)

初识重构 2017年的时候,领导让我看公司的一本书《重构——改善代码的既有设计》,这是一本JAVA版本的,前后看了2遍。那时候看书因为不懂看的格外仔细。我只是那时候不懂,然而多年后的今天我仍然发现很多人对重构充满误解。在刚进入…

数字图像处理(15):图像灰度反转和彩色反转

(1)图像反转:是指对图像的颜色信息进行相反的处理,从而得到一个新的图像。在计算机视觉和图像处理领域,图像反转是一种常见的操作,它可以帮助我们实现不同的图像特效和视觉效果。 (2&#xff09…

Ubuntu系统上mysql服务部署

前段时间搞了一个mysql服务端的部署,在Ubuntu系统上,中间也踩了许多坑,特此记录下。 下载 官网:MySQL :: MySQL Community Downloads 这个里面有不同系统的安装包,根据自己的系统选择,我选了 MySQL Com…

linux 服务器 一次性查看 CPU、内存和磁盘使用情况

创建 vi check_usage.sh #!/bin/bashecho " CPU 使用率 " mpstat -P ALL 1 1echo -e "\n 内存使用情况 " free -hecho -e "\n 磁盘使用率 " df -h执行授权 chmod x check_usage.sh执行查看 ./check_usage.sh这样可以快速获取系统资源的概览。…

Unity HDRP Water Surface 水系统 基础教程

Unity HDRP Water Surface 水系统 基础教程 Unity Water SurfaceUnity 项目创建Unity Water Surface:Ocean(海洋)简介Ocean:Transform、GeneralOcean:Simulation(仿真模拟)Ocean:Sim…

【Golang】Golang基础语法(三):常量

常量 Golang 语言当中常量的定义和其它语言类似。 const filename_in_package string "abc.txt" // 可以定义为包内常量func consts() {const filename string "abc.txt" // 可以为常量规定类型const a, b 3, 4 // 也可以不规定const…

Cesium-环境搭建

安装步骤 1.安装node.js 2.去Cesium官网下载源码包 other:npm install Cesium 通过这种方式装 ,没有装成功,主要错误提示说缺少gulp文件,具体错误如下 ​ [1/5] Validating package.json... [2/5] Resolving packages... success Already up-to-date. $ gulp prepare &a…

mysql基础学习1

useradd -r -g mysql -s /bin/false mysql (-r)系统用户 不能登录 A temporary password is generated for rootlocalhost: d>#jT7rfoaz) 看是否启动 看进程 端口 直接连接 看日志 varchar (20) char(20)更耗空间 create table student_info(id int,name varchar(20),s…

行业Know-How助力零售企业数字化转型|StartDT Talk

【StartDT Talk】“客户成功三要素”系列直播第三期圆满收官! 本期直播聚焦于三要素之一的“好的行业Know-How”(行业理解),由奇点云创始人行在和资深产研专家追风共同探讨与零售相关的行业知识,以及我们在零售行业的…

linux——进程间通信system V消息队列

Linux——命名管道及日志-CSDN博客 文章目录 目录 文章目录 前言 一、system V消息队列是什么? 二、相关库接口 1.shmget接口 2、ftok接口 3、shmget、ftok接口封装 4、共享内存操作 ​编辑 5、shmdt接口 三.函数的调用 1、查看共享内存 2、shell 四…

【Redis】not support: redis

1、查看redis进程 2、查看是否安装redis扩展,此处以宝塔为例

网站维护记录

服务器重启,网站打不开:chown -R manager:manager /run/php-fpm/www.sock wordpress升级需设置ftp: // 设置权限0777 //define("FS_METHOD", "direct"); //define("FS_CHMOD_DIR", 0777); //define("…