• 安装Elasticsearch步骤(包含遇到的问题及解决方案)


    注:笔者是在centos云服务器环境下安装的Elasticsearch

    目录

    1.安装前准备

    2.下载Elasticsearch

     3.启动Elasticsearch 非常容易出问题

     第一次运行时,可能出现如下错误:

    一、内存不足原因启动失败

    二、使用root用户启动问题

    三、启动ES自动被killed

    四、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    五、the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

    后续在使用中遇到问题也会持续更新……


    1.安装前准备

    至少需要jdk版本8以上的java环境,笔者安装的elasticsearch需要jdk11及以上的java环境。大家可以去Oracle官网下载合适的环境

    Java Downloads | Oracleicon-default.png?t=N7T8https://www.oracle.com/java/technologies/downloads/#java17jdk安装教程可以查看这篇文章,笔者也是按照这篇文章的第二个方法安装的

    Linux系统下安装Java环境(史上最简单没有之一)_linux下载java-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_43329216/article/details/118385502

    2.下载Elasticsearch

     推荐在 /usr/local 路径下 运行以下命令,来下载Elasticsearch压缩包

    1. # 下载
    2. curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz
    3. # 解压
    4. tar -xvf elasticsearch-7.11.1-linux-x86_64.tar.gz

     3.启动Elasticsearch 非常容易出问题

    1. cd elasticsearch-7.11.1/bin
    2. ./elasticsearch
     第一次运行时,可能出现如下错误:
    一、内存不足原因启动失败
    1. Exception in thread "main" java.lang.RuntimeException: starting java failed with [1] output:
    2. #
    3. # There is insufficient memory for the Java Runtime Environment to continue.
    4. # Native memory allocation (mmap) failed to map 899678208 bytes for committing reserved memory.
    5. # An error report file with more information is saved as:
    6. # logs/hs_err_pid653.log error: Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca600000, 899678208, 0) failed; error='Not enough space'(errno=12)
    7. at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119)
    8. at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81)
    9. at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38)
    10. at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:135)
    11. at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86)

    原因:ES默认的分配内存超出了空闲内存的大小,所以出现内存不足无法启动的现象。

    解决方案:先查看系统内容情况,根据需要修改内存大小

    使用 free -h 命令,查看系统内容情况

    1. [es@FrankZhang bin]$ free -h
    2. total used free shared buff/cache available
    3. Mem: 1.8G 982M 393M 696K 462M 706M
    4. Swap: 0B 0B 0B

     查看 available 大小修改配置文件里的参数大小

    1. vim config/jvm.options
    2. 里面有两个参数
    3. ## -Xms2g
    4. ## -Xmx2g
    5. 将这两个参数修改为合适的大小即可,如果修改完后运行还不行,那就需要继续调整。推荐512m或128m即可
    6. -Xmx128m
    二、使用root用户启动问题
    1. [2018-12-11T12:53:33,473][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
    2. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    3. at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:127) ~[elasticsearch-5.5.1.jar:5.5.1]
    4. at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) ~[elasticsearch-5.5.1.jar:5.5.1]
    5. at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) ~[elasticsearch-5.5.1.jar:5.5.1]
    6. at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.5.1.jar:5.5.1]
    7. at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.5.1.jar:5.5.1]
    8. at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.5.1.jar:5.5.1]
    9. at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.5.1.jar:5.5.1]
    10. Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    11. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.5.1.jar:5.5.1]
    12. at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:194) ~[elasticsearch-5.5.1.jar:5.5.1]
    13. at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) ~[elasticsearch-5.5.1.jar:5.5.1]
    14. at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) ~[elasticsearch-5.5.1.jar:5.5.1]
    15. ... 6 more

    原因:ElasticSearch不允许直接通过 root 来登录

    解决方案:需要另外设置一个账户来启动

    1. adduser es
    2. passwd es
    3. # 赋予es用户权限
    4. chown -R es:es elasticsearch-7.11.1/
    5. chmod 770 elasticsearch-7.11.1/
    6. # root 用户切换到 es 用户
    7. su es

    使用这个 es 用户去启动,就可以解决上面的问题。

    三、启动ES自动被killed
    1. [es@FrankZhang bin]$ ./elasticsearch
    2. Killed

    原因:服务器可用内存没有达到ES虚拟机所需内存的默认值或者是目前系统缓存占用很大

    解决方案:超过默认值就是上面第一个问题,目前系统缓存占用大可以用下面的命令来回收buffer/cache

    1. echo 1 > /proc/sys/vm/drop_caches # 仅清除页面缓存
    2. echo 2 > /proc/sys/vm/drop_caches # 清除目录项和inode
    3. echo 3 > /proc/sys/vm/drop_caches # 清除页面缓存、目录项以及inode
    四、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    注:这个和上面的内存不足不是同一种问题

    原因:elasticsearch 用户拥有的内存权限太小。至少需要262144

    解决方案:编辑 /etc/sysctl.conf 文件

    1. # 在最后添加一行
    2. vm.max_map_count=262144
    3. # 保存退出后需要让配置生效
    4. sysctl -p
    五、the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

    原因:缺少默认配置

    解决方案:

    至少需要配置三个中的一个参数

    • discovery.seed_hosts:集群主机列表
    • discovery.seed_providers: 基于配置文件配置集群主机列表
    • cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填

    后续在使用中遇到问题也会持续更新……

  • 相关阅读:
    通过百度翻译API完成Java中的中英文翻译
    Linux学习-数组-一维数组
    3DCAT实时渲染云在BIM领域的应用
    间歇性微服务问题...
    AI视频教程下载:ChatGPT个人生产力提升指南
    Masked Autoencoders Are Scalable Vision Learners
    【微信小程序】电商移动前端API文档
    C++模板与STL(三):容器与算法
    Vue2:Vue2过滤器、计算属性、监听器
    _linux 进程间通信(管道)
  • 原文地址:https://blog.csdn.net/qq_67503717/article/details/133883154