在同一台机器上创建具有2个节点的群集的简便方法是什么?

时间:2014-05-06 15:20:34

标签: elasticsearch

我正在测试Elasticsearch,我试图在一台机器上创建一个包含2个节点的简单集群(在Fedora上)

我启动名为Node1的第一个实例:

sudo bin/elasticsearch -Des.node.name=Node1 -Des.http.port=9200

另一个终端名为Node2的第二个实例:

sudo bin/elasticsearch -Des.node.name=Node2 -Des.http.port=9201

两个命令的控制台输出如下:

log4j:WARN No appenders could be found for logger (node).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

GET http://127.0.0.1:9200给了我:

{
  "status" : 200,
  "name" : "Node1",
  "version" : {
    "number" : "1.1.1",
    "build_hash" : "f1585f096d3f3985e73456debdc1a0745f512bbc",
    "build_timestamp" : "2014-04-16T14:27:12Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

和GET http://127.0.0.1:9201给了我

{
  "status" : 200,
  "name" : "Node2",
  "version" : {
    "number" : "1.1.1",
    "build_hash" : "f1585f096d3f3985e73456debdc1a0745f512bbc",
    "build_timestamp" : "2014-04-16T14:27:12Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

看起来很不错但现在如果我得到群集健康状况,我在9200和9201上会有不同的结果:

获取http://127.0.0.1:9200/_cluster/health?pretty=true

{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 6,
  "active_shards" : 6,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 6
}

获取http://127.0.0.1:9201/_cluster/health?pretty=true

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}

为什么同一群集上只有一个节点?为什么它是绿色还是黄色?看起来集群不起作用......

如何使其有效? Zen Discovery日志在哪里?

相关问题:

3 个答案:

答案 0 :(得分:3)

Elasticsearch节点无法共享同一数据目录。因此,您需要添加其他参数:-Des.data.path=/path/to/data

 sudo bin/elasticsearch -Des.node.name=Node1 -Des.http.port=9200 
   -Des.data.path=/path/to/data1

 sudo bin/elasticsearch -Des.node.name=Node2 -Des.http.port=9201 
   -Des.data.path=/path/to/data2

这对你有用。另请注意,在这种情况下,您无需指定端口号,因为Elasticsearch会自动获取下一个可用的空闲端口,默认情况下从9200开始。

答案 1 :(得分:0)

我遇到了同样的问题。我通过在配置文件elasticsearch.yml中将参数network.host设置为127.0.0.1来修复它。

答案 2 :(得分:0)

就像其他人所说的那样,你有两个独立的集群,每个集群有一个节点。您使用什么类型的发现,单播或多播? http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html

对于ZenDiscovery日志,使用额外参数启动elasticsearch实例以获取详细日志记录: -Dlogger.zen.discovery=TRACE