elasticsearch 在MAC El Capitan上安装Elasticsearch 7.3失败。由于启用引导内存锁定时出现问题,导致重复安装失败,elasticsearch,installation,elasticsearch,Installation" /> elasticsearch 在MAC El Capitan上安装Elasticsearch 7.3失败。由于启用引导内存锁定时出现问题,导致重复安装失败,elasticsearch,installation,elasticsearch,Installation" />

elasticsearch 在MAC El Capitan上安装Elasticsearch 7.3失败。由于启用引导内存锁定时出现问题,导致重复安装失败

elasticsearch 在MAC El Capitan上安装Elasticsearch 7.3失败。由于启用引导内存锁定时出现问题,导致重复安装失败,elasticsearch,installation,elasticsearch,Installation,各位晚上好, 我一直在尝试在我的MacBookPro El Capitan(10.11.6,4GB内存)上安装Elasticsearch 7.3的一个独立实例(本地)。我真的认为这将是相当直截了当的,但遗憾的是,ES在安装到我的mac上时出现了内存锁定问题 详情: 我下载并一直在尝试安装Elasticsearch 7.3。它是从这里下载的: 提取归档文件后,我继续按照安装说明进行操作,首先运行二进制可执行文件-“/elasticsearch”-通过运行此命令--> cd elasticsearc

各位晚上好,

我一直在尝试在我的MacBookPro El Capitan(10.11.6,4GB内存)上安装Elasticsearch 7.3的一个独立实例(本地)。我真的认为这将是相当直截了当的,但遗憾的是,ES在安装到我的mac上时出现了内存锁定问题

详情:

  • 我下载并一直在尝试安装Elasticsearch 7.3。它是从这里下载的:

  • 提取归档文件后,我继续按照安装说明进行操作,首先运行二进制可执行文件-“/elasticsearch”-通过运行此命令-->
    cd elasticsearch-7.3.0/bin ./elasticsearch

  • 在运行上述命令时,我反复遇到此错误-->

    “引导检查失败:elasticsearch进程请求内存锁定,但内存未锁定”

  • 在进行了一些研究之后,我现在意识到Elasticsearch在启用“内存锁定”时基本上存在问题。我们完全理解elasticsearch不喜欢内存交换,需要使用-->bootstrap.memory\u lock:true命令启用“内存锁定”,但在我看来,这里有一个例子,其中,此设置正在传递给Elasticsearch,但Elasticsearch无法读取所述设置以锁定内存(Java堆)并完成ES实例的安装

  • 我已经尝试了一切,试图启用“内存锁定”,但没有成功。我已在以下文件中设置了以下配置参数:

    A) 我在/etc/security/limits.conf文件中添加了以下行:

       elasticsearch soft memlock unlimited
       elasticsearch hard memlock unlimited
    
       * - memlock unlimited
       * - nofile 100000
       * - nproc 32768
       * - as unlimited
    
    B) 我向jvm.options文件添加了以下行:

      -Xms2g  (initial size of total heap space, set to half of RAM)  
      -Xmx2g  (maximum size of heap space, set to half of RAM)  
      -Des.enforce.bootstrap.checks=true (enforcing memory locking checks)  
      -Djna.tmpdir=chosenpath/elasticsearch-7.3.0/tmp (this seemed important)
    
      bootstrap.memory_lock: true   
      network.host: 0.0.0.0  
      http.port: 9200
    
    C) 我在elasticsearch.yml文件中编辑了以下几行:

      -Xms2g  (initial size of total heap space, set to half of RAM)  
      -Xmx2g  (maximum size of heap space, set to half of RAM)  
      -Des.enforce.bootstrap.checks=true (enforcing memory locking checks)  
      -Djna.tmpdir=chosenpath/elasticsearch-7.3.0/tmp (this seemed important)
    
      bootstrap.memory_lock: true   
      network.host: 0.0.0.0  
      http.port: 9200
    
    D) 我添加了'/etc/launchd.conf'文件(试图增加我的max进程和max可用文件),并添加了以下行:

      limit maxproc 2048 2048  
      limit maxfiles 1024 unlimited  
    
    E) 我添加了'/etc/sysctl.conf'文件(试图增加我的最大进程数,以及每个用户可用的最大进程数),并添加了以下行:

      # Turn up maxproc  
      kern.maxproc=2048 
    
      # Turn up the maxproc per user  
      kern.maxprocperuid=1024
    
      # Remove core files  
      kern.coredump=0   
    
    F) 无论我做什么,我的ulimit-as输出都保持不变,仍然提供以下输出:

    core file size           (blocks, -c) 0  
    data seg size          (kbytes, -d) unlimited  
    file size               (blocks, -f) unlimited  
    max locked memory       (kbytes, -l) unlimited  
    max memory size         (kbytes, -m) unlimited  
    open files                     (-n) 256  
    pipe size            (512 bytes, -p) 1  
    stack size              (kbytes, -s) 8192  
    cpu time               (seconds, -t) unlimited  
    max user processes              (-u) 709  
    virtual memory          (kbytes, -v) unlimited  
    
  • 但无论我尝试什么,我总是会犯以下两个错误:

    A) 无法锁定JVM内存:错误=78,原因=函数未实现

    B) “错误:引导检查失败:elasticsearch进程请求内存锁定,但内存未锁定”

  • 我曾研究过可能完全禁用mac上的内存交换功能,但我认为这可能是一个过于激烈的行为,我更希望只有在我的ES处于活动状态时才能调用该功能(内存锁定,不交换)。我似乎也找不到任何可以设置LimitMEMLOCK=infinity的地方,因为似乎elasticsearch.service的概念并不作为在MAC上安装ES的一部分存在

  • 我认为安装ES就像编辑“Elasticsearch.yml”和“jvm.options”文件一样简单,就是这样。我错了


    我很想得到你们的帮助。提前感谢。

    所以-我终于在我的MAC(El Capitan)上安装了ES 7.3

    我从jvm.options文件中删除了此项:

    -Des.enforce.bootstrap.checks=true
    
    不知何故,这并没有导致ES在验证内存锁定时出错。删除此参数将禁用ES强制执行引导检查的能力,即使elasticsearch.yml配置文件中的“bootstrap.memory\u lock:true”。现在,我需要弄清楚的是,如何向同一个ES实例添加两个额外的节点,而不会出现以下错误:

    uncaught exception in thread [main]
    org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to 
    [9300]]; nested: BindException[Address already in use]
    
    似乎我需要对elasticsearch.yml文件进行一些调整。此处的当前相关设置:

    bootstrap.memory_lock: true
    network.host: 0.0.0.0
    http.port: 9200
    transport.host: localhost
    #transport.tcp.port: 9300-9400 (commented out for now)
    #node.master: true             (commented out for now)
    #node.data: true               (commented out for now)
    #discovery.type: single-node
    cluster.initial_master_nodes: ["node-1", "node-2"]
    

    有人有什么想法吗?

    所以,我终于在我的MAC(El Capitan)上安装了ES 7.3

    我从jvm.options文件中删除了此项:

    -Des.enforce.bootstrap.checks=true
    
    不知何故,这并没有导致ES在验证内存锁定时出错。删除此参数将禁用ES强制执行引导检查的能力,即使elasticsearch.yml配置文件中的“bootstrap.memory\u lock:true”。现在,我需要弄清楚的是,如何向同一个ES实例添加两个额外的节点,而不会出现以下错误:

    uncaught exception in thread [main]
    org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to 
    [9300]]; nested: BindException[Address already in use]
    
    似乎我需要对elasticsearch.yml文件进行一些调整。此处的当前相关设置:

    bootstrap.memory_lock: true
    network.host: 0.0.0.0
    http.port: 9200
    transport.host: localhost
    #transport.tcp.port: 9300-9400 (commented out for now)
    #node.master: true             (commented out for now)
    #node.data: true               (commented out for now)
    #discovery.type: single-node
    cluster.initial_master_nodes: ["node-1", "node-2"]
    

    有人有什么想法吗?

    这些是我的“limits.conf”的当前内容文件:elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited*-memlock unlimited*-nofile 100000*-nproc 32768*-as unlimited。当我重新启动时,“打开的文件”和“最大用户进程”参数仍然保持不变。这些是“limits.conf”的当前内容文件:elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited*-memlock unlimited*-nofile 100000*-nproc 32768*-as unlimited。当我重新启动时,“打开的文件”和“最大用户进程”参数仍然保持不变。