管理监控和部署

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,当整个集群重启后,临时性修改就失效了,而永久性修改则不会。
 
临时修改日志等级
通过日志排查问题时可能会调整日志等级:
 
慢日志
可在创建索引时设置,可以配置在配置文件中。
 
科学的测试性能
测试方法:
  1. 在单个节点上,对单个分片,无副本的场景测试性能。
  1. 在 100% 默认配置的情况下记录性能结果,这样你就有了一个对比基线。
  1. 确保性能测试运行足够长的时间(30 分钟以上)这样你可以评估长期性能,而不是短期的峰值或延迟。一些事件(比如段合并,GC)不会立刻发生,所以性能概况会随着时间继续而改变的。
  1. 开始在基线上逐一修改默认值。严格测试它们,如果性能提升可以接受,保留这个配置项,开始下一项。
 
一些提高性能的技巧
  • 如果搜索不需要近实时,可以把索引的 index.refresh_interval 改到 30s,减少段的生成次数。
  • 如果需要大批量导入数据,导入期间可以将 index.refresh_interval 设置 -1 关掉刷新,导入完成后再开启。
  • 另外大量导入数据时,还可以设置 index.number_of_replicas: 0 关闭副本,因为文档在复制时每个副本都会重复执行分析、索引及合并。可以在导入完成后再开启,直接同步结果。
 
延迟分片分配
某些时候会存在分片所在的节点会瞬时中断但又很快恢复的情况,如果此时集群中 master 一旦发现分片下线就立刻提升副本,接着在集群中开始均衡数据,往往成本很高,得不偿失。可以选择延迟分片分配,默认集群会等待 1 分钟来看节点是否会重新加入,下方是修改默认时间
如果在均衡期间节点恢复了,Elasticsearch 会此节点上分片数据与其主分片数据是否一致,如果一致 master 则会取消均衡。
 
重启集群的步骤
  • 集群停写
  • 禁止再平衡缺失的分片
    • 重启单个节点
    • 重新开启分片再平衡
      • 重复以上步骤至所有节点
       
      备份集群
      配置中指定备份仓库位置:
      创建一个备份仓库
      备份相关操作:
       
      从快照备份恢复数据 recovery
      在快照备份后加上 _restore:
       

      © 菜皮 2020 - 2023