ElasticSearch5集群部署指南
本文简要介绍ES5版本集群部署时的要点。 更多相关信息请参阅官网。
部分配置未在生产环境体现。 生产中2个集群20台centOS,总数据15TB,90亿条。 实时写入5000条/s, 最大7万/s。
环境准备:
1. vi /etc/sysctl.conf 加入:
vm.max_map_count=262144
执行 sysctl -p 使配置生效
2. vi /etc/security/limits.d/20-nproc.conf #打开进程数
* soft nproc 65536
3. vi /etc/security/limits.conf #打开文件数
* soft nofile 65536
* hard nofile 65536
* - memlock unlimited
ES配置:
- 设置至少1台纯Master, 2台混合Data/Master。 合计3台master的集群。 所有的bulk请求仅post到master中。
- 设置约50%的内存给ES, 如Xms=Xmx=24G
对master,由于bulk请求涉及频繁gc, 设置为如下的G1GC。
-XX:+UseG1GC
- 将所有master 的ip地址更新到discovery file插件配置中。
node.attr.rack: crm-master-01
node.name: golden-master01
network.publish_host: 10.27.1.1cluster.name : goldeneye
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300path:
data:
- /home/data1
- /home/data2bootstrap.memory_lock: true
discovery.zen.minimum_master_nodes: 2
action.destructive_requires_name: true
script.max_compilations_per_minute: 120
indices.query.bool.max_clause_count: 4096##===================MASTER NODE =========================
node.master: true
node.data: false
node.ingest: true
discovery.zen.ping_timeout: 10sxpack.monitoring.history.duration: 1d
xpack.graph.enabled: false
xpack.watcher.enabled: false
#xpack.security.enabled: false
xpack.security.dls_fls.enabled: false
xpack.security.transport.filter.enabled: false##===================DATA NODE =========================
node.master: false
node.data: true
node.ingest: falsehttp.enabled: false
xpack.security.enabled: true
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
集群settings
curl -XPUT localhost:9200/_cluster/settings -d '
{
"transient": {
"cluster": {
"routing": {
"rebalance": {
"enable": "none" #初始导入前,禁用shard移动
},
"allocation": {
"node_concurrent_incoming_recoveries": "6", #初始导入后,将replica设为1时, 加速replica复制速度。默认为2
"node_concurrent_outgoing_recoveries": "6"
}
}
},
"indices": {
"recovery": {
"max_bytes_per_sec": "500mb" #初始导入后,将replica设为1时, 加速replica复制速度,默认为40m
},
"store": {
"throttle": {
"type": "merge",
"max_bytes_per_sec": "500m" #数据导入时,及_forcemerge?max_num_segments=3时加速
}
}
}
}
}
'
创建库Template
curl -XPUT localhost:9200/_template/crm_v5 -d '
{
"template": "crm*",
"aliases": {
"crm_v5.0": {}
},
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "1", #初始化导入时设置 0,
"refresh_interval": "10s", #初始化导入时设置 -1
"translog.durability":"async", #大量写入场景
"translog.flush_threshold_size":"1024m" #默认512m
"max_result_window": "5000000",
"max_rescore_window":"20000",
"unassigned.node_left.delayed_timeout": "10m",
"search.slowlog.threshold.query.warn":"30s",
"indexing.slowlog.threshold.index.warn": "10s"
}
},
"mappings": {
"customer": {
"_all": { "enabled": false }, #内存优化
"properties": {
字段使用尽量短的类型:能short就不要使用int,能half 就不要使用float。
如long,integer,short, byte
float, half_float
"end_time": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis" #两种格式2016-0-01T00:00:00 +08:00
}
启动全量导入作业
更新template的 number_of_replicas=0,refresh_interval=-1
全量导入完成
1. 确认已导入的库大小, 对大于30GB的库,重新设置shard个数number_of_shards,使每个shard约为30GB。 使用 _reindex 和_alias 接口配合完成。
2. 合并每个shard的segment数目 , 增强search速度。
curl -XPOST /crm*/_forcemerge?max_num_segments=3
3. 启动副本备份。 number_of_replicas=1
curl -XPUT 'localhost:9200/crm*/_settings' -d ' { "index" : { "number_of_replicas" : 1 } }'
运维期间
A: 移动Index所属节点
curl -XPUT localhost:9200/_cluster/reroute 迁移节点数据
{
"commands" : [ {
"move" :
{
"index" : "crm-0720", "shard" : 0,
"from_node" : "data02", "to_node" : "data03"
}
}]
}
如果关闭一个节点,则执行reroute前, 还必须禁用系统自动的shard分配
curl -XPUT localhost:9200/_cluster/settings -d '{ "transient" : { "cluster.routing.allocation.enable" : "none" } }' #默认为all
PUT /_cluster/settings
{
"persistent" : {
"cluster.routing.allocation.enable":"none",
"cluster.routing.rebalance.enable":"replicas",
"action.destructive_requires_name":true
}
}
当前文件夹内查找关键字,显示所在文件,所在行,行内容:
grep -nHIrF KeyWord ./
ElasticSearch5集群部署指南的更多相关文章
- Apache Kafka 集群部署指南
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ Kafka基础 消息系统的作用 应该大部分小伙伴都清楚,用机油装箱举个例子. 所以消息系统就是如上图我们所说的仓库,能在中间 ...
- Kafka集群部署指南
一.前言 1.Kafka简介 Kafka是一个开源的分布式消息引擎/消息中间件,同时Kafka也是一个流处理平台.Kakfa支持以发布/订阅的方式在应用间传递消息,同时并基于消息功能添加了Kafka ...
- Hadoop记录-Apache hadoop+spark集群部署
Hadoop+Spark集群部署指南 (多节点文件分发.集群操作建议salt/ansible) 1.集群规划节点名称 主机名 IP地址 操作系统Master centos1 192.168.0.1 C ...
- [转]OpenShift 集群搭建指南
转自:http://www.cnblogs.com/zhangning/p/7251810.html OpenShift 集群搭建指南 v1.0 搭建Hyper-v虚拟机或物理机 配置物理机静态IP, ...
- Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)
一. ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...
- Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目
在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...
- ELK5.2+kafka+zookeeper+filebeat集群部署
架构图 考虑到日志系统的可扩展性以及目前的资源(部分功能复用),整个ELK架构如下: 架构解读 : (整个架构从左到右,总共分为5层) 第一层.数据采集层 最左边的是业务服务器集群,上面安装了file ...
- openstack高可用集群21-生产环境高可用openstack集群部署记录
第一篇 集群概述 keepalived + haproxy +Rabbitmq集群+MariaDB Galera高可用集群 部署openstack时使用单个控制节点是非常危险的,这样就意味着单个节 ...
- Quartz.net持久化与集群部署开发详解
序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...
随机推荐
- Delphi中unicode转汉字函数(转)
源:Delphi中unicode转汉字函数 近期用到这个函数,无奈没有找到 delphi 自带的,网上找了下 有类似的,没有现成的,我需要的是 支持 “\u4f00 ” 这种格式的,即前面带标准的 “ ...
- linux 驱动入门5
慢慢的开始转驱动,目前比较有时间,一定要把驱动学会.哎.人生慢慢路,一回头.已经工作了八九年了.努力.在买套房.改退休了.学驱动.个人认为首先要熟悉驱动框架.慢慢来.心急吃不了热豆腐. 看网上都说的设 ...
- Spring动态数据源的配置
Spring动态数据源 我们很多项目中业务都需要涉及到多个数据源,就是对不同的方法或者不同的包使用不同的数据源.最简单的做法就是直接在Java代码里面lookup需要的数据源,但是这种做法耦合性太高, ...
- TCP/IP 标志位 SYN ACK RST UTG PSH FIN
三次握手:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个 SYN=1,ACK=1标志的数据包给发送端,告诉它,可以 ...
- Delphi+GDI
源:Delphi 初试GDI+学习笔记 Delphi 深入GDI+学习笔记
- IOS即时通讯XMPP搭建openfire服务器 分类: ios技术 2015-03-07 11:30 53人阅读 评论(0) 收藏
一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...
- Git和Github的配合使用
Git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git 本地仓库详解 ...
- CMake Tutorial
1.最简实例 使用cmake的最简实例是由一个源程序文件生成一个可执行文件.例如由下述C++源程序文件生成可执行文件tutorial. main.cpp #include<iostream> ...
- KNN算法--物以类聚,人以群分
KNN(K Nearest Neighbors,K近邻 )算法是机器学习所有算法中理论最简单,最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值之间的距离,然后选取K(K>= ...
- jquery 组合键键盘事件
jQuery处理键盘事件,比如小说网站中常见的按左右键来实现上一篇文章和下一篇文章,按ctrl+回车实现表单提交,google reader和有道阅读中的全快捷键操作... 本文讲述jQuery处理按 ...