Elasticsearch (ES) クラスターのリソース使用率が継続的に高く、パフォーマンスがビジネス要件を満たさなくなった場合は、サービスの安定性を回復するためにクラスター構成をアップグレードします。ノード数の増加、ノードスペックの向上、ディスク領域の拡張、または新しいノードタイプの追加によって実現できます。
事前準備
クラスター構成のアップグレードは、サービスレイテンシー、構成の競合、課金の変更を引き起こす可能性があります。操作を実行する前に、以下の情報をよくお読みください。
-
サービスの安定性
-
クラスター構成変更中のサービス安定性に関するルール:
クラスターの状態
サービスへの影響
推奨される操作
レプリカありの通常負荷
通常負荷:CPU ≤ 60%、ヒープメモリ ≤ 50%、ロード < コア数。
サービスは利用可能ですが、パフォーマンスが若干低下する可能性があります。
追加の操作は不要です。
レプリカなしの高負荷
高負荷:アップグレード中に同時書き込みまたはクエリが多く、CPU > 60% またはヒープメモリ > 50%。
アクセスのタイムアウトが発生することがあります。
-
クライアント側でリトライ機構を有効にしてください。
-
アップグレード前にインデックスのレプリカ数を増やしてください。
異常な状態での高負荷
アクセスのタイムアウトやサービスのジッターが発生することがあります。
変更を実行する前に、クラスターを正常な状態に復旧させてください。
-
-
メンテナンスウィンドウ:オフピーク時間帯に操作を実行してください。
-
-
容量計画
必要なクラスター容量を適切に評価してください。
-
構成制約
-
Elasticsearch のバージョンアップとクラスター構成のアップグレードを同時に行うことはできません。
-
1 回のアップグレード操作で変更できるノードタイプは 1 種類のみです。
-
-
コストへの影響
アップグレード注文を送信すると、システムは更新後の構成に基づいて課金を行います。課金ルールの詳細については、「従量課金」および「サブスクリプション」をご参照ください。
アップグレード前のチェック
以下のチェックを完了せずにアップグレードを実行すると、クラッシュ、データ損失、またはサービスの利用不可を引き起こす可能性があります。各項目を慎重に確認してください。
-
クラスターのヘルス状態
GET _cluster/healthを実行し、クラスターのステータスが GREEN であることを確認してください。クラスターが異常な場合は、「クラスター変更エラー - 異常なクラスターステータス」を参照して問題を解決してください。 -
負荷の安全性
GET _cat/nodes?vを実行してください。CPU 使用率は 60% 以下であることを推奨します。それ以上の場合は、クライアント側でリトライ機構を有効にし、インデックスのレプリカ数を増やしてください。 -
インデックスの準備状況
-
GET /_cat/indices?vを実行し、CLOSE 状態のインデックスがないか確認してください。存在する場合は、POST /<index_name>/_openを実行して一時的にオープンしてください。これを行わないと、以下の理由により構成変更が失敗する可能性があります。-
CLOSE 状態のインデックスがあるクラスターは GREEN ステータスを達成できません。Elasticsearch は、シャード割り当てルールの変更など、センシティブな操作に対して GREEN ステータスを必要とします。
-
構成変更中、クラスターはシャードを再割り当てします。
-
CLOSE 状態のインデックスのシャードは再割り当てに参加できません。
-
これにより、GREEN ステータスを必要とする操作が失敗します。
-
クラスターステータスが GREEN に到達できず、YELLOW が最高となります。
-
-
-
GET _cat/indices?vを実行し、各インデックスのレプリカ数が少なくとも 1 以上であることを確認してください。複数のアベイラビリティゾーンにデプロイされたインスタンスの場合、構成変更中は任意のインデックスのレプリカ数がアベイラビリティゾーン数未満であることを確認してください。レプリカ数を 1 に設定することを推奨します。変更完了後、手動でレプリカ数を増やすことができます。
-
-
シャードのバランス
GET _cat/shards?vを実行し、アンバランスなシャードがないか確認してください。重要アップグレード前にシャードのバランスを確認することで、パフォーマンスの劣化やクラッシュを防止できます。
-
prirep:レプリカシャード (r) がUNASSIGNEDになっていないか確認してください。 -
state:シャード移行が長時間RELOCATING状態で停止していないか確認してください。
これらの問題があると、新規ノードがシャードを正しく受け取れず、アップグレード後にクラスターステータスが YELLOW または RED のままになる可能性があります。問題が発生した場合は、「クラスター負荷の不均等に対するソリューション」を参照して解決してください。
-
方法 1: コンソールによるアップグレード
-
インスタンスページで、アップグレード設定をクリックします。
別の入り口:ご利用のインスタンスの基本情報ページで、をクリックします。
-
アップグレード/ダウングレードページで、ビジネス要件に基づいて構成パラメーターを調整します。
重要利用可能な構成パラメーターはクラスタータイプおよびバージョンによって異なる場合があります。アップグレードページに表示されるパラメーターが優先されます。
-
アベイラビリティゾーン数の変更には、以下のルールが適用されます。 特定のアベイラビリティゾーンで指定したスペックの在庫が不足している場合、アップグレード前にそのアベイラビリティゾーン内のノードを 移行 する必要があります。
拡張:アベイラビリティゾーン数を 1 から 2 または 3 に増やすことができます。
-
ノードスペックをアップグレードできます。以下のストレージタイプは、パフォーマンスが低い順に並べられています。
-
旧世代クラウドディスク:標準クラウドディスク → 超高速クラウドディスク → SSD クラウドディスク。
説明これらのディスクタイプは一部のリージョンおよびアベイラビリティゾーンでフェーズアウトされています。ESSD の選択を推奨します。
-
ESSD:ESSD (エンタープライズ SSD) は 25 GbE ネットワーキングおよび RDMA 技術を組み合わせ、1 ディスクあたり最大 100 万 IOPS のランダム読み書き性能と低遅延を実現します。
-
ローカルディスク。
説明ローカルディスクは ECS インスタンスが配置されている物理マシン上のストレージデバイスです。ECS インスタンスにローカル記憶域へのアクセスを提供し、高ストレージ I/O パフォーマンスおよびコスト効率の高いマスストレージが必要なシナリオに適しています。
-
-
インテリジェント更新(デフォルトで有効):システムは構成変更に基づいて最適な更新方法を自動選択します。この機能を無効にして、手動で更新方法を指定することもできます。
更新方法
メカニズム
所要時間
サービスへの影響とユースケース
ブルーグリーンアップデート
新規ノードの追加 → データのコピー → シームレスなスイッチオーバー
長い
-
ノードの IP アドレスが変更されます。一時的なクラスターのパフォーマンス変動が発生する可能性があります。
-
更新にかかる時間が重要ではなく、クラスターの可用性が重視されるシナリオに適しています。
ローリングアップデート
ノードのローリング再起動(データコピー不要)。
短い
-
ノードの IP アドレスは変更されません。一時的なクラスターのパフォーマンス変動が発生する可能性があります。
-
クラスターがパフォーマンスボトルネックに陥っており、迅速な更新が求められるシナリオに適しています。
重要リソース使用率が高い場合(例:CPU > 60%)は、インプレース更新の選択に注意してください。
-
-
強制アップデート:ヘルスチェックをスキップし、クラスターの強制再起動をトリガーします。これにより、長時間のサービス中断(回復時間はデータ量に依存)が発生する可能性があるため、クラスターがすでに利用不可になっている緊急時のスケーリングにのみ使用してください。
-
-
Terms of ServiceおよびService Level Agreementをお読みください。同意する場合は、今すぐ購入をクリックします。システムは選択した課金方法に基づいて請求を行います。
変更中、クラスターステータスは初期化中に変化します。クラスターのパフォーマンスが一時的に変動し、一時的なリクエストの失敗が発生する可能性があります。変更が完了すると、クラスターステータスは正常に更新されます。
方法 2:API からアップグレード
詳細については、「UpdateInstance」の API ドキュメントをご参照ください。
監視と検証
-
アップグレード開始後の進行状況を確認するには、Elasticsearch クラスターコンソールでご利用のインスタンスの基本情報ページに移動します。
詳細の表示をクリックします。
-
アップグレード完了後、クラスターの基本情報ページで構成が反映されていることを確認します。
-
クラスターステータスが Active に戻っています。
-
アベイラビリティゾーン
-
ノード数およびストレージスペック:新規ノードがクラスターに参加し、ストレージスペックが正しいことを確認します。
-
シャードのバランス:
GET _cat/allocation?vを実行し、シャードのディストリビューションを確認します。シャードがアンバランスな場合は、「クラスター負荷の不均等に対するソリューション」を参照して問題を解決してください。
-
よくある質問
アップグレードとパフォーマンスメトリクス
Q:アップグレードすれば必ずパフォーマンスが改善するのでしょうか?
A:必ずしもそうとは限りません。CPU、メモリ、ディスクなどのリソースをアップグレードしても、万能ではありません。アップグレードを決定する前に、具体的なボトルネックを分析してください。
-
CPU ボトルネック:短時間のスパイクではなく、長時間にわたって CPU 使用率が 80% を超えている状態。
-
メモリボトルネック:頻繁な長時間のガベージコレクション (GC)、メモリスワッピング、OutOfMemory (OOM) エラー。
-
ディスクボトルネック:%util メトリックだけでなく、実際の I/O スループットに注目してください(詳細は以下を参照)。
-
ネットワークボトルネック:ネットワーク帯域幅が継続的に飽和しており、レイテンシーが顕著に高い状態。
不要なリソースの浪費を避けるため、アップグレード前に実際のボトルネックを特定してください。場合によっては、リソースを単純にアップグレードするよりも、インデックス、クエリ、または構成を最適化する方が効果的です。
Q:%util が 100% でもシステムが正常なのはなぜですか?
A:iostat の %util メトリックは、デバイスが I/O 処理中(アイドルでない)だった時間の割合を示します。I/O リクエストの量を測定するものではなく、I/O リクエストの存在を示すだけです。最新のディスクデバイスは複数の I/O リクエストを並列処理できるため、%util が 100% であってもデバイスが飽和しているとは限りません。
-
例として、1 つの I/O リクエストを処理するのに 0.1 秒かかり、同時に 10 個のリクエストを処理できるディスクを考えます。
-
10 個の I/O リクエストが順番に送信された場合、処理完了までに 1 秒かかり、%util は 100% になります。
-
10 個の I/O リクエストが一度に送信された場合、並列処理により 0.1 秒で完了します。1 秒間隔で測定すると、%util は 10% になります。
-
重要:%util メトリックは最新のストレージシステムではほとんど意味をなさなくなっており、アップグレードの判断基準として単独で使用すべきではありません。
Q:ディスクボトルネックを示すメトリックは何ですか?
A:%util に頼らず、以下のメトリックに注目してください。
-
I/O スループット:実際のデータ読み書きレート(MB/s)。ビジネス要件と比較します。
-
応答時間:I/O リクエストのレイテンシー。クエリパフォーマンスに直接影響します。
-
IOPS:1 秒あたりの I/O 操作数。ビジネスモデルと照らし合わせます。
-
キューの深さ:保留中の I/O リクエスト数。
推奨:数時間にわたって持続しない %util 100% は通常、懸念する必要はありません。真のパフォーマンスボトルネックは、fio などの専門ツールを使用して実際の最大帯域幅および IOPS を測定することで特定してください。
Q:ディスクのパフォーマンスボトルネックを評価するにはどうすればよいですか?
A:ディスクパフォーマンスを評価するには、以下の手順に従ってください。
-
ビジネスモデルを分析:読み書き比率、I/O サイズなどの特性を理解します。
-
実際のスループットに注目:%util メトリックではなく、ビジネスニーズと比較します。
-
専門ツールでテスト:fio などのツールを使用して実際のビジネスワークロードをシミュレートし、実環境でのディスクパフォーマンスをテストします。
-
クエリレイテンシーを評価:ES クエリの応答時間がビジネス要件を満たしているか確認します。
-
主要メトリックを監視:インデックス作成レイテンシーや検索レイテンシーなどの内部 ES メトリックを追跡します。
アップグレードが必要かどうかを判断するには、CPU 使用率、メモリ使用量、I/O スループット、クエリレイテンシーなど、包括的なパフォーマンスメトリックを分析してください。単一のメトリックに基づいて判断しないでください。