探究 | Elasticsearch集群规模和容量规划的底层逻辑

论坛 期权论坛     
匿名技术用户   2021-1-15 13:53   733   0
<div id="js_content">
<h1>0、引言</h1>
<p>实战中经常遇到的问题:</p>
<p><strong>问题 1</strong>:请问下大家是如何评估集群的规模?比如数据量达到百万,千万,亿万,分别需要什么级别的集群,这要怎么评估?</p>
<p>ps:自己搭建的测试环境很难达到这一级别。</p>
<p><strong>问题 2</strong>:</p>
<p style="text-align: center"><img src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-6e1913e23e2d6158409a1e6ce222e492"></p>
<p><strong>问题 3</strong>:我看了很多文章关于 es 集群规划的文章,总感觉乱七八糟的,没有一个统一的规划思路。如何根据硬件条件和数据量来规划集群,设置多少节点,每个节点规划多少分片和副本?</p>
<p>Elasticsearch 集群规模和容量规划:是进行 Elasticsearch 集群部署前对所需资源类型和数量的规划。</p>
<p>通过本文,您将了解:</p>
<ul><li><p>Elasticsearch 计算资源详解</p></li><li><p>Elasticsearch 架构、增删改查操作和资源需求</p></li><li><p>Elasticsearch 集群规模和容量规划的方法论</p></li></ul>
<h1>1、Elasticsearch 基础架构</h1>
<h2>1.1 自顶向下的架构体系<img src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-ea112812cab44e8f73a3f591e57d91f8"></h2>
<ul><li><p>Cluster—协同工作的节点组,以保障 Elasticsearch 的运行。</p></li><li><p>Node—运行 Elasticsearch 软件的 Java 进程。</p></li><li><p>Index—一组形成逻辑数据存储的分片的集合。</p></li><li><p>Shard—Lucene 索引,用于存储和处理 Elasticsearch 索引的一部分。</p></li><li><p>Segment—Lucene 段,存储了 Lucene 索引的一部分且不可变。</p></li><li><p>Document—条记录,用以写入 Elasticsearch 索引并从中检索数据。</p></li></ul>
<h2>1.2 节点角色划分及资源使用情况</h2>
<table><thead><tr><th>角色</th><th>描述</th><th>存储</th><th>内存</th><th>计算</th><th>网络</th></tr></thead><tbody><tr><td>数据节点</td><td>存储和检索数据</td><td>极高</td><td>高</td><td>高</td><td>中</td></tr><tr><td>主节点</td><td>管理集群状态</td><td>低</td><td>低</td><td>低</td><td>低</td></tr><tr><td>Ingest 节点</td><td>转换输入数据</td><td>低</td><td>中</td><td>高</td><td>中</td></tr><tr><td>机器学习节点</td><td>机器学习</td><td>低</td><td>极高</td><td>极高</td><td>中</td></tr><tr><td>协调节点</td><td>请求转发和合并检索结果</td><td>低</td><td>中</td><td>中</td><td>中</td></tr></tbody></table>
<p><strong>划重点</strong>:对资源利用率拿不准的,多结合业务实际看看这个表格。</p>
<h1>2、维系 Elasticsearch 高性能的资源组成</h1>
<p>4 个基本的计算资源 存储、内存、计算、网络</p>
<p><img src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-e7928446cb210dd1393c473a02c58348"></p>
<h2>2.1 存储资源</h2>
<h3>2.1.1 存储介质</h3>
<ul><li><p>固态硬盘(SSD) 提供最佳“热”工作负载的性能。</p></li><li><p>普通磁盘(HDD) 成本低,用于“暖”和“冷”数据存储。</p></li></ul>
<p>注意:RAID0 可以提高性能。RAID 是可选的,因为 Elastic 默认为 N &#43; 1 分片复制策略。</p>
<p>为了追求硬件级别的高可用性,可以接受标准性能的 RAID 配置(例如 RAID 1/10/50 等)。</p>
<h3>2.1.2 存储建议</h3>
<ul><li><p>建议直接使用:附加存储(DAS)、存储区域网络(SAN)、超融合存储(建议最低3Gb / s,250Mb / s)</p></li><li><p>避免使用:网络附加存储(NAS)</p><p>例如 SMB,NFS,AFP。使用时可能带来的性能问题:网络协议的开销,延迟大和昂贵的存储抽象层。</p></li></ul>
<h2>2.2 内存资源</h2>
<h3>2.2.1 JVM Heap</h3>
<p>存储有关集群索引、分片、段和 fielddata 数据。</p>
<p>建议:可用 RAM 的 50%,最多最大 30GB RAM,以避免垃圾回收。</p>
<p>官方文档最大指 32 GB:</p>
<p><em>https://www.elastic.co/guide/en/elasticsearch/guide/master/heap-sizing.html</em><em></em></p>
<h3>2.2.2 操作系统缓存</h3>
<p>Elasticsearch 将使用剩余的可用内存来缓存数据(Lucene 使用), 通过避免在全文检索、文档聚合和排序环节的磁盘读取,极大地提高了性能。</p>
<h2>2.3 计算资源</h2>
<p><em>Elasticsearch 如何使用计算资源?</em></p>
<p>Elasticsearch 处理数据的方式多种多样,但计算成本较高。</p>
<p>可用的计算资源:线程池、线程队列。</p>
<p>CPU 内核的数量和性能:决定着计算平均速度和峰值吞吐量。</p>
<h2>2.4 网络资源</h2>
<p><em>Elasticsearch 如何使用网络?</em>小带宽是限制 Elasticsearch 的资源。</p>
<p>针对大规模集群,ingest、搜索和副本复制相关的数据传输可能会导致网络饱和。</p>
<p>在这些情况
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP