es集群优化方案:
1.节点职责划分明确:master节点(控制整个集群),数据节点(存储数据),客户端节点(响应用户,转发请求);
2.禁用交换分区:
3.关闭data节点服务器的http功能:
4.内存分配
配置详情
1. 节点职责划分
主节点:主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。 配置文件定义:node.master: true node.data: false
数据节点:主要是存储索引数据的节点,主要对文档进行增删改查操作,聚合操作等。 配置文件定义:node.master: false node.data: true
客户端节点:处理路由请求,处理搜索,分发索引操作等,从本质上来讲客户节点表现为智能负载平衡器。配置文件定义:node.master: false node.data: false
2. 禁用交换分区
临时禁用:
swapoff -a
降低操作系统交换内存的频率:
在/etc/sysctl.conf中配置:vm.swappiness = 1
配置JVM锁住内存:
在elasticsearch.yml配置: bootstrap.mlockall: true
3.关闭data节点服务器的http功能
针对ElasticSearch集群中的所有数据节点,不用开启http服务。将其中的配置 参数这样设置:http.enabled: false。
同时不要安装head, bigdesk, marvel等监控插件,保证data节点服务器只需处理创建/更新/删除/查询索引数据等操作。
4.内存分配
配置机器50%的内存给elasticsearch,预留一半内存给Lucene使用。 修改配置文件/etc/elasticsearch/jvm.options。
索引优化策略
1.取消replica
curl -XPUT -u$es_user:$es_passwd http://localhost:9200/$index_name/_settings -d '
{
"index" : {
"number_of_replicas" : 0
}
}'
#注意替换变量index_name,es_user,es_passwd
2.合并segment
curl -XPOST -u$es_user:$es_passwd "http://localhost:9200/$index_name/_forcemerge?max_num_segments=1"