• centos 7( linux )下搭建elasticsearch踩坑记


    原文:https://blog.csdn.net/an88411980/article/details/83150380

    概述
        公司最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。

    本文旨在单机版的elasticsearch环境搭建踩坑记录,后续会把整个全文检索涉及到的项目和技术分享出来.

    上一篇博文记录了elasticsearch安装方式  ,RPM安装简单,坑点少,但自由度低,本人生产使用的tar包安装方式,本文主要记录tar包踩坑记

    如有错误或者更好的方案,欢迎批评指正

    环境准备
    全新最小化安装的centos 7.5
    elasticsearch 6.4.0
    elasticsearch配置
        elasticsearch安装方式 中tar包安装方式配置文件在 /opt/apps/elasticsearch-6.4.0/config/ 下

    elasticsearch配置文件主要是 es配置文件elasticsearch.yml 和 es jvm配置文件jvm.options两个

    jvm.options
    内存大小配置
        jvm.options配置文件首先是内存大小内存,es默认内存大小配置为1G,此配置需要根据实际数据大小进行配置,建议最大分配内存为机器可用内存大小的一半,最大不超过32G,因为es自身有个压缩功能在32G以内会启用,修改此配置项操作如下:

    vim /opt/apps/elasticsearch-6.4.0/config/jvm.options

     将以上默认配置项修改为4G,本人机器内存9G,数据大小为1.8G

    GC配置

        gc配置如下图: 每行最前面的数字是指jdk的版本,8代表jdk1.8,本人这里使用了默认配置不变

    elasticsearch.yml

        elasticsearch.yml配置文件主要包含集群配置,节点配置,数据以及日志路径配置,启动内存配置,网络配置

    集群相关配置

    vim /opt/apps/elasticsearch-6.4.0/config/elasticsearch.yml
    
    cluster.name: test-cluster
    node.name: node-1
    
    network.host: 172.16.0.1
    http.port: 9200
    
    discovery.zen.ping.unicast.hosts: ["172.16.0.100", "172.16.0.101","172.16.0.102"]       
    discovery.zen.minimum_master_nodes: 2

    配置详解:

    cluster.name: es集群的名称
    node.name: 当前es节点名称,主要区分集群中哪个节点

    network.host:  当前节点(服务器)的IP地址,此项必须配置,否则其他服务器无法访问到es
    http.port: es服务的端口,默认就是9200

    discovery.zen.ping.unicast.hosts:  集群每个节点的IP地址,同样可以配置可解析的域名,单机环境可以忽略此配置

    discovery.zen.minimum_master_nodes: 集群节点存活最少数,建议配置为集群机器数/2+1 ,单机环境可以忽略

    路径配置
        为了规避对es打包到其他机器继续使用时把数据和日志也打包进去,建议将数据和日志保存到非es安装目录的其他目录下,

    如果改变数据和日志路径需要提前创建好存放目录,本文存放目录如下:

    mkdir -p /data/es/data

    mkdir -p /var/log/es

    vim /opt/apps/elasticsearch-6.4.0/config/elasticsearch.yml

    path.data: /data/es/data

    path.logs: /var/log/es

    配置详解:

    path.data: es数据存放路径
    path.logs: es日志存放路径

    启动踩坑记

        es后台启动命令如下:

    /opt/apps/elasticsearch-6.4.0/bin/elasticsearch -d -p pid

    root用户启动失败

        本人使用root用户执行启动命令后,发现没有es进程,开始查看es日志:

    tail -fn 500 /var/log/es/elasticsearch.log

    很幸运的看到了错误提示: Caused by: java.lang.RuntimeException: can not run elasticsearch as root

    提示的很明显,es不能使用root用户启动,此刻本人的内心在呐喊:"瓦特?",呐喊完毕后,还是要屈服于它,开始创建es启动用户elasticsearch:

    # groupadd elasticsearch

    # useradd -g elasticsearch -d /usr/local/elasticsearch -m -n elasticsearch

    # ./elasticsearch

    再次启动将会遇到各种账号权限问题,此时需要给用户elasticsearch分配es的权限:

    切换到root账号执行以下命令,需要切换到具有管理员权限的用户下,当然也可以分配用户elasticsearch为管理员以及免密码等配置(具体配置自行百度)

    # chown -R elasticsearch:elasticsearch /opt/apps/elasticsearch-6.4.0
    # chown -R elasticsearch:elasticsearch /var/log/es
    # chown -R elasticsearch:elasticsearch /data/es/data
    # chown -R elasticsearch:elasticsearch /usr/local/elasticsearch

    权限分配完毕后,切换到elasticsearch用户下继续执行启动命令,查看es日志,就会发现新的错误提示:  max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    此错误意思也很明显es启动进程要求文件描述符最小为65536, 但是目前系统配置的最大为4096,继续填坑

    切换到root用户,修改elasticsearch文件描述符,第一列的elasticsearch是指的启动es的用户

    #  vim /etc/security/limits.conf
    
    在文件末尾添加:
    elasticsearch   hard    nofile  65536
    elasticsearch   soft    nofile  65536

    切换到用户elasticsearch继续启动,查看es日志会发现新的错误: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    错误的意思是es启动内存权限最低 262144,继续填坑, 切换到root用户,修改配置:

    # vim /etc/sysctl.conf
    
    在最后一行添加如下内容:
    vm.max_map_count=262144
    
    # sysctl -p
    可以查看到如下内容:
    vm.max_map_count=262144

    ok,切换到elasticsearch用户,继续执行启动命令,查看es日志,就可以如下内容:

    以上日志无任何错误,通过浏览器访问: http://172.16.0.1:9200 ,可以看到下图内容:

    再次就说明es正式启动完成,可以正常使用了,如果url无法访问需要检查服务器防火墙端口是否已经开放

    centos7 防火墙使用的firewall,基于本文开放端口方式为,切换到root用户,执行以下命令:

    # firewall-cmd --zone=public --add-port=9200/tcp --permanent
    # firewall-cmd --zone=public --add-port=9300/tcp --permanent
    # firewall-cmd --reload
     
     

  • 相关阅读:
    今天是JVM的生日,来了解下JVM的发展历史吧
    python 天天生鲜项目
    django中设置定时任务
    django-rest-framework视图和url
    rest_framework-分页
    rest_framework-序列化-1
    rest_framework-解析器
    django-rest-framework版本控制
    django-rest-framework限流
    django-rest-framework权限验证
  • 原文地址:https://www.cnblogs.com/shihaiming/p/11057561.html
Copyright © 2020-2023  润新知