• linux系统部署Elasticsearch集群


    安装配置jdk

    可以自行安装,es安装包中自带了jdk
    
    7.0版本以后不需要按jdk,将jdk封装在包内了
    
    • 1
    • 2
    • 3

    安装配置ES

    创建运行ES的普通用户

    useradd es
    passwd es     //设置密码
    
    • 1
    • 2

    安装配置ES

    上传包
    
    tar zxvf /usr/local/package/elasticsearch-7.13.2-linux-x86_64.tar.gz -C /usr/local/
    
    mv /usr/local/elasticsearch-7.13.2 /usr/local/es
    
    vim /usr/local/es/config/elasticsearch.yml
    
    cluster.name: bjbpe01-elk
    cluster.initial_master_nodes: ["10.3.145.14","10.3.145.56","10.3.145.57"] # 单节点模式这里的地址只填写本机地址
    node.name: elk01
    node.master: true
    node.data: true
    path.data: /data/elasticsearch/data
    path.logs: /data/elasticsearch/logs
    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false
    network.host: 0.0.0.0
    http.port: 9200
    transport.tcp.port: 9300
    # 单节点模式下,将discovery开头的行注释
    discovery.seed_hosts: ["10.3.145.56","10.3.145.57"]
    discovery.zen.minimum_master_nodes: 2
    discovery.zen.ping_timeout: 150s
    discovery.zen.fd.ping_retries: 10
    client.transport.ping_timeout: 60s
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    
    # 由于我们的笔记本性能有限,如果要使用单节点多实例的话,添加在原有配置中添加
    node.max_local_storage_nodes:  这个配置限制了单节点上可以开启的ES存储实例的个数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    配置项含义:
    cluster.name    集群名称,各节点配成相同的集群名称。
    cluster.initial_master_nodes 集群ip,默认为空,如果为空则加入现有集群,第一次需配置
    node.name       节点名称,各节点配置不同。
    node.master     指示某个节点是否符合成为主节点的条件。
    node.data       指示节点是否为数据节点。数据节点包含并管理索引的一部分。
    path.data       数据存储目录。
    path.logs       日志存储目录。
    bootstrap.memory_lock       内存锁定,是否禁用交换,测试环境建议改为false。
    bootstrap.system_call_filter    系统调用过滤器。
    network.host    绑定节点IP。
    http.port       rest api端口。
    discovery.seed_hosts    提供其他 Elasticsearch 服务节点的单点广播发现功能,这里填写除了本机的其他ip
    discovery.zen.minimum_master_nodes  集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
    discovery.zen.ping_timeout      节点在发现过程中的等待时间。
    discovery.zen.fd.ping_retries        节点发现重试次数。
    http.cors.enabled               是否允许跨源 REST 请求,用于允许head插件访问ES。
    http.cors.allow-origin              允许的源地址。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    设置JVM堆大小

    sed -i 's/## -Xms4g/-Xms4g/' /usr/local/es/config/jvm.options  
    sed -i 's/## -Xmx4g/-Xmx4g/' /usr/local/es/config/jvm.options
    
    • 1
    • 2

    注意:
    确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。
    如果系统内存足够大,将堆内存最大和最小值设置为31G,因为有一个32G性能瓶颈问题。
    堆内存大小不要超过系统内存的50%

    创建ES数据及日志存储目录

    mkdir -p /data/elasticsearch/data       (/data/elasticsearch)
    
    mkdir -p /data/elasticsearch/logs       (/log/elasticsearch)
    
    • 1
    • 2
    • 3

    修改安装目录及存储目录权限

    chown -R es.es /data/elasticsearch
    
    chown -R es.es /usr/local/es
    
    • 1
    • 2
    • 3

    系统优化

    增加最大文件打开数

    永久生效方法:

    echo "* soft nofile 65536" >> /etc/security/limits.conf
    
    • 1
    增加最大进程数
    echo "* soft nproc 65536" >> /etc/security/limits.conf
    
    • 1
    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 4096
    * hard nproc 4096
    更多的参数调整可以直接用这个
    
    • 1
    • 2
    • 3
    • 4
    • 5
    增加最大内存映射数
    echo "vm.max_map_count=262144" >> /etc/sysctl.conf
    
    sysctl -p
    
    • 1
    • 2
    • 3
    启动如果报下列错误
    memory locking requested for elasticsearch process but memory is not locked
    elasticsearch.yml文件
    bootstrap.memory_lock : false
    /etc/sysctl.conf文件
    vm.swappiness=0
    
    错误:
    max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    
    意思是elasticsearch用户拥有的客串建文件描述的权限太低,知道需要65536个
    
    解决:
    
    切换到root用户下面,
    
    [root@elk ~]# vim /etc/security/limits.conf
    
    在最后添加
    * hard nofile 65536     #最大文件打开数
    * hard nproc 65536      #进程
    重新启动elasticsearch,还是无效?
    必须重新登录启动elasticsearch的账户才可以,例如我的账户名是elasticsearch,退出重新登录。
    另外*也可以换为启动elasticsearch的账户也可以,* 代表所有,其实比较不合适
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    第二个问题
    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    意思是:elasticsearch用户拥有的内存权限太小了,至少需要262114。这个比较简单,也不需要重启,直接执行
    sysctl -w vm.max_map_count=262144
    就可以了
    
    • 1
    • 2
    • 3
    • 4
    • 5

    启动ES

    su - es -c "cd /usr/local/es && nohup bin/elasticsearch &"   #root不能启动es要切换用户
    
    • 1

    测试:浏览器访问http://ip:9200

  • 相关阅读:
    在IDEA中搭建Spring5.2.x版本源码(~附带完整过程和图示~)
    HR人才测评,什么是成就导向?如何测评成就导向?
    Gopro hero5运动相机格式化后恢复案例
    【【萌新的SOC学习之AXI IP代码解释】】
    React脚手架介绍和Demo
    断点续传-http中Header参数Range(分段请求基础)
    如何编写基本的Java程序
    树莓派ubuntu上配置miniconda并创建虚拟环境
    java经典面试题总结
    SandStorm 出品|建设者高光时刻 9 月作品集已上线!
  • 原文地址:https://blog.csdn.net/qq_59207739/article/details/136484563