5

Elasticsearch (5.0.1) クラスターをセットアップしています。

3 つのマスター適格ノードがあります。

el-m01
el-m02
el-m03

クラスタのアセンブルに失敗し、すべてのマスター ノードで次のNotMasterException例外がログに記録されます。

[2016-11-21T15:24:13,274][INFO ][o.e.d.z.ZenDiscovery     ] [el-m01] failed to send join request to master [{el-m02}{bBhsu3fJSj-MyiWJGhQmog}{_IzdeUd4Sv6g-rhemGjEVQ}{192.168.110.118}{192.168.110.118:9300}{rack=r1}], reason [RemoteTransportException[[el-m02][192.168.110.118:9300][internal:discovery/zen/join]]; nested: NotMasterException[Node [{el-m02}{bBhsu3fJSj-MyiWJGhQmog}{_IzdeUd4Sv6g-rhemGjEVQ}{192.168.110.118}{192.168.110.118:9300}{rack=r1}] not master for join request]; ], tried [3] times

デバッグ ログを有効にすると、次のことがわかりました。

マスター選出が行われ、成功しています。ただし、すべてのノードがマスターを選択しましたが、マスターであると考えるノードはありません。すなわち:

  • el-m01 は el-m02 がマスターだと思っている
  • el-m02 は el-m03 がマスターだと思っている
  • el-m03 は el-m01 がマスターだと思っている

ここで何が起きてるの?

4

2 に答える 2

19

状況は次のとおりです。VM を複製してすべてのマスターを取得すると、すべてのノードが同じノード IDを持ちます。

これは、すべてのノード ID を一覧表示する次のコマンドで確認できます。

GET /_cat/nodes?v&h=id,ip,name&full_id=true

クラスターが形成されていないため、各ノードを個別にクエリする必要があることに注意してください。つまり、次のようになります。

curl 192.168.110.111:9200/_cat/nodes?v&h=id,ip,name&full_id=true
curl 192.168.110.112:9200/_cat/nodes?v&h=id,ip,name&full_id=true
(...)

これは悪いです。ノード ID は一意である必要があります。

この状況を解決するには、/var/lib/elasticsearchすべてのノードのインデックス ( ) を削除する必要があります。これにより、 elasticsearch 内のすべてのデータが削除され、ノード ID もリセットされます。

そもそもこの問題を回避するには、次のことができます。

  • A. VM のクローンを作成した後、elasticsearch をインストールする
  • B. ansible や puppet などの自動化ツールを使用して、elasticsearch を管理します。
于 2016-11-25T18:52:09.987 に答える
1

Elasticsearch データ ディレクトリ$ES_HOME/data(RPM の場合) には、/var/lib/elasticsearchElasticsearch の初回起動時にランダムに生成されたノード ID が含まれています。このディレクトリが、クラスタを形成すると予想される複数のインスタンスにコピーされた場合、次のエラーが表示されます。

failed to send join request to master [..] IllegalArgumentException [..] found existing node [..] with the same id but is a different node instance

ただし、minimum_master_nodes満たされていない場合は、問題の兆候が少ないエラーが表示されます。

failed to send join request to master [..] NotMasterException [..] not master for join request

Github: https://github.com/elastic/elasticsearch/issues/32904

この問題は、データ ディレクトリの内容を削除することで解決できます。データ ディレクトリは最初からコピーしないでください。

于 2018-08-16T11:50:04.167 に答える