elasticsearch:当我的三个节点中的两个节点出现故障时,我是否丢失了数据?

时间:2015-10-27 17:19:39

标签: elasticsearch

CentOS上的Elasticsearch 1.7.2

问题:当我的节点B和C出现故障时,我是否丢失了数据?

3节点集群:节点:A,B,C

A是主人(先设置好,然后就这样设计)。相关配置(在所有节点上,然而发生的事情是B丢失了网络访问并且关闭了,结果发现C错误设置为number_of_replicas:1)

node.master: true
node.data: true
index.number_of_shards: 5
index.number_of_replicas: 2

在A上,当其他两个节点都关闭时,我注意到" unassigned_shards"是6.因为我的碎片数是5,这对我来说意味着我有一个问题:

# curl -XGET http://localhost:9200/_cluster/health?pretty=true
{
  "cluster_name" : "elasticsearch-PROD-prod",
  "status" : "red",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 4,
  "active_shards" : 4,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 6,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0
}

果然,在下面的分片列表中,有一个主要分片(#1)是UNASSIGNED

# curl -XGET http://localhost:9200/_cat/shards
index_v3_PROD 4 p STARTED    22578283 12.7gb 10.208.131.56 PROD-node-3a
index_v3_PROD 4 r UNASSIGNED                                   
index_v3_PROD 0 p STARTED    22572884 12.7gb 10.208.131.56 PROD-node-3a
index_v3_PROD 0 r UNASSIGNED                                   
index_v3_PROD 3 p STARTED    22579159 12.8gb 10.208.131.56 PROD-node-3a
index_v3_PROD 3 r UNASSIGNED                                   
index_v3_PROD 1 p UNASSIGNED                                   
index_v3_PROD 1 r UNASSIGNED                                   
index_v3_PROD 2 p STARTED    22580877 12.7gb 10.208.131.56 PROD-node-3a
index_v3_PROD 2 r UNASSIGNED                                   

请注意,碎片1是" p"并且未获取通知。这看起来很吓人!

然后我使用了一个重新路由命令将它分配给A,它确实如此。

curl -XPOST 'localhost:9200/_cluster/reroute' -d '{"commands" : [ {
              "allocate" : {
                  "index" : "index_v3_PROD", 
                  "shard" : 1, 
                  "node" : "PROD-node-3a", 
                  "allow_primary" : true
              }
            }
        ]
    }'

但是碎片1从一个非常小的尺寸开始然后有点增长(我认为从新数据发送到ES)。我非常感觉碎片1的数据丢失了。

有人可以确认分片1数据是否看起来可疑/丢失(或不是)?

1 个答案:

答案 0 :(得分:0)

Andrei将此作为评论发布,而不是答案,所以我会:

是的,数据丢失了。

具有" allow_primary":true且该分片不可用的主分片的重新路由命令将从头开始分片,为空。您应该已尽一切可能将该节点带回群集中。

这里的脚注是:我们不知道如何恢复群集节点。其他2个节点显示了这种状态:

# curl -XGET http://localhost:9200/_cluster/health?pretty=true
{
  "error" : "MasterNotDiscoveredException[waited for [30s]]",
  "status" : 503
}

我们找不到任何诊断步骤,日志显示我们没什么用处。两个节点都报告了这个问题(总共有3个,所以所需的碎片的唯一副本就是这两个中的一个)。

我们验证了所有网络通信,并重新启动了其他节点,但它们没有连接到群集。

最终,我们建立了一个新的3节点集群,并且更好地确保每个节点都存在每个节点,以便集群可以承受丢失2个节点。