2017-12-27 6 views
0

5.6から6.1にクラスタをアップグレードしました。私はdocumentationとしてローリングアップグレードを行いました。私が使っていた設定は、6.1でもう利用できないようです。それはうまくいきましたが、今では私はシャード割り当てを有効にすることさえできないので、私の最後のノードはそのシャードを割り当てません。この中エラスティックサーチ - アップグレード後の固定設定を取り除く方法

curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "persistent" : { 
     "cluster.routing.allocation.enable" : "all" 
    } 
} 

結果:

{ 
    "error" : { 
    "root_cause" : [ 
     { 
     "type" : "remote_transport_exception", 
     "reason" : "[inoreader-es4][92.247.179.253:9300][cluster:admin/settings/update]" 
     } 
    ], 
    "type" : "illegal_argument_exception", 
    "reason" : "unknown setting [indices.store.throttle.max_bytes_per_sec] did you mean [indices.recovery.max_bytes_per_sec]?" 
    }, 
    "status" : 400 
} 

どんなに私は、私はいつもこのエラーを取得変更しようとするものを設定、このような単純なものをやって。 はい、私はindices.store.throttle.max_bytes_per_secを5.xで永続的な設定として設定しましたが、今は新しい名前に設定する必要がありますが、どうすれば削除できますか? elasticsearch.ymlにはありません。

答えて

2

この値を設定解除する必要があります。あなたが古いバージョンに残っている場合は、次のコマンドを使用することができます(nullと設定解除5.0には追加されました):

PUT _cluster/settings 
{ 
    "persistent": { 
    "indices.store.throttle.max_bytes_per_sec": null 
    } 
} 

しかし、これは、「持続的な設定で失敗します[indices.store.throttle.max_bytes_per_sec]既にアップグレードされている場合は、クラスタ内で「認識されません」と表示されます。

現時点で(Elasticsearchバージョン6.1.1)削除された設定はarchived.indices.store.throttle.max_bytes_per_secの下にアーカイブされます。

PUT _cluster/settings 
{ 
    "persistent": { 
    "archived.*": null 
    } 
} 

ただし、存在するのはa bug that only lets you unset archived settings before you change any other settingsですが、この設定やその他のアーカイブ設定は削除できます。

このバグの影響を受けたその他の設定を既に行っている場合は、もう一度5.6にダウングレードして設定を解除してから(この回答の一番上にあるコマンド)、アップグレードを再度実行してください。マスターであり、他のすべてのノードがそのマスターに加わり、訂正されたクラスター状態を受け入れる限り、1つのノードでこれを実行するだけで十分です(他のノードはすべて停止します)。いずれにしても、事前にスナップショットを作成してください。述べたように(それは今ちょうど計画段階ではありますが)

将来のバージョンではarchived.*行動は、おそらくin the ticketを変更します:

[...]私たちは、未知と壊れたクラスタの設定をアーカイブするべきではありません。 代わりに、クラスタの状態を回復する必要があります。アップグレードの場合の のソリューションは、次のメジャー バージョンで不明または壊れていた設定に対処するために、 の設定を以前のバージョンにロールバックしてから、アップグレードを続行することです。

手動で編集、あるいはディスク上のクラスタの状態を削除することは非常に危険な音:クラスター状態は、テンプレート、インデックス、ルーティングテーブル、などの情報(GET /_cluster/stateを自分のためにチェック)の多くが含まれています...あなたが持っている場合でも、データノードのデータがクラスタ状態を失った場合、データにアクセスすることはできません(「地図」、断片から索引を作成する方法が欠落しています)。私が正しく覚えていれば、より最近のESバージョンでは、データノードがクラスタの状態をキャッシュし、それを元に復元しようとしますが、それは最後の手段であり、私はそれに頼りたくありません。また、それがあなたの悪い設定を取り戻すことができないかどうかもわかりません。

PS:無料でupgrade assistantの5.6から6.xへの移行をお勧めします。

+0

はい、この設定(およびその他の一時的な設定または永続的な設定)は、クラスタに同じメッセージで失敗します。それは非常に悪いニュースです...私のクラスターは8TBです。私は実際にそれをダウングレードするという考えが嫌いです...私はすべてのノードをシャットダウンし、それぞれのクラスター状態ファイルを削除することを考えています。もちろん私はそれを最初にバックアップします。私はそこに設定が保存されていることを知っていますが、それはバイナリファイルであり、私はそれを編集するのが快適ではありません。あなたはクラスタ状態ファイルを削除するのが安全だと思いますか?マスターノードは、この厄介な永続的な設定なしで再作成しますか?ありがとう! – Jacket

+0

私は自分の答えを広げました:たぶん、単一のノードをダウングレードして、それからあなたの魔法を働かせることができます。そして、クラスタの状態に注意してください。これは、実際にはどのクラスタにとっても重要な情報であり、保持してバックアップする必要があります。 – xeraa

+0

これまでのご協力ありがとうございます!私はちょうどその解決策を試しました - すべてのノードを停止し、マスター適格ノードを1つダウングレードし、設定を無効にして、再度アップグレードしました。しかし、それは始めることを拒否しました - '読み取りに失敗しました[ID:84、レガシー:false、ファイル:/home/elasticsearch/nodes/0/_state/global-84.st] ' "インデックスパターンはnullでも空でもかまいません。ナル "を得た。私は手動で別のノードから状態ファイルをコピーしなければならなかったので、私は自分のクラスターを生き返らせることができました...もちろん、設定はもう一度ですが... unknown setting [archived.indices.store.throttle.max_bytes_per_sec]に変更されました。後で別のノードでもう一度試してみます。 – Jacket

関連する問題