Elasticsearch部署前准备(选机器)

2023-11-05

部署Elasticsearch前对硬件的准备

 

1、CPU上的选择

在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。常见的集群使用两到八个核的机器

 

 

2、硬盘上的选择

*如果你负担得起 SSD,它将远远超出任何旋转介质(注:机械硬盘,磁带等)。 基于 SSD 的节点,查询和索引性能都有提升。如果你负担得起,SSD 是一个好的选择。

如果你使用旋转介质,尝试获取尽可能快的硬盘(高性能服务器硬盘,15k RPM 驱动器)

 

*I/O 调度算法的选择,大多数默认 *nix 发行版下的调度程序都叫做 `cfq`(完全公平队列)它是为旋转介质优化的,但对 SSD 来说deadline 或者 noop磁盘IO调度算法 应该被使用。

这意味着使用普通的机械硬盘不用改调度算法。如果使用了SSD磁盘,调度算法最好改成noophttps://www.cnblogs.com/cobbliu/p/5389556.html)。更改磁盘IO调度算法如下:

1>查看当前调度算法

cat /sys/block/sda/queue/scheduler

2>更改算法

echo 'noop' >  /sys/block/sda/queue/scheduler

 

*使用 RAID 0 是提高硬盘速度的有效途径,对机械硬盘和 SSD 来说都是如此。没有必要使用镜像或其它 RAID 变体,因为高可用已经通过 replicas 内建于 Elasticsearch 之中。虽说提供了高可用功能,集群在少量机器故障后仍能继续正常运行,但这是有代价的(集群的再平衡、分片的生成、都会给网络和磁盘造成巨大压力,给系统带来性能和稳定性的影响,更不要说还要再次更换硬盘,会再一次造成系统的压力)。所以对于一个对性能和稳定性要求较高,并且易于维护的场景来说使用RAID10还是不错的。不差那点钱。需要注意一点一定要避免使用NAS存储设备,因为它还是太慢了

 

3、网络上的要求

快速可靠的网络显然对分布式系统的性能是很重要的 低延时能帮助确保节点间能容易的通讯,大带宽能帮助分片移动和恢复。现代数据中心网络(1 GbE, 10 GbE)对绝大多数集群都是足够的。

即使数据中心们近在咫尺,也要避免集群跨越多个数据中心。绝对要避免集群跨越大的地理距离。

Elasticsearch 假定所有节点都是平等的--并不会因为有一半的节点在150ms 外的另一数据中心而有所不同。更大的延时会加重分布式系统中的问题而且使得调试和排错更困难。

 

4、内存方面的要求

*Elasticsearchjava开发的。因此对内存方面的要求涉及到java虚拟机的一些特性。

JVM简介看下边的链接)

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_monitoring_individual_nodes.html#garbage_collector_primer

 

看了上边链接可以知道,java虚拟机分配堆内存给应用(Elasticsearch,这个 堆内存是由新生代和老生代组成,老生代分配内存可到30G,新生代通常就100-500M。因此在垃圾回收的时候(垃圾回收主要是老生代,因为它太大了。回收一次代价比较大)会发生“停止时间”环节,这个停止时间是非常要命的,对ES集群稳定性有很大影响(如果时间太长,相当于机器故障,是会发生集群再平衡的)。

 

*上边说了那么多,就是想知道到底配个多大的内存?

(请看下方链接)

https://www.elastic.co/guide/cn/elasticsearch/guide/current/heap-sizing.html

看完之后得出结论:64GB的内存最合适,分给Elasticsearch30-31G,剩下的都给Lucene缓存“段”,可以加快搜索性能。

 

*当然没有64GB内存机器,32G也勉强凑活,把一半的可用内存分给Elasticsearch,剩下的给Lucence即可。

什么?你很有钱上百G内存、1TB内存?怎么办,太有钱了也不好办,解决方式如下:

1>你主要做全文检索吗?考虑给 Elasticsearch 4 - 32 GB 的内存, 让 Lucene 通过操作系统文件缓存来利用余下的内存。那些内存都会用来缓存 segments,带来极速的全文检索。

你需要更多的排序和聚合?而且大部分的聚合计算是在数字、日期、地理点和 非分词 字符串上?你很幸运,你的聚合计算将在内存友好的 doc values 上完成! 给 Elasticsearch 4 32 GB 的内存,其余部分为操作系统缓存内存中的 doc values(所有机器还是按照给ES分配30-31G内存其余给Lucence即可)

 

2>你在对分词字符串做大量的排序和聚合(例如,标签或者 SigTerms,等等)不幸的是,这意味着你需要 fielddata,意味着你需要堆空间。考虑在单个机器上运行两个或多个节点,而不是拥有大量 RAM 的一个节点。仍然要坚持 50% 原则。

假设你有个机器有 128 GB 的内存,你可以创建两个节点,每个节点内存分配不超过 32 GB。 也就是说不超过 64 GB 内存给 ES 的堆内存,剩下的超过 64 GB 的内存给 Lucene

如果你选择这一种,你需要配置 cluster.routing.allocation.same_shard.host: true 。 这会防止同一个分片(shard)的主副本存在同一个物理机上(因为如果存在一个机器上,副本的高可用性就没有了)。(所有这些机器上布置2个以上的ES实例,每个实例30-32G其余给Lucence,并配置副本与主分片不在一个物理机器上。不要告诉我你只有一台上百G内存的机,一个正常且稳定性好的集群至少3台机器)

 

 

 

 

 

5、至少几台机器?

至少3台,多多益善。

(参看下方链接地址中“最小主节点数位置”)

https://www.elastic.co/guide/cn/elasticsearch/guide/current/important-configuration-changes.html

由此可见,3个节点才可以最大限度防止脑裂情况的发生,对于一个对稳定性要求很高,数据一致性要求高的场景,最少要有3个节点。

 

 

6、总则

获取真正的高配机器在今天是可能的: 成百 GB RAM 和几十个 CPU 核心。 反之,在云平台上串联起成千的小虚拟机也是可能的。哪种方式是最好的?通常,选择中配或者高配机器更好。避免使用低配机器, 因为你不会希望去管理拥有上千个节点的集群,而且在这些低配机器上运行 Elasticsearch 的开销也是显著的。与此同时,避免使用真正的高配机器。它们通常会导致资源使用不均衡(例如,所有的内存都被使用,但 CPU 却没有)而且在单机上运行多个节点时,会增加逻辑复杂度。

 

 

参看网址:https://www.elastic.co/guide/cn/elasticsearch/guide/current/deploy.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch部署前准备(选机器) 的相关文章

随机推荐

  • Layui之选项卡案例 详细易懂

    本期精彩 利用Layui框架实现动态选项卡 继上一篇已经实现了左边的树形菜单栏 这一关卡我们已通过 接下来就是实现右边的动态选项卡的关卡 上个关卡的效果及链接 链接 http t csdn cn tYccL 目录 本期精彩 利用Layui框
  • Android JNI开发从0到1,java调C,C调Java,保姆级教程详解

    前些天发现了一个蛮有意思的人工智能学习网站 8个字形容一下 通俗易懂 风趣幽默 感觉非常有意思 忍不住分享一下给大家 点击跳转到教程 第一步首先配置Android studio的NDK开发环境 首先在Android studio中下载NDK
  • 3.5.1 ASM规划及实现

    最后更新2021 08 14 AMS规划 规划涉及到几个参数 它们之间互相影响 如果需要修改其中一个 注意是否需要同时修改其它几个 下面是几个重要参数及其概念 Memory Pool size共享内存池的大小 使用同一共享内存池的分区数量
  • 贷后联动管控指标与差异化案件的分配逻辑

    在风控精细化运营的当下 贷后工作的开展 越来越需要精细化管理 如何做好相关的精细化管理工作 首先我们从这些贷后相关的名词如下开始熟悉 贷后基本催收名词解释 Flow Rate 迁移率就是在贷后资产评估里最重要的报表了 比如计算M0到M1的迁
  • shell脚本获取当前ip地址

    需求 shell脚本里我需要根据不同的ip地址做出不同的操作 因此我需要在shell脚本里获取当前主机的ip地址 我需要获取到192 168 1 111这个ip地址 方法1 ifconfig grep inet 地址 grep 192 16
  • (十五)视频处理、不用事先训练

    十五 视频处理 不用事先训练 本文的代码的功能是 可以对人物视频进行操作 不用预先耗时训练模型 效率极高 可进行视频处理 使用了人工智能的算法 注 请移步最新博文 十八 一 主要功能 以下的Python代码的功能 选择视频 主要包括 1 对
  • 图解数据结构与算法-搜索与回溯

    前言 本博客是leetcode上图解算法数据结构 LeetBook 力扣 LeetCode 全球极客挚爱的技术成长平台的刷题记录 可能存在错误 仅供参考 主要记录刷题过程的思路 错误 代码以及总结 更详细的解答可以直接看上面这本书 如发现错
  • 最小生成树之克鲁斯卡尔算法

    目录 前言 一 克鲁斯卡尔算法构造过程 二 算法实现 1 辅助结构体 数组 2 算法核心 3 排序函数 总结 前言 承接上文普里姆算法 这里的克鲁斯卡尔算法是解决最短联通路径的另一种算法 细节就不多概述了 思想都是一样的 知识解决问题的出发
  • 大数和代码实现(不使用BigInteger)

    代码实现如下 import java util Scanner public class BigSum public static void main String args String num1 getNumber String num
  • openwrt frpc问题

    1 frpc ssh多个进程可能失败 只保留一个进程就ok 2 自启动方法init d可能无效 openwrt system scheduled tasks 1 etc init d frpc start 2 gt dev null
  • 某市出租车,起步价(2 公里以内)为 8 元,超过 2 公里的按照每公里 4.5 元计算。要求根据路程计算费用。

    public class Task 10101003 01 public static void main String args Scanner input new Scanner System in double sum 0 总费用 d
  • C++,引用和指针

    引用指的是对什么的引用 是地址引用吗 这不和指针一样吗 引用 Reference 是C 中一种特殊的变量类型 它可以被看作是对另一个变量的别名 即某个变量的引用 引用不是地址引用 它是在语法层面提供的一种更直观 更安全的方式来访问和修改其他
  • echarts折现图的点击事件===非常简单哦,直接在后面加事件

    先看效果图吧 一般我们echars的折现图设置点击事件时 只能点击那个点 特别的不方便 在这里我们在用一种方法让他可以划过点击 可以打印看下得到的数据 myChart setOption option true myChart getZr
  • R语言之基础数据管理(下)

    1 类型转换 R语言中数据类型判断及转换函数 判 断 转换 is numeric as numeric is character as character is vector as vector is matrix as matrix is
  • 【科普贴】LDO电源详解

    一 LDO结构和工作原理 LDO 全称是 Low Dropout Regulator 低压差线性稳压器 其中核心部件是工作在线性区域的调整管 如下图中的VT MOS管 LDO由VT 放大器 反馈电阻等部分组成 如上图所示 通过R1和R2电阻
  • 免费App开发解决方案 一键生成App

    Mob App工厂 顾名思义指生产App的一个工厂 这个工厂目前能生产四种类型的App模板 新闻类App 商城类App 社交类App WordPress 可大量生产不同种类App 满足多种行业需求 Mob App 工厂依托于Mob开发者平台
  • Business Cycle 【UVALive - 7501】【二分答案+思维处理】

    题目链接 14年的EC 银牌题 但是现在的大牛们进步神速 估计如今已经是道铜牌题了 具体我们先讲一下题意 一个长度为N的自环圈 每个点 1 N 上有自己对应的权值 可能为负数 我们用一个初始值进入这个环 每次走到一个节点的时候会加上这个节点
  • firefox 不识别background-position-y / background-position-x

    火狐不识别background position y 或background position x 案例 页面 背景图 一列按钮 点击时让当前背景图的background position y 0 最初设置成如下这样 发现火狐点击不起作用
  • 换思路解决小程序page设定背景图片fixed导致页面不能滑动(小程序设置背景图片)

    暂时没有什么办法 记录着先 参考了这篇博文的办法 https blog csdn net qq 44532195 article details 105933485 按照这篇文章 在每一个页面开头加上这段代码
  • Elasticsearch部署前准备(选机器)

    部署Elasticsearch前对硬件的准备 1 CPU上的选择 在更快的 CPUs 和更多的核心之间选择 选择更多的核心更好 多个内核提供的额外并发远胜过稍微快一点点的时钟频率 常见的集群使用两到八个核的机器 2 硬盘上的选择 如果你负担