2017年10月9日月曜日

はじめてのクラスタ破損

朝、目覚めのコーヒーを入れ、iPadでFessの管理画面に入ると。
帯が赤い。
クラスタ破損です。
一気に目が覚めました。

ざっとインデックスを眺めると、Fess.2017xxxxは正常。
.crawlerも正常。
.suggest関連がいくつか破損したようです。

重要なインデックスが破損していないことを確認して、おちついて朝食を食べます。

レプリカごと吹き飛んでしまったときは、_cluster/rerouteにPOSTで復旧させます。
es5.5で仕様が変わったようですね。
今回は復旧の見込みがないのと、大したデータが入っていないので、allocate_empty_primaryでシャードを戻します。

公式の解説はこちら。
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/cluster-reroute.html

fessはクラスタ操作をGUIから行えるので、「rest」のアイコンから操作します。
実行したのは以下の通り。
{
  "commands": [
    {
      "allocate_empty_primary": {
        "index": ".suggest_badword",
        "shard": 0,
        "node": "xxxxxx",
        "accept_data_loss": true
      }
    }
  ]
}
shardには破損したシャードの番号、nodeはプライマリシャードを割り当てるノードを入れてください。
accept_data_lossを明示しないと、操作を受け付けません。

今回は大事に至りませんでしたが、バックアップや避難訓練は大切です。
レプリカを置いていても、やっぱりsnapshotは大事ですね。