如何在一台计算机中启动许多ElasticSearch节点

时间:2016-08-07 14:02:28

标签: elasticsearch

我尝试使用以下命令启动每个节点一台机器和一个cluser(仅限localhost - 测试目的):

sudo /usr/share/elasticsearch/bin/elasticsearch
 -Des.node.data=false 
 -Des.node.master=true 
 -Des.node.name=NoData --default.path.conf=/etc/elasticsearch/

然而,即使在启动第一个节点时,我仍然无法启动甚至一个节点:

> Exception in thread "main" java.lang.RuntimeException: don't run
> elasticsearch as root.    at
> org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
>   at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
>   at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)   at
> org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
> Refer to the log for complete error details. 

如何在一台机器上启动多个ES节点?

(ES从ES的官方deb回购安装)

EDIT 我想像下面那样运行它

$ bin/elasticsearch -Des.config=$ES_HOME/config/elasticsearch.1.yml
$ bin/elasticsearch -Des.config=$ES_HOME/config/elasticsearch.2.yml
$ bin/elasticsearch -Des.config=$ES_HOME/config/elasticsearch.testNoData.yml

但有两个问题

  1. 由于上述原因,它不起作用。
  2. 仍然不确定这3个yml文件中应包含哪些内容?

2 个答案:

答案 0 :(得分:2)

如果您想启动许多节点以进行测试,我强烈建议您使用esvm tool

该工具专门用于针对在一个或多个节点上运行的不同ES版本快速测试代码。例如,您可以使用this configuration file非常轻松地启动5节点集群(2个主节点+ 3个数据):

{
  "clusters": {
    "2m3d": {
      "plugins": ["mobz/elasticsearch-head"],
      "nodes": [
        {
          "cluster": { "name": "2m3d" },
          "node": { "name": "master-1", "data": false, "master": true }
        },
        {
          "cluster": { "name": "2m3d" },
          "node": { "name": "master-2", "data": false, "master": true }
        },
        {
          "cluster": { "name": "2m3d" },
          "node": { "name": "data-1", "data": true, "master": false }
        },
        {
          "cluster": { "name": "2m3d" },
          "node": { "name": "data-2", "data": true, "master": false }
        },
        {
          "cluster": { "name": "2m3d" },
          "node": { "name": "data-3", "data": true, "master": false }
        }
      ]
    }
  }
}

通过运行

可以非常简单地启动上述群集
> esvm 2m3d

答案 1 :(得分:0)

  1. 要在服务器上启动多个ES节点,您必须为每个节点(不同的端口,不同的数据文件夹等)设置不同的配置。这可能涉及一些艰苦的工作,不建议使用,因为不同的ES节点可能仍会发生冲突和失败。

  2. 该错误清楚地表明您不应该以root身份运行Elasticsearch,而是使用sudo运行它 - 这使它以root身份运行。 尝试使用命令 - import pandas as pd pd.DataFrame({'col1':array3,'col2':array1,'col3':array2}).to_csv('c:/temp/out.csv', index=False, header=None, sep='\t') 启动其服务来运行ES。这将以正确的配置启动ES守护程序。