ES规范
- 版本需要 ES7以上,目前默认版本 ES7.6.2
- ES服务数据盘挂载在 /data 下
- 默认没有权限认证,如有需要另外说明;kibana默认不带,如需请说明。
- 插件:分词器默认analysis-ik,如有其他需求另说明
- 默认端口9200(HTTP端口)和9300(TCP端口)
- 禁止同台ES主机混部ES服务
- 系统OS版本centos7以上
- ES的JVM大小建议为主机内存的50%(ES JVM大小最大只能32G)
- 如果有对数据保留时间有比较高的需求,磁盘空间要尽可能大
- 分片数量评估:
· 分片数量建议为data节点数的整数倍
· 单个分片大小保持在10GB~30GB之间
· 分片数量不容易调整,必须一次定型
· 根据数据量做评估,提前规划好分片数,不能过多,也不能过少
- 副本数replicas推荐1。若对数据稳定性无要求,配置为0
- 如果查询频次高,业务量大的话,master需要(算力8C/16G,不能有客户端连接),且单独部署。另外单独部署查询节点(协调节点)16c/32G,2台起。
- routing相关参数参考下面 “ES核心参数默认值”
- GC回收器默认使用CMS,老年代:年轻代=2:1。
- 数据 /data/elasticsearch/data 下。
- 日志路径在 /data/elasticsearch/log 下。
配置情况
配置套餐形式:
- 最小化配置:3台 4C/8G/50G (组件混合部署)
- 小型集群配置:3台 8C/16G/100G (组件混合部署)
- 基本型配置:6台8C/16G/50G (组件混合部署)
- 大型集群配置:3台master主机8C/16G +9台data主机 32C/64G/500G +4台coord主机 16C/32G (组件单独部署)
补充:
· ES只作为中间件使用,如果有数据存储的需求,磁盘容量需要另考量。
架构模型:
- 最小化集群:3节点 (混部)
- 标准集群:6节点(3master + 6data)(3台节点maser和data混部)
- 大型集群:16节点(3master + 9data + 4coord)
ES 核心参数默认值:
| 序号 | 参数名 | 默认数值 |
|---|---|---|
| 1 | max_shards_per_node | 3000 |
| 2 | transport.tcp.connect_timeout | 30s |
| 3 | cluster.routing.allocation.disk.watermark.high | 90% |
| 4 | cluster.routing.allocation.disk.watermark.low | 85% |
| 5 | cluster.routing.rebalance.enable | all |
| 6 | cluster.routing.allocation.enable | all |
| 7 | cluster.routing.allocation.allow_rebalance | indices_all_active |
| 8 | ||
| 9 |
JVM参数:
- CMS修改为G1 (优先使用)
## GC configuration
# 注释 CMS部分的参数
#-XX:+UseConcMarkSweepGC
#-XX:CMSInitiatingOccupancyFraction=75
#-XX:+UseCMSInitiatingOccupancyOnly
# 开启G1的参数
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:G1ReservePercent=25
-XX:InitiatingHeapOccupancyPercent=30
#设置GC日志的相关参数,匹配9以上的JDK环境
9-:-Xlog:gc*,gc+age=trace,safepoint:file=/data/elasticsearch/log/gc.log:utctime,pid,tags:filecount=32,filesize=64m
说明:
- ES7.10版本下默认为G1。
- ES7.6.2版本下默认为CMS,需要手动改成G1。
基本监控
扩容与缩容
- 优先进行纵向扩容,把节点扩容到8核32GB或16核64GB的规格,然后再考虑横向扩容增加节点个数。
- 先迁移shard去别的节点,待shard转移完毕,开始停ES服务。
数据迁移方案
1、“扩容-缩容”方式(优势:0停机)
2、备份迁移(使用repo或者elasticdump)
3、双写