2017-02-15 6 views
0

3つの異なるマシン上で動作するESを持つESクラスタを作成しました。それらをクラスタにするために、私はelasticsearch.yml設定ファイル内の3つのマシン全てに以下のようなユニキャスト設定を追加しました。私は3としてESクラスタからシャードを割り出すことができません

curl -XGET localhost:9200/_cluster/health?pretty 

アムなっNo_of_nodesを実行

discovery.zen.ping.unicast.hosts:[IP1, IP2, IP3] 

は今、私は、以下のコマンドを実行したすべての設定ファイルを変更することなく、クラスタ soから1つのノードを削除したい

curl -XPUT localhost:9200/_cluster/settings -d '{ 
"transient" :{ 
    "cluster.routing.allocation.exclude._ip" : "IP_adress_of_Node3" 
} 
}'; 

これを実行した後、2番目のコマンドを再度実行してクラスタの詳細を取得すると、期待される出力はNO_of_nodesが2である必要がありますが、結果としてノード数= 3まだ表示されていますnノードを除外した後ノードを削除するための手順で間違っていることを誰かに教えてもらえると大きな助けになります。

おかげ

答えて

2

あなたが実際にあなたのクラスタからノードを削除するのではなく、除去のためにそれを準備していないだろう、あなたのクラスタに送信されるコマンドcluster.routing.allocation.exclude._ip。これは、Elasticsearchに、このノードに保持されているすべての断片をこのノードから移動して、代わりに他のノードに格納するように指示します。 これにより、このノードに格納されているシャードの複製不足を引き起こすことなく、ノードが空になるとそのノードを削除できます。

クラスタから実際にノードを削除するには、そのノードをユニキャストホストのリストから削除する必要があります。もちろん、クラスタを再起動するまで、シャットダウンしてリストに残しておくこともできます。ただし、何かを傷つけることはないことがわかっている限り、クラスタを再起動する必要があります。

+0

入力していただきありがとうございます。ユニキャストで作成したエントリは適切ですので、もう1つはありますか?私は私の設定ファイルで私はすべての3つのマシンの設定ファイルのすべての3つのノードのエントリを作ったと言うことを意味する正しい方法ですか? –

+0

また、除外APIを使用すると、除外されたIPの下のシャードを残りのノードに移動する必要がありますが、私のケースでは除外とマークされたノードの下にシャードが表示されます。何が問題になる可能性がありますか –

+0

シャード(レプリケーションファクタ、ディスクスペースなど)を再割り当てしようとすると、Elasticsearchが考慮する他にも、特定のケースではシャードを再割り当てしない理由がいくつかあります。アロケーションの説明api(https://www.elastic.co/guide/en/elasticsearch/reference/master/cluster-allocation-explain.html)を実行して、その出力で新しい質問を作成できますか? –

関連する問題