本文简要介绍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. 设置至少1台纯Master, 2台混合Data/Master。 合计3台master的集群。  所有的bulk请求仅post到master中。
  2. 设置约50%的内存给ES, 如Xms=Xmx=24G
  3. 对master,由于bulk请求涉及频繁gc, 设置为如下的G1GC。

    -XX:+UseG1GC

  4. 将所有master 的ip地址更新到discovery file插件配置中。

    node.attr.rack: crm-master-01
    node.name: golden-master01
    network.publish_host: 10.27.1.1

    cluster.name : goldeneye
    network.host: 0.0.0.0
    http.port: 9200
    transport.tcp.port: 9300

    path:
        data:
            - /home/data1
            - /home/data2

    bootstrap.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: 10s

    xpack.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: false

    http.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集群部署指南的更多相关文章

  1. Apache Kafka 集群部署指南

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ Kafka基础 消息系统的作用 应该大部分小伙伴都清楚,用机油装箱举个例子. 所以消息系统就是如上图我们所说的仓库,能在中间 ...

  2. Kafka集群部署指南

    一.前言 1.Kafka简介 Kafka是一个开源的分布式消息引擎/消息中间件,同时Kafka也是一个流处理平台.Kakfa支持以发布/订阅的方式在应用间传递消息,同时并基于消息功能添加了Kafka ...

  3. Hadoop记录-Apache hadoop+spark集群部署

    Hadoop+Spark集群部署指南 (多节点文件分发.集群操作建议salt/ansible) 1.集群规划节点名称 主机名 IP地址 操作系统Master centos1 192.168.0.1 C ...

  4. [转]OpenShift 集群搭建指南

    转自:http://www.cnblogs.com/zhangning/p/7251810.html OpenShift 集群搭建指南 v1.0 搭建Hyper-v虚拟机或物理机 配置物理机静态IP, ...

  5. Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)

    一.  ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...

  6. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  7. ELK5.2+kafka+zookeeper+filebeat集群部署

    架构图 考虑到日志系统的可扩展性以及目前的资源(部分功能复用),整个ELK架构如下: 架构解读 : (整个架构从左到右,总共分为5层) 第一层.数据采集层 最左边的是业务服务器集群,上面安装了file ...

  8. openstack高可用集群21-生产环境高可用openstack集群部署记录

    第一篇 集群概述 keepalived + haproxy +Rabbitmq集群+MariaDB Galera高可用集群   部署openstack时使用单个控制节点是非常危险的,这样就意味着单个节 ...

  9. Quartz.net持久化与集群部署开发详解

    序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...

随机推荐

  1. 配置日志logwarch 每天发送到邮箱

    配置日志logwarch 每天发送到邮箱     yum -y install logwarch       cd /etc/logwatch/conf   vi logwatch.conf   增加 ...

  2. C# DateTime变量不能赋null值

    使用定时器的时候: DateTime aimtime=DateTime.Now.AddSeconds(1); CheckTimer() { if(DateTime.Now.CompareTo(aimt ...

  3. jqGrid简述

    转自:http://www.blogjava.net/ilovebabyfat/archive/2012/04/06/373456.html jqGrid学习之 ------------- 安装 1. ...

  4. LPC1788的外部中断和GPIO中断

    首先是gpio中断,这一点和1768不同,1768使用的中断时和eint3共用中断通道,到了1788,专门为gpio开辟了中断 #ifndef __JOYPAD_H_ #define __JOYPAD ...

  5. <转>SQL的执行顺序

    SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后 ...

  6. STM32驱动W25X64存储器

    W25X64 是华邦公司推出的大容量 SPI  FLASH 产品,W25X64 的容量为 64Mbit(8M),该系列还有 W25Q80/16/32 等.W25X16,W25X32,W25X64分别有 ...

  7. jQuery之事件移除

    当事件执行完了,想取消事件的效果可以通过一定的办法来处理.比如bind()方法,可以通过unbind()方法来移除事件的效果. 比如下面的一个案例: <script type="tex ...

  8. 【java基础】内部类,局部内部类,匿名内部类、静态内部类、接口中的内部类

    内部类: 1.定义在一个类中的内部类,内部类的实例化伴随着外围类所定义的方法来构造,内部类对象有外围类的隐式引用,所以内部类可以直接访问外围类的外围类的域,包括私有的,这是内部类的访问特权,所以比常规 ...

  9. thinkphp ,进行关联模型的时候出现的问题,版本是3.2

    看的后盾网络视频,里面操作的是3.1. 我用的是onethink,基于3.2. 在关联模式的操作时.主要是user role  role_user  3个张表 视频中可以操作,但是本地操作出现问题. ...

  10. Javascript正则表达式完全学习手册

    正则表达式看起来很吓人,不容易让人亲近,但它的确很好用,可以很大程度上提高你的开发效率.本文从零开始介绍了应如何学习正则表达式.文中范例主要为JavaScript. 正则表达式可以很恐怖,真得很恐怖. ...