高可用性を実現するために Amazon OpenSearch Service を設定する | アマゾン ウェブ サービス

高可用性を実現するために Amazon OpenSearch Service を設定する | アマゾン ウェブ サービス

ソースノード: 2691649

AmazonOpenSearchサービス は完全にオープンソースの検索および分析エンジンであり、レコメンデーション エンジン、e コマース サイト、カタログ検索などのユースケースで、ビジネスおよび運用データのリアルタイム検索、監視、分析を安全に実行できます。 ビジネスで成功するには、システムの可用性とパフォーマンスが高く、ダウンタイムを最小限に抑え、障害を回避する必要があります。 インフラストラクチャを監視する主な手段として OpenSearch Service を使用する場合、その可用性も確保する必要があります。 OpenSearch Service のダウンタイムは、収益の損失、生産性の低下、ブランド価値の損失など、ビジネスの成果に重大な影響を与える可能性があります。

  可用性を測定するための業界標準 3人制のクラスです。 OpenSearch サービスは、フォローすると 9 XNUMX の可用性を提供します ベストプラクティスこれは、43.83 か月あたりのダウンタイムが XNUMX 分未満であることを保証することを意味します。 この投稿では、ドメインの設定時にベスト プラクティスと推奨事項に従って、高可用性とパフォーマンスを実現するために OpenSearch Service ドメインを構成する方法を説明します。

ドメインの可用性に影響を与える XNUMX つの重要な要素があります。XNUMX つはドメインのリソース使用率で、主にワークロードによって決まります。もう XNUMX つはインフラストラクチャ障害などの外部イベントです。 前者はドメインのパフォーマンスと健全性を継続的に監視し、それに応じてドメインをスケーリングすることで制御できますが、後者は制御できません。 アベイラビリティーゾーンの停止、インスタンスまたはディスクの障害、ドメイン上のネットワークの問題などの外部イベントの影響を軽減するには、複数のアベイラビリティーゾーンに分散された追加の容量をプロビジョニングし、データの複数のコピーを保持する必要があります。 そうしないと、パフォーマンスの低下、可用性の低下、さらには最悪の場合はデータ損失が発生する可能性があります。

ドメインが利用可能でパフォーマンスが高いことを確認するために利用できるオプションを見てみましょう。

クラスタ構成

このセクションでは、クラスターを適切にセットアップするために必要なさまざまな構成オプションについて説明します。これには、デプロイメントの AZ の数の指定、マスター ノードとデータ ノードのセットアップ、インデックスとシャードのセットアップが含まれます。

マルチ AZ 配置

データ ノードは、ドメイン内のインデックス作成と検索リクエストの処理を担当します。 複数のアベイラビリティーゾーンにデータノードをデプロイすると、ゾーンごとのデータストレージと処理の冗長性が追加され、ドメインの可用性が向上します。 マルチ AZ 展開では、完全なアベイラビリティーゾーンが利用できなくなった場合でも、ドメインは利用可能な状態を維持できます。 実稼働ワークロードの場合、 AWS では、ドメインに XNUMX つのアベイラビリティーゾーンを使用することをお勧めします。 可用性を向上させるために、XNUMX つだけをサポートするリージョンには XNUMX つのアベイラビリティーゾーンを使用します。 これにより、シングル AZ 障害が発生した場合でもドメインを利用できるようになります。

専用のクラスターマネージャー (マスターノード)

AWS では XNUMX つの専用クラスターマネージャー (CM) ノードの使用を推奨しています すべての実稼働ワークロードに対応します。 CM ノードは、クラスターの健全性、インデックスとシャードの状態と場所、すべてのインデックスのマッピング、データ ノードの可用性を追跡し、処理中のクラスター レベルのタスクのリストを維持します。 専用の CM ノードがない場合、クラスターはデータ ノードを使用するため、クラスターはワークロードの要求に対して脆弱になります。 タスクのサイズ、主にデータ ノード数、インデックス数、シャード数に基づいて CM ノードのサイズを決定する必要があります。 OpenSearch Service は、リージョンでサポートされている場合、常に XNUMX つのアベイラビリティーゾーンに CM ノードをデプロイします (リージョンにアベイラビリティーゾーンが XNUMX つしかない場合は、XNUMX つのアベイラビリティーゾーンに XNUMX つ、他のアベイラビリティーゾーンに XNUMX つ)。 実行中のドメインの場合、XNUMX つの CM ノードのうち XNUMX つだけが、選出されたリーダーとして機能します。 選択された CM ノードに障害が発生した場合、他の XNUMX つの CM ノードは選挙に参加します。

次の表は、CM サイジングに関する AWS の推奨事項を示しています。 CM ノードは、ノード、インデックス、シャード、マッピングの数に基づいて機能します。 作業が増えるほど、より多くのコンピューティングとメモリを保持し、クラスター状態を操作する必要があります。

インスタンス数 クラスターマネージャーノードのRAMサイズ サポートされる最大シャード数 推奨される最小の専用クラスター マネージャー インスタンス タイプ
1-10 8 GiB 10,000 m5.large.search または m6g.large.search
11-30 16 GiB 30,000 c5.2xlarge.search または c6g.2xlarge.search
31-75 32 GiB 40,000 c5.4xlarge.search または c6g.4xlarge.search
76 – 125 64 GiB 75,000 r5.2xlarge.search または r6g.2xlarge.search
126 – 200 128 GiB 75,000 r5.4xlarge.search または r6g.4xlarge.search

インデックスとシャード

インデックスは、ドキュメントのコレクションを格納する論理構造です。 プライマリ シャード数を指定して、並列処理用にインデックスをパーティション分割します。ここで、シャードは、データを保存および処理するための物理単位を表します。 OpenSearch Service では、シャードはプライマリ シャードまたはレプリカ シャードのいずれかになります。 レプリカを使用するのは、耐久性を確保するためです。プライマリ シャードが失われた場合、OpenSearch Service はレプリカの XNUMX つをプライマリに昇格させます。また、検索スループットを向上させるためにも使用します。 OpenSearch Service は、複数のアベイラビリティーゾーンにデプロイされている場合、プライマリシャードとレプリカシャードが異なるノードおよび異なるアベイラビリティーゾーンに配置されることを保証します。 高可用性を実現するために、AWS では、パフォーマンスと可用性の中断を避けるために、XNUMX ゾーン設定でインデックスごとに少なくとも XNUMX つのレプリカを構成することをお勧めします。 マルチ AZ セットアップでは、ノードに障害が発生した場合、またはまれにアベイラビリティーゾーンに障害が発生した場合でも、データのコピーが残ります。

クラスターの監視と管理

前に説明したように、ベスト プラクティスに基づいて構成を選択するだけでは、仕事の半分にすぎません。 また、リソースの使用率とパフォーマンスを継続的に監視して、ドメインを拡張する必要があるかどうかを判断する必要があります。 ドメインがプロビジョニング不足または過剰に使用されていると、パフォーマンスが低下し、最終的には利用できなくなる可能性があります。

CPU使用率

ドメイン内の CPU を使用してワークロードを実行します。 一般的なルールとして、データ ノードの平均 CPU 使用率を 60%、ピークを 80% にすることを目標にし、100% までの小さなスパイクを許容する必要があります。 可用性を考慮する場合、特にフル ゾーンが使用できないことを考慮すると、50 つのシナリオがあります。 30 つのアベイラビリティーゾーンがある場合、各ゾーンはトラフィックの 40% を処理します。 ゾーンが使用できなくなると、他のゾーンがそのトラフィックをすべて引き受けることになり、CPU 使用率が 33 倍になります。 この場合、可用性を維持するには、各ゾーンの平均 CPU 使用率を約 17 ~ 50% にする必要があります。 60 つのアベイラビリティーゾーンを実行している場合、各ゾーンがトラフィックの XNUMX% を占有します。 ゾーンが使用できなくなると、他の各ゾーンは約 XNUMX% のトラフィックを獲得します。 この場合、平均 CPU 使用率を XNUMX ~ XNUMX% にすることを目標にする必要があります。

メモリ使用率

OpenSearch サービスは 1 種類のガベージ コレクションをサポートしています。 1 つ目は GXNUMX ガベージ コレクション (GXNUMXGC) で、OpenSearch サービス ノードによって使用されます。 AWS グラビトン 2。 32 つ目は同時マーク スイープ (CMS) で、他のプロセッサを搭載したすべてのノードで使用されます。 ノードに割り当てられたすべてのメモリのうち、メモリの半分 (最大 80 GB) が Java ヒープに割り当てられ、残りのメモリは他のオペレーティング システム タスクやファイル システム キャッシュなどによって使用されます。 ドメインの可用性を維持するには、最大 JVM 使用率を CMS では約 95%、G1GC では約 XNUMX% に保つことをお勧めします。 それを超えると、ドメインの可用性に影響があり、クラスターが異常な状態になります。 また、メモリ使用率をアクティブに監視し、ガベージ コレクターをトリガーする自動調整を有効にすることもお勧めします。

ストレージ使用率

OpenSearch Service は、次のいくつかのガイドラインを公開しています。 ドメインのサイジング。 要件に応じて必要なストレージの適切な量を決定できるように、経験に基づいた公式を提供します。 ただし、時間の経過に伴うストレージの枯渇やワークロード特性の変化に注意することが重要です。 ドメインのストレージが不足せず、データのインデックス作成を継続できるようにするには、次のように構成する必要があります。 アマゾンクラウドウォッチ アラームを鳴らして空きストレージ容量を監視します。

AWS では、各シャードが最適なサイズ帯域内に収まるようにプライマリ シャード数を選択することも推奨しています。 データとトラフィックを使用した概念実証テストを通じて、最適なシャード サイズを決定できます。 ガイドラインとして、検索のユースケースでは 10 ~ 30 GB のプライマリ シャード サイズを使用し、ログ分析のユース ケースでは 45 ~ 50 GB のプライマリ シャード サイズを使用します。 シャードはドメイン内のワーカーであるため、データ ノード全体へのワークロードの分散を直接担当します。 シャードが大きすぎる場合、大規模な集約によって Java ヒープにストレスが発生し、クエリのパフォーマンスが低下し、シャードのリバランス、スナップショット、ホットからウォームへの移行などのクラスターレベルのタスクのパフォーマンスが低下する可能性があります。 シャードが小さすぎると、ドメインの Java ヒープ スペースを圧倒し、過剰な内部ネットワークによってクエリのパフォーマンスが低下し、クラスター レベルのタスクが遅くなる可能性があります。 また、ノードあたりのシャード数を、使用可能なヒープ (インスタンスの RAM の半分、最大 32 GB) に比例させて維持することをお勧めします (Java ヒープ 25 GB あたり 1,000 シャード)。 これにより、ドメイン内の任意のデータ ノードのシャード数が XNUMX 個に実質的に制限されます。

まとめ

この投稿では、OpenSearch Service を使用して高可用性ドメインをセットアップするためのさまざまなヒントとテクニックを学びました。これは、OpenSearch Service を XNUMX つのアベイラビリティーゾーンにわたって実行することで、OpenSearch Service のパフォーマンスと可用性を維持するのに役立ちます。

OpenSearch Service のさまざまな機能に焦点を当てた一連の投稿にご期待ください。 この投稿に関するフィードバックがある場合は、コメントセクションに送信してください。 この投稿について質問がある場合は、新しいスレッドを開始してください。 OpenSearchサービスフォーラム にアクセスするか、 AWSサポート.


著者について

ロヒン・バルガヴァ は、AmazonOpenSearchServiceチームのシニアプロダクトマネージャーです。 AWSでの彼の情熱は、お客様がAWSサービスの正しい組み合わせを見つけて、ビジネス目標を達成できるよう支援することです。

プラシャントアグラワル Amazon OpenSearch Service のシニア検索スペシャリスト ソリューション アーキテクトです。 彼は顧客と緊密に協力してワークロードをクラウドに移行するのを支援し、既存の顧客がクラスターを微調整してパフォーマンスを向上させ、コストを節約するのを支援しています。 AWS に入社する前は、検索とログ分析のユースケースに OpenSearch と Elasticsearch を使用するさまざまな顧客を支援していました。 仕事をしていないときは、旅行をしたり、新しい場所を探索したりしています。 要するに、食べる→旅する→リピートするのが好き。

タイムスタンプ:

より多くの AWSビッグデータ