Elasticsearch:Elasticsearch 容量规划

news2025/1/15 20:03:20

Elasticsearch 是一个可扩展的分布式系统,可为企业搜索、日志聚合、可观察性和安全性提供解决方案。 Elastic 解决方案建立在一个单一、灵活的技术堆栈之上,可以部署在任何地方。 要在自托管或云端运行生产环境 Elasticsearch,需要规划基础架构和集群配置,以确保健康且高度可靠的性能部署。在本文中,我们将重点介绍如何在部署生产级集群之前根据使用量估算和创建一个实施计划。

容量规划

  • 确定最小主节点数
  • Elasticsearch Service 的规模

确定主节点的最小数量

主节点,也即 master node。有关 master node 的作用我们在文章 “Elasticsearch 中的一些重要概念: cluster, node, index, document, shards 及 replica” 已经讲过。集群中最重要的节点是Master节点。 主节点负责集群范围内的各种活动,例如创建、删除、分片分配等。稳定的集群取决于主节点的健康状况。

建议拥有专用主节点(不具有其它的任何角色),因为具有其他职责可能造成超载主节点将使得主节点无法正常运行。 避免 master 因其他任务而超载的最可靠方法是将所有符合 master 资格的节点配置为专用的符合 master 资格的节点,这些节点仅具有 master 角色,从而使它们能够专注于管理集群。

轻量级集群可能不需要 master-eligible 资格的节点,但一旦集群超过 6 个节点,建议使用专用的 master-eligible 节点。选择最小主节点时的决策法定节点数(quorum)使用以下公式计算:

 Minimum Master Nodes = (N / 2) + 1

N 是集群中 master-eligible 节点的总数(四舍五入到最接近的整数)

在理想的环境中,主节点的最小数量为 3,如果不维护,可能会导致 “脑裂”,从而导致集群不健康和数据丢失。

让我们考虑以下示例以更好地理解:

场景 A

在场景 A 中,你有 10 个常规节点(既可以保存数据又可以成为 master 的节点),quorum 为 6。即使我们由于网络连接而失去 master 节点,集群也会选举一个新的 master 并且仍然是健康。

场景 B

在场景 B 中,你有 3 个专用主节点和 100 个数据节点,法定节点数 quorum 为 2。即使我们因故障失去主节点,集群也会选举一个新的主节点并且仍然是健康的。

场景 C

在场景 C 中,你有两个常规节点,quorum 为 2。如果节点之间出现网络故障,那么每个节点都会尝试选举自己作为 Master,从而使集群无法运行。

将值设置为 1 是允许的,但它不能保证在主节点出现故障时不会丢失数据。

注意:避免重复更改主节点设置,因为当服务尝试更改专用主节点的数量时,这可能会导致集群不稳定。

Elasticsearch Service 的规模

Elasticsearch Service 的规模调整更多的是做出有根据的估计,而不是有一个万无一失的方法。 估计更多的是考虑到存储、要使用的服务和 Elasticsearch 本身。 该估计可作为确定大小的最关键方面的有用起点; 用具有代表性的工作负载测试它们并监控它们的性能。

以下是在调整大小之前要记住的关键部分:

  • 用例,(即)用于实时搜索或安全监控、日志分析等。
  • 长期和短期的增长规划

由于 Elasticsearch 是横向可扩展的,如果在初始阶段没有适当地进行适当的索引和分片,那么将不得不通过痛苦的批准来添加硬件,最终将导致基础设施利用率不足。

在选择适当的集群设置之前要记住的三个关键组成部分如下:

  • 计算存储要求
  • 选择分片数量
  • 选择实例类型和测试

选择分片数量

要考虑的第二个组成部分是为指数选择正确的索引策略。 在 Elasticsearch 中,默认情况下,每个索引都分为 n 个主副本。 (例如,如果有 2 个主分片和 1 个副本分片,则分片总数为 4)。 现有索引的主分片数量一旦创建就无法更改。有关分片方面的知识,请参阅   “Elasticsearch 中的一些重要概念: cluster, node, index, document, shards 及 replica”。

每个分片都使用一定数量的 CPU 和内存,拥有太多小分片会导致性能问题和内存不足错误。 但这也不能使人有权创建太大的分片。

经验法则是确保分片大小始终在 10–50 GiB 之间。

分片数量的大致计算公式如下:

App. Number of Primary Shards = 
(Source Data + Room to Grow) * (1 + Indexing Overhead) / Desired Shard Size

简单来说,分片大小应该很小,但不能小到底层 Elasticsearch 实例不会对硬件造成不必要的压力。

让我们考虑以下示例以更好地理解:

场景一

假设你有 50 GiB 的数据,并且你不希望它随着时间的推移而增长。 根据上面的公式,分片的数量应该是 (50 * 1.1 / 30) = 2。

注意:选择的所需分片大小为 30 GiB

场景二

假设相同的 50 GiB 预计到明年将翻两番,那么近似的分片数量将为 ((50 + 150) * 1.1 / 30) = 8。

即使我们不会立即拥有额外的 150 GiB 数据,重要的是要注意准备工作最终不会创建多个不必要的分片。 如果您还记得之前的话,分片会消耗大量的 CPU 和内存,在这种情况下,如果我们最终创建小分片,这可能会导致目前的性能下降。

将上述分片大小设为 8,让我们进行计算:(50 * 1.1) / 8 = 每个分片 6.86 GiB。

分片大小远低于建议的大小范围 (10–50 GiB),这最终会消耗额外的资源。 为了解决这个问题,我们应该更多地考虑 5 个分片的中间地带方法,目前有 11 GiB (50 * 1.1 / 5) 个分片和 44 GiB ((50 + 150) * 1.1 / 5) 个分片 未来。

在上述两种方法中,分片大小都是近似值而不是合适的。

非常重要的是要注意,永远不要选择合适的值来设定大小,因为在达到我们设置的阈值限制之前,你就有磁盘空间用完的风险。 例如,让我们考虑一个磁盘空间为 128 GiB 的实例。 如果磁盘使用率保持在 80% (103 GiB) 以下并且分片大小为 10 GiB,那么我们大约可以容纳 10 个分片。

注意:在给定节点上,建议每个 GiB Java 堆中的分片不超过 20 个。

选择实例类型和测试

在计算了存储需求并选择了所需的分片数量之后,下一步就是做出硬件决策。 硬件要求因工作负载而异,但我们可以进行猜测。 通常,每个实例类型的存储限制映射到你的工作负载可能需要的 CPU 和内存量。

在选择正确的实例类型时,以下公式有助于更好地理解:

Total Data (GB) = Raw data (GB) per day * Number of days retained * (Number of replicas + 1)
Total Storage (GB) = Total data (GB) * (1 + 0.15 disk Watermark threshold + 0.1 Margin of error)
Total Data Nodes = ROUNDUP(Total storage (GB) / Memory per data node / Memory:Data ratio)

为了更好地理解公式,让我们考虑以下示例:

选择正确的实例类型

日志记录应用程序每天推送近 3 GiB 数据,数据保留期为 90 天

你可以为这个小型部署使用每个节点 8GB 的内存。 让我们算一下:

总数据 (GB) = 3GB x(3 x 30 天)x 2 = 540GB
总存储空间 (GB)= 540GB x (1+0.15+0.1) = 675GB
总数据节点 = 675GB 磁盘 / 8GB RAM /30 比率 = 3 个节点。

总结到目前为止我们所看到的一切。

更多阅读:

  • Elasticsearch:我的 Elasticsearch 集群中应该有多少个分片?

  • Elasticsearch:如何部署 Elasticsearch 来满足自己的要求

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

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

相关文章

删除注册表配置后Chrome仍然显示“由贵单位管理”解决办法

这个提示并不影响使用,但是强迫症看着就是难受,搞掉他。 现象 找到是谁触发的 浏览器输入并打开chrome://policy/ 其实看不看意义不大,因为你知道了也奈何不了他。 解决问题 使用百度搜索一下都是提供的删除注册表的方法(通过…

【C++技能树】NameSpace --命名空间的使用

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

burpsuite抓包数据分析

以抓到的pikachu的数据为例: POST /pikachu/vul/burteforce/bf_form.php HTTP/1.1 # POST请求 被抓包的文件 http协议是1.1 Host: www.xxx.com #Host是主机 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101Firefox/49.0 #user-agent是…

【C陷阱与缺陷】两道“有趣”的代码题

如果读者不了解函数指针的&#xff0c;可以先看看这篇文章 链接 < 第一题 > 代码&#xff1a; (*(void (*)())0)();解析&#xff1a; &#x1f4ac;如果你是头一次看上面这段代码的话&#xff0c;心里一定是一个大大的问号&#xff1f;&#xff1f;&#xff1f;现在我…

C++的输入输出概述

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

前缀和2:2615等值距离和

2615. 等值距离和 - 力扣&#xff08;LeetCode&#xff09; 做这道题之前&#xff0c;先完成1685. 有序数组中差绝对值之和 - 力扣&#xff08;LeetCode&#xff09; 一般性的&#xff0c;我们能在这类题目中总结出以下规律&#xff1a; 求解有序数组中每个元素与q的差值res时…

Traceroute的原理及应用挑战

1 Traceroute简介 Traceroute 是继 ping 之后使用最广泛的网络诊断工具之一&#xff0c;因为它简单且应用范围非常广泛。 traceroute 的可能应用范围从简单的网络错误诊断到揭示底层网络拓扑的大型扫描。然而&#xff0c;由于 traceroute 不是在考虑现代网络技术的情况下构建的…

让你轻松入门APP自动化测试:UiAutomator2框架基础解析

目录 前言 一、uiautomator/uiautomator2的前生今世 1.官方文档介绍 2.梳理一下脉络 3.三款框架对比 二、uiautomator2简介 1.项目组成 2.工作原理 三、环境搭建 1.安装uiautomator2 2.初始化设备 3.init时都干了啥&#xff1f; 四、基础操作 1.连接设备 2.命令…

IEEE SPL | 基于图注意力机制的音频语意概述

本文由哈工程智能信号处理组与悉尼科技大学、萨里大学合作&#xff0c;发表于IEEE信号处理学会期刊IEEE Signal Processing Letters&#xff0c;论文一作为2020级硕士研究生肖飞扬。 论文链接&#xff1a;https://arxiv.org/abs/2304.03586 论文代码&#xff1a;https://github…

GPT 任务指令 = 定义角色 + 背景信息 + 任务目标 + 输出要求

GPT 任务指令 定义角色 背景信息 任务目标 输出要求 环境 GPT-4 0. 你是一名专业的导游&#xff0c;负责为我生成旅游计划&#xff0c;现在我来北京旅游&#xff0c;需要你为我生成一份 3天2晚的北京旅游规划。我的要求是&#xff1a;1.地点包括故宫、军播和环球影城。 2…

你一定能看懂的SQL事务及其实现原理

一。概念 事务 是数据库执行原子操作的基本单位。一个事务中的多个修改&#xff0c;则要么全部成功执行&#xff0c;要么全部不执行。 关于事务的 MYSQL 官网的解释 Transactions are atomic units of work that can be *committed* or *rolled back*. When a transaction ma…

substrate实例-基于OCW发送一个签名交易

目录标题 1. 获取substrate-node-template代码2. 添加一个用于测试的ocw-test目录至pallets3. 编写ocw-test/src/lib.rs代码3.1 需要用到的包名的引用3.2 模块crypto的实现3.3 mode pallet 的实现-config、storage、event3.4 mode pallet 的实现-call3.5 mode pallet 的实现-ho…

整理的汉字及拼音、编码数据文件,依据拼音声母进行归类共计2万多条

本篇文章主要讲解自己整理的汉字拼音数据资源的下载及使用方法。 资源截图 包含&#xff1a;sql、xls、txt、json等格式文件 汉字涵盖&#xff1a;多音字、生僻字 下载地址&#xff1a;https://download.csdn.net/download/hj960511/87705416 使用方法 步骤一、下载资源包&…

七、使用arcgis对道路结果进行后处理及iou优化步骤详解

最近在研究对道路的后处理 废话不多说 直接放我的教程了 分别对real真实和predict预测的图片进行镶嵌操作 教程在这里 工具在这里 结果如下 矢量化提取道路中心线 经过很多尝试 arcscan是提取效果最好的一个方法&#xff0c;操作见这 或者这里这篇文章注解更详细一点&am…

问题汇总1

问题汇总 Linux相关1. vim 修改挂载文件时 报错 read-only filesystem2.root 用户密码无法更改3.linux 用户被锁定4.linux 查看登录日志其他小问题 Windows 相关1.添加 删除 默认路由2.exel合并单元格 添加 分隔符 Linux相关 1. vim 修改挂载文件时 报错 read-only filesystem …

Linux namespace

​ 前言 从《initrd&init进程》可知&#xff0c;我们通过ssh连接linux服务器&#xff0c;其实主是linux启动一shell进程与我们做交互。而Linux又是多租户的&#xff0c;这使用得用户与用户间产生了&#xff0c;资源的争抢。 如何隔离资源&#xff0c;且让用户都无法察觉&…

SpringBoot项目实现热部署

文章目录 SpringBoot实现热部署手动开启热部署自动开启热部署热部署相关配置 SpringBoot实现热部署 什么是热部署&#xff1f; 所谓热部署&#xff0c;就是在应用正在运行的时候升级软件&#xff0c;却不需要重新启动应用。对于Java应用程序来说&#xff0c;热部署就是在运行时…

初学数据库

1、什么是数据库 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的API用于创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索和复制所保存的数据。 我们也可以将数据存储在文件中&#xff0c;但是在…

企业级实践:大厂项目研发流程

引言 战国邹孟轲《孟子离娄上》&#xff1a;“离娄之明&#xff0c;公输子之巧&#xff0c;不以规矩&#xff0c;不能成方圆。” 每一个行业都有自己行之有效的规矩&#xff0c;同样软件行业也有自己一套的开发流程&#xff0c;今天就来跟大家聊一聊咱们公司的开发流程&#…

智能修改文案-智能写作平台

智能原创自动写作工具在线 随着人工智能技术的发展&#xff0c;智能原创自动写作工具在线已经成为了网络营销的一个重要工具。这种工具可以根据您输入的关键词和主题&#xff0c;自动生成高质量、原创性强的文章。下面是智能原创自动写作工具在线的优势。 节省时间和人力成本 …