美文网首页
ES集群安装

ES集群安装

作者: 转身一世铅华尽 | 来源:发表于2020-06-11 11:04 被阅读0次

    1.0 ElasticSearch集群部署

    1.0.1基本概念

    节点(Node):节点是一个ElasticSearch的实例,一般一台主机上部署一个节点

    集群(Cluster):集群由若干节点组成,和任意节点的通信等价于和集群的通信

    分片(Shard):一个索引会分成多个分片存储,分片数量在索引建立后不可更改

    副本(Replica):副本是分片的一个拷贝,目的在于提高系统的容错性和搜索的效率

    索引(Index):类似数据库的库

    类型(Type):类似数据库的表

    文档(Document):类似数据库的行,包含一个或多个Field

    字段(Field):搜索的最小单元,可通过Mapping定义不同的属性(比如可否被搜索)

    1.0.2安装与配置

    解压ES安装包到3台节点的/data/app/app/elasticsearch目录。

    
    $ cd /data/data
    
    $ tar -xzvf elasticsearch-5.5.1.tar.gz -C  /data/app
    
    $ cd /data/app/app
    
    $ mv elasticsearch-5.5.1 elasticsearch
    

    3台机器修改 /etc/hosts(root权限)添加以下内容:

    ip1 xxx-1

    ip2 xxx-2

    ip3 xxx-3

    xxx换成机器实际的hostname。

    创建数据和日志目录:

    $ mkdir -p /data/app/es/{data,logs}

    修改elasticsearch.yml配置文件:

    $ vi /data/app/elasticsearch/config/elasticsearch.yml

    
    # ---------------------------------- Cluster -----------------------------------
    
    # Use a descriptive name for your cluster:
    
    #如果是应用独享,命名请使用es-应用名称
    
    cluster.name: es-did
    
    # ------------------------------------ Node ------------------------------------
    
    # 这个名称可以自己定义,建议node1、node2去命名
    
    node.name: node1
    
    #指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。
    
    node.master: true
    
    # 指定该节点是否存储索引数据,默认为true。
    
    node.data: true
    
    # ----------------------------------- Paths ------------------------------------
    
    path.data: /data/app/es/data
    
    # Path to log files:
    
    path.logs: /data/app/es/logs
    
    # ----------------------------------- Memory -----------------------------------
    
    #服务器发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。
    
    #所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,
    
    #更严重的是会引起节点响应延迟甚至脱离集群。
    
    #这个参数的目的是当你无法关闭系统的swap的时候,建议把这个参数设为true。
    
    #防止在内存不够用的时候,elasticsearch的内存被交换至交换区,导致性能骤降。
    
    #ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false
    
    bootstrap.memory_lock: false
    
    bootstrap.system_call_filter: false
    
    #network.host ,如果不限制主机访问,同时设置bind_host和publish_host两个参数,那我们只需要把该属性设置为0.0.0.0,那么就不限制主机的访问和节点的交互 
    
    network.host: 10.20.12.72 //其他两台10.20.44.68,10.20.12.71
    
    #可以为Http传输监听定制端口
    
    http.port: 9200
    
    #配置节点之间交互的端口.默认端口
    
    transport.tcp.port: 9300
    
    # 设置是否压缩tcp传输时的数据,默认为false,不压缩
    
    transport.tcp.compress: true
    
    # 设置请求内容的最大容量,默认100mb
    
    http.max_content_length: 100mb
    
    #IP 最好是三个,注意master节点数量,一般为三个,data数量不限,配合node.master: true
    
    discovery.zen.ping.unicast.hosts: ["10.20.12.72","10.20.44.68","10.20.12.71"]
    
    # 这个参数控制的是,一个节点需要看到具有master资格的节点的最小数量,然后才能在集群中做操作。官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
    
    discovery.zen.minimum_master_nodes: 1
    

    1.0.3修改启动文件:

    $ vi /data/app/app/elasticsearch/bin/elasticsearch
    

    export JAVA_HOME=/data/app/app/jdk1.8.0_144

    1.0.4启动es服务

    $ /data/app/app/elasticsearch/bin/elasticsearch -d

    1.0.5检查服务是否启动

    1.查看日志

    tail -222f /data/app/app/es/logs/elasticseaarch.log
    

    2.访问连接是否正常

    curl [http://192.168.1.x:9200](http://192.168.1.x:9200)
    

    若有返回则启动成功

    1.0.6 ElasticSearch调优

    1调整Linux文件数

    在文件/etc/security/limits.conf末尾增加:

    $ sudo vi /etc/security/limits.conf
    
    *soft nofile 65536
    
    *hard nofile 65536
    
    *soft nproc 2048
    
    *hard nproc 4096
    
    - memlock unlimited
    

    ulimit 临时生效:

    $ sudo sh -c "ulimit -n 65536 -u 65536 && exec su $LOGNAME"
    
    $ source ~/.bash_profile
    
    sudo vi /etc/sysctl.conf
    
    vm.max_map_count = 655360
    
    sudo sysctl -p
    

    2配置优化

    在Elasticsearch配置文件elasticsearch.yml末尾添加:

    # #---------------------------------- Indexing Settings -------------------------
    
    index.refresh_interval: 30s
    
    index.translog.flush_threshold_ops: 50000
    
    #---------------------------------- Search pool ---------------------
    
    threadpool.search.type: fixed
    
    threadpool.search.size: 200
    
    threadpool.search.queue_size: 1000
    
    #---------------------------------- Bulk pool ----------------------
    
    threadpool.bulk.type: fixed
    
    threadpool.bulk.size: 600
    
    threadpool.bulk.queue_size: 3000
    
    #---------------------------------- Index pool ---------------------
    
    threadpool.index.type: fixed
    
    threadpool.index.size: 200
    
    threadpool.index.queue_size: 1000
    
    #---------------------------------- Indices settings ---------------
    
    indices.memory.index_buffer_size: 30%
    
    indices.memory.min_shard_index_buffer_size: 12mb
    
    indices.memory.min_index_buffer_size: 96mb
    
    #---------------------------------- Cache Sizes -------------------
    
    indices.fielddata.cache.size: 15%
    
    indices.fielddata.cache.expire: 6h
    
    indices.cache.filter.size: 15%
    
    indices.cache.filter.expire: 6h
    

    3堆内存

    ES默认分配的堆内存是1g,可以根据机器内存情况适当调大,一般不超过机器内存的一半,修改-Xms和-Xmx增大到10g:

    $ vim config/jvm.options
    
    -Xms10g
    
    -Xmx10g
    

    1.0.7 kabina部署配置说明

    1.在任意一台Elasticsearch机器安装Kibana。

    $ cd /data/data
    
    $ tar xzvf kibana-5.5.1-linux-x86_64.tar.gz -C /data/app
    
    $ cd /data/app
    
    $ mv kibana-5.5.1-linux-x86_64 kibana
    

    2.修改Kibana配置文件:

    $ cd /data/app/kibana
    
    $ vi config/kibana.yml
    
    server.host: "192.168.1.x" // kibana机器ip
    
    elasticsearch.url: "http://192.168.1.x:9200" // es某个节点ip
    

    3.启动Kibana:

    $ cd /data/app/kibana
    
    $ nohup bin/kibana &
    

    相关文章

      网友评论

          本文标题:ES集群安装

          本文链接:https://www.haomeiwen.com/subject/gmovtktx.html