Amazon OpenSearch Service ドメインのアップグレードに時間がかかっているのはなぜですか?
最終更新日: 2021 年 7 月 30 日
Amazon OpenSearch Service クラスターをアップグレードしようとしていますが、アップグレードに時間がかかっています。なぜこれが起こっているのですか? また、OpenSearch Service でクラスターのアップグレードステータスをより適切にモニタリングするにはどうすればよいですか?
簡単な説明
OpenSearch Service で設定を変更すると、ブルー/グリーンデプロイプロセスが使用されます。ブルー/グリーンデプロイでは、2 つの本稼働環境が実行されます (一方はライブ環境で、もう一方はアイドル状態で)。2 つの本稼働環境は、ソフトウェアの更新に応じて切り替わります。OpenSearch Service の場合、ドメインの更新中に新しい環境が作成され、更新が完了すると、ユーザーは新しい本稼働環境にルーティングされます。この動作により、ダウンタイムが最小限に抑えられ、デプロイが失敗した場合に備えて、元の環境が維持されます。
OpenSearch Service でクラスターのアップグレードステータスをより適切にモニタリングするには、以下の各段階でブルー/グリーンデプロイプロセスをモニタリングします。
- 新しいノードの作成
- データの移行
- 古いノードの削除
解決方法
すべてのクラスタースナップショットとノード ID を取得する
移行前に、OpenSearch Service はクラスターが適格性テストに合格すると、クラスターの自動スナップショットを作成します。スナップショット中、進行状況ステータスが「null」または 0% と表示されることがあります。スナップショットが取得されると、パーセンテージ値が更新されます。スナップショットの完了にかかる時間は、ストレージ容量によって異なります。スナップショットは増分的に取得されるため、以前の自動スナップショットからデータに大幅な変更があった場合、スナップショットの完了に時間がかかることがあります。
次の _snapshot リクエストにより、現在実行中のすべてのスナップショットを、詳細なステータス情報とともに取得します。
GET /_snapshot/_status
snapshot API の詳細については、Elasticsearch ウェブサイトの Monitor snapshot progress を参照してください。
クラスターで現在実行中のスナップショットをすべて取得するには、現在のパラメータを使用します。
GET /_snapshot/<snapshot-repository>/_current
すべてのデータノードの ID を取得するには、以下のように cat nodes API を使用します。
GET _cat/nodes
ノード ID を使用して、古いノードと新しいノードを識別できます。新しいノードでシャードの数が増加すれば、移行がスムーズに行われています。最終的に、すべてのシャードが新しいノードに移動し、古いノードは空になります。
ブルー/グリーンデプロイプロセスのモニタリング
クラスターがブルー/グリーンデプロイプロセスに入ると、新しいノード (グリーンの環境) が表示されます。その後、シャードは古いノード (ブルーの環境) から移行されます。データの移行またはシャードの再割り当てが完了すると、古いクラスターは切断されます。
ブルー/グリーンデプロイプロセスは、新しいノード、データ移行、および古いノードの削除の 3 つのステージで監視できます。
ステージ 1: 新しいノードの作成
Amazon CloudWatch でノードクラスターメトリクスをモニタリングして、ノード数を取得できます。または、cat nodes API を使用して、以下のようにクラスター内のすべてのノードを一覧表示することもできます。
GET /_cat/nodes?v&pretty
更新するのはクラスターのバージョンのみであるため、ノード数 (古いノードと新しいノード) が増加するとすぐにプロセスは完了します。その後、OpenSearch Service ドメインが [Active] (アクティブ) 状態に戻る場合があります ([Processing] (処理中) 状態になった後)。専用ノードを持つクラスターでは、ノード数が古いノードと新しいノードの合計値に増加することがわかります。古い設定のリーダーノードはシャットダウンされ、ノード数はリーダーノードの数だけ減少します。例えば、3 つの専用リーダーノードを持つ OpenSearch Service クラスターは、3 つのノードずつ減少します。
ステージ 2: データ移行
第 1 段階が完了するとすぐに、シャードの移行が開始されます。データ移行中は、古いノードのシャード数が減少し、新しいノードのシャード数が増加します。cat allocation API を使用して、各ノードに割り当てられているシャードの数を確認できます。
GET /_cat/allocation?v&pretty
詳細については、Elasticsearch ウェブサイトの「cat allocation」を参照してください。
ステージ 3: 古いノードの削除
すべてのシャードが新しいノードに移行されると、古いノードがクラスターから削除されます。その後、ノードカウントは、設定した元のノード数に戻ります。この段階では、ブルー/グリーンデプロイと更新プロセスが完了します。