-
系统设置要到位
1.遵照官方建议设置所有的系统参数
2.参见文档 “Set up Elasticsearch >> Important System Configuration”
-
ES设置尽量简洁
1.elasticsearch.yml中尽量只写必备参数,其他可以通过api动态设置的参数通过api来设定
2.参见文档 “Set up Elasticsearch >> Important Elasticsearch Configuration”
3.随着ES的版本升级,很多网络流传的配置参数已经不再支持,因此不要随便复制别人的集群配置参数
-
elasticsearch.yml中建议设定的基本参数
- cluster.name
- node.name
- node.master/node.data/node.ingest
- network.host 建议显示指定为内网ip,不要偷懒设定为 0.0.0.0
- discovery.zen.ping.unicast.hosts 设定集群其他节点地址
- discovery.zen.minimum_master_nodes 一般设定为 2
- path.data/path.log
- 除上述参数外再根据需要增加其他静态配置参数
-
动态设定的参数有 transient 和 persistent 两种设置,前者在集群重启后会丢失,后者不会,但两种设定都会覆盖elasticsearch.yml 中的配置
-
关于JVM 设定
- 不要超过31GB
- 预留一半的内存给操作系统,用来做文件的缓存
- 具体大小根据该 node 需要存储的数据量来估算,为了保证性能,在内存和数据量间有一个建议比例
- 搜索类项目的比例建议在1 :16 以内
- 日志类项目的比例建议在1:48 ~ 1:96 - 假设总数据量大小为1TB,3个node,1个副本,那么每个node要存储数据量为2TB/3 = 666GB,即700GB左右,做20%的预留空间,每个node要存储大约850GB数据量
- 如果是搜索类的项目,每个node内存的大小为850GB/16=53GB,大于31GB
31*16=496,即每个node最多存储496GB数据,所以需要至少5个node
- 如果是日志类型项目,每个node内存的大小为850GB/48=18GB,因此3个节点足够