こんにちは。ReviCo[レビコ]開発チームの金澤です。
本年も当ブログは細く長くを目標に続けていきますのでよろしくお願いします。
今回は、昨年末にOpenSearchが破損した事件についてまとめようと思います。
OpenSearch破損…
去る2023年12月25日、我が家の子どもたちも無事にサンタさんからプレゼントを受け取り、今年もあと1週間かぁと思いながら出社すると、開発環境のOpenSearchがぶっ壊れていました…。
当時の構成と事象
構成
- t3.small.search インスタンス
- シングルノード
事象
- プログラムからOpenSearchに接続できなくなった
- ダッシュボードのログイン画面にはアクセスできるが、マスターユーザーのログイン情報でログインできなくなった
- OpenSearchのドキュメントがほぼ0になっていた
- クラスターのステータスが黄色から緑に変わっていた(シングルノード構成なので緑になるのはおかしい)
このように大量のドキュメントを削除するようなプログラムは無く、発生が金曜の深夜でヒューマンエラーでもないということで、大慌てでAWSのサポートに泣きつきました…。
AWSサポートからの回答
ざっと要約すると以下とのことでした。
- 当該時間にノードに問題が発生し、ノードの入れ替えが行われていた
- シングルノード構成だったため、レプリカシャードが無く、ノード入れ替えでデータがロストした
- ログイン情報などは .opendistro_security インデックス にあるが、これもロストしたためログインできなくなった
復旧について
データは、スナップショットから復元することは可能(保持期間が2週間なので早めに作業すべし)
Amazon OpenSearch Service でのインデックススナップショットの作成 - Amazon OpenSearch Serviceログイン情報はスナップショットから復元できないので、マネジメントコンソールから設定し直す
ただし、復元作業はマネコンではなくOpenSearchのAPIを叩かないといけない上に、リクエストに認証情報を載せる必要があり、その準備がとても手間でした…。
最終的にはデータを再流し込みする方が早いと判断し、スナップショットからは復元しませんでした。
マスターユーザーのIDパスワードはマネコンで再設定しました。
教訓:OpenSearchはシングルノードで動かしちゃあかん…
AWSサポートからも「データロストを回避したい場合は、少なくともデータノードが2台以上になるようスケールアウトしてください」とアドバイスいただいたので、大人しく2台構成にしました。
t3.small.searchなら月40ドル程度…追加コストにはなりますが、復旧の工数(と精神的ダメージ)を考えれば…。
おわりに
「OpenSearch ダッシュボード 入れなくなった」で検索しても、有用そうな記事は以下のre:Postしか引っかからず、投稿者の方も結局満足な情報が得られないままクローズしていました…。
この記事が同じような事象で困っている方の一助になれば幸いです。
OpenSearch インスタンスにログインができなくなり、データも損失したので復旧したい | AWS re:Post
ecbeingでは一緒にサービスを盛り上げてくれるエンジニアを募集しています!
careers.ecbeing.tech