管理监控和部署
date
Aug 4, 2021
slug
elasticsearch-guide-monitor-deploy
status
Published
tags
Elasticsearch
读书
summary
type
Page
监控
Marvel 监控程序
查看具体每一个索引的健康情况
单节点状态
可以看到此节点上的索引大小、查询总数、操作系统指标、JVM 指标等
查看等待中的任务
部署
机器配置
内存:Lucene 大量利用磁盘,而 Elasticsearch 利用内存做排序,内存 8G-64G,不要少于 8G
CPU:Elasticsearch 不是特别依赖 CPU,没太多要求。
硬盘:使用 SSD,或 RAID 0,避免使用网络附加存储 NAS,其延时更高。
网络:尽可能低的延时
总结:选用中高配,不要选低配。
重要的配置
指定名字
配置集群名,避免误加入到其他集群。配置节点名,节点名默认每次启动会随机分配,指定名字便于定位和排查。
路径配置
将数据路径、日志路径、插件路径配置到安装路径之外,避免重装覆盖等问题,还可以挂在额外磁盘扩容:
最小主节点数
minimum_master_nodes
主要是为了避免脑裂的情况,即集群中出现多个 master 节点。此配置告诉 Elasticsearch 在候选节点不够时,就不要选举,解决问题的一种方式是不让问题有出现的可能。此设置应该始终被配置为 master 候选节点的法定 quorum 个数(大多数个)。法定个数就是
( master 候选节点个数 / 2) + 1
。 这里有几个例子:- 如果你有 10 个节点(能保存数据,同时能成为 master),法定数就是
6
。
- 如果你有 3 个候选 master 节点,和 100 个 data 节点,法定数就是
2
,你只要数数那些可以做 master 的节点数就可以了。
- 如果你有两个节点,你遇到难题了。法定数当然是
2
,但是这意味着如果有一个节点挂掉,你整个集群就不可用了。 设置成1
可以保证集群的功能,但是就无法保证集群脑裂了,像这样的情况,你最好至少保证有 3 个节点。
配置文件:
由于集群节点可能是动态的,还可以通过 API 来调整配置:
集群恢复相关
在节点没有全部上线时就进行数据恢复和移动是无意义的,可以限制在多少个节点上线后才开始做数据恢复:
节点如何加入集群:单播替代多播去发现节点
新节点启动时,通过配置中的
discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
来指定集群中部分节点,新节点通过单播尝试连接这些节点,一旦成功,新节点会同步整个集群信息。新的配置名叫做 discovery.seed_hosts
,但老的配置名还兼容支持堆内存
Elasticsearch 堆内存默认 1G 太小,建议 10G-32G。
./bin/elasticsearch -Xmx10g -Xms10g
,另外记得要给 Lucene 留一些空间。禁用 swapping
禁用系统的内存交换 swapping ,或是降低 swapping 的值,或是通过配置 Elasticsearch,让 JVM 锁住内存,禁止交换。
bootstrap.mlockall: true
足够的文件描述符
Elasticsearch 节点与客户端的连接需要大量 socket,Lucene 也用到了大量的文件,所以描述符要预留够。
部署后
动态修改配置
分临时性修改 transient 和永久性修改 persistent,当整个集群重启后,临时性修改就失效了,而永久性修改则不会。
临时修改日志等级
通过日志排查问题时可能会调整日志等级:
慢日志
可在创建索引时设置,可以配置在配置文件中。
科学的测试性能
测试方法:
- 在单个节点上,对单个分片,无副本的场景测试性能。
- 在 100% 默认配置的情况下记录性能结果,这样你就有了一个对比基线。
- 确保性能测试运行足够长的时间(30 分钟以上)这样你可以评估长期性能,而不是短期的峰值或延迟。一些事件(比如段合并,GC)不会立刻发生,所以性能概况会随着时间继续而改变的。
- 开始在基线上逐一修改默认值。严格测试它们,如果性能提升可以接受,保留这个配置项,开始下一项。
一些提高性能的技巧
- 如果搜索不需要近实时,可以把索引的
index.refresh_interval
改到 30s,减少段的生成次数。
- 如果需要大批量导入数据,导入期间可以将
index.refresh_interval
设置 -1 关掉刷新,导入完成后再开启。
- 另外大量导入数据时,还可以设置
index.number_of_replicas: 0
关闭副本,因为文档在复制时每个副本都会重复执行分析、索引及合并。可以在导入完成后再开启,直接同步结果。
延迟分片分配
某些时候会存在分片所在的节点会瞬时中断但又很快恢复的情况,如果此时集群中 master 一旦发现分片下线就立刻提升副本,接着在集群中开始均衡数据,往往成本很高,得不偿失。可以选择延迟分片分配,默认集群会等待 1 分钟来看节点是否会重新加入,下方是修改默认时间
如果在均衡期间节点恢复了,Elasticsearch 会此节点上分片数据与其主分片数据是否一致,如果一致 master 则会取消均衡。
重启集群的步骤
- 集群停写
- 禁止再平衡缺失的分片
- 重启单个节点
- 重新开启分片再平衡
- 重复以上步骤至所有节点
备份集群
配置中指定备份仓库位置:
创建一个备份仓库
备份相关操作:
从快照备份恢复数据 recovery
在快照备份后加上 _restore: