Amazon Neptune DB クラスター内のレプリカの数の Auto-scaling - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Neptune DB クラスター内のレプリカの数の Auto-scaling

Neptune 自動スケーリングを使用すると、DB クラスター内の Neptune レプリカの数を自動的に調整して、接続およびワークロードの要件を満たすことができます。自動スケーリングを使用すると、Neptune DB クラスターでワークロードの増加を処理できます。その後、ワークロードが減少すると、自動スケーリングによって不要なレプリカが削除されるため、未使用の容量に対して料金が発生することはありません。

auto-scaling は、すでに 1 つのプライマリライターインスタンスと少なくとも 1 つのリードレプリカインスタンスを持つ Neptune DB クラスターでのみ使用できます (Amazon Neptune DB クラスターとインスタンス を参照)。また、クラスター内のすべての read-replica インスタンスが使用可能な状態である必要があります。read-replica が使用可能以外の状態にある場合、クラスター内のすべての read-replica が使用可能になるまで、Neptune 自動スケーリングは何もしません。

新しいクラスターを作成する必要がある場合は、DB クラスターを作成する を参照してください。

を使用して AWS CLI、スケーリングポリシーを定義し、DB クラスターに適用します。を使用して AWS CLI 、自動スケーリングポリシーを編集または削除することもできます。ポリシーでは、次の自動スケーリングパラメータを指定します。

  • クラスター内に存在するレプリカの最小数と最大数。

  • レプリカ (複数可) - 追加スケーリングアクティビティ間のScaleOutCooldown間隔、およびレプリカ (複数可) - 削除スケーリングアクティビティ間のScaleInCooldown間隔。

  • スケールアップまたはスケールダウンの CloudWatch メトリクスとメトリクストリガー値。

Neptune 自動スケーリングアクションの頻度は、いくつかの方法で抑えられます。

  • 最初に、自動スケーリングでリーダーを追加または削除するには、CPUUtilization 高アラームを少なくとも 3 分間超えるか、低アラームを少なくとも 15 分間超える必要があります。

  • その最初の追加または削除の後、その後の Neptune 自動スケーリングアクションの頻度は、自動スケーリングポリシーの ScaleOutCooldown および ScaleInCooldown 設定によって制限されます。

使用している CloudWatch メトリクスがポリシーで指定した高いしきい値に達し、最後の自動スケーリングアクションからScaleOutCooldown間隔が経過し、DB クラスターに設定したレプリカの最大数がまだない場合、Neptune 自動スケーリングは DB クラスターのプライマリインスタンスと同じインスタンスタイプを使用して新しいレプリカを作成します。

同様に、メトリクスが指定した下限しきい値に達し、前回の自動スケーリングアクションから ScaleInCooldown 間隔が経過し、DB クラスターに指定した最小レプリカ数を超えるレプリカがある場合、Neptune 自動スケーリングはレプリカの 1 つを削除します。

注記

Neptune auto-scaling では、自身が作成したレプリカのみ削除されます。既存のレプリカは削除されません。

neptune_autoscaling_config DB クラスターパラメータを使用して、Neptune auto-scaling が作成する新しい read-replica のインスタンスタイプ、それらの read-replica のメンテナンスウィンドウ、および各新しい read-replica に関連付けるタグを指定することもできます。これらの構成設定は、neptune_autoscaling_config パラメータの JSON 文字列の値として次のように指定します。

"{ \"tags\": [ { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" }, { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" }, ], \"maintenanceWindow\" : \"wed:12:03-wed:12:33\", \"dbInstanceClass\" : \"db.r5.xlarge\" }"

JSON 文字列内の引用符はすべてバックスラッシュ文字 (\) でエスケープする必要があります。文字列内のすべての空白は、通常どおり、任意です。

neptune_autoscaling_config パラメータで指定されていない 3 つの構成設定のいずれかは、DB クラスターのプライマリライターインスタンスの設定からコピーされます。

自動スケーリングが新しいリードレプリカインスタンスを追加する際、DB インスタンス ID の接頭句に autoscaled-reader (例えば、autoscaled-reader-7r7t7z3lbd-20210828) を付けます。また、作成するすべてのリードレプリカに、キー autoscaled-readerTRUE の値でタグを追加します。このタグは AWS Management Consoleの DB インスタンスの詳細ページの [Tags] (タグ) タブで確認できます。

"key" : "autoscaled-reader", "value" : "TRUE"

auto-scaling によって作成されたすべての read-replica インスタンスのプロモーション層は、15 デフォルトでは優先順位が最も低くなります。つまり、フェイルオーバー時には、手動で作成されたものなど、優先順位の高いレプリカが最初に昇格されます。Neptune DB クラスターの耐障害性 を参照してください。

Neptune 自動スケーリングは、Neptune CPUUtilization CloudWatch メトリクスを事前定義されたメトリクスとして使用するターゲット追跡スケーリングポリシーを持つ Application Auto Scaling を使用して実装されます。

Neptune サーバーレス DB クラスターでの自動スケーリングの使用

Neptune サーバーレスは、需要がインスタンスの容量を超えたとき、Neptune 自動スケーリングよりもはるかに迅速に対応し、別のインスタンスを追加する代わりにインスタンスをスケールアップします。自動スケーリングが比較的安定したワークロードの増減に対応するように設計されているのに対して、サーバーレスは需要の急激な増加や変動への対応に優れています。

両者の長所を理解すれば、自動スケーリングとサーバーレスを組み合わせて、ワークロードの変化を効率的に処理し、コストを最小限に抑えながら需要を満たす柔軟なインフラストラクチャを構築できます。

自動スケーリングをサーバーレスと効果的に連携させるには、需要の急増や短期的な変化に対応できるように、サーバーレスクラスターの maxNCU 設定を十分に高く設定することが重要です。そうしないと、一時的な変更によってサーバーレススケーリングがトリガーされず、自動スケーリングによって不要な追加インスタンスが大量に発生する可能性があります。maxNCU を十分に高く設定すると、サーバーレススケーリングはそれらの変更をより迅速かつ低コストで処理できます。

Amazon Neptune auto-scaling を有効にする方法

自動スケーリングは、 AWS CLIを使用する Neptune DB クラスターでのみ有効にできます。 AWS Management Consoleを使用して自動スケーリングを有効にすることはできません。

また、自動スケーリングは、次の Amazon リージョンではサポートされていません。

  • アフリカ (ケープタウン): af-south-1

  • 中東 (アラブ首長国連邦): me-central-1

  • AWS GovCloud (米国東部): us-gov-east-1

  • AWS GovCloud (米国西部): us-gov-west-1

Neptune DB クラスターauto-scaling を有効にするには、次の 3 つのステップが必要です。

1. Application Auto Scaling を使用して DB クラスターを登録する

Neptune DB クラスターに対して auto-scaling を有効にする最初のステップは、Application Auto Scaling を使用して、クラスターをApplication Auto Scaling に登録することです。このとき、 AWS CLI または Application Auto Scaling SDK の 1 つを使用します。クラスターには、すでに 1 つのプライマリインスタンスと少なくとも 1 つの read-replica インスタンスが必要です。

例えば、1 つから 8 つの追加のレプリカで自動スケーリングするクラスターを登録するには、次のように コマンドを使用できます AWS CLI register-scalable-target

aws application-autoscaling register-scalable-target \ --service-namespace neptune \ --resource-id cluster:(your DB cluster name) \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --min-capacity 1 \ --max-capacity 8

これは、RegisterScalableTarget Application Auto Scaling API オペレーションを使用することと同じです。

AWS CLI register-scalable-target コマンドでは、以下のパラメータを使用します。

  • service-namespaceneptune に設定します。

    このパラメータは、Application Auto Scaling API にある ServiceNamespace パラメータと同じです。

  • resource-id — これを Neptune DB クラスターのリソース識別子に設定します。リソースタイプは cluster で、コロン (':') が、それから DB クラスターの名前が続きます。

    このパラメータは、Application Auto Scaling API にある ResourceID パラメータと同じです。

  • scalable-dimension — この場合のスケーラブルディメンションは、DB クラスター内のレプリカインスタンスの数であるため、このパラメータを neptune:cluster:ReadReplicaCount に設定します。

    このパラメータは、Application Auto Scaling API にある ScalableDimension パラメータと同じです。

  • min-capacity – アプリケーションの Auto Scaling で管理するリーダー DB レプリカの最小数。この値は 0 から 15 までの範囲に設定される必要があり、max-capacity の Neptune レプリカの最大数として指定された値以下である必要があります。自動スケーリングが機能するには、DB クラスターに少なくとも 1 つのリーダーが必要です。

    このパラメータは、Application Auto Scaling API にある MinCapacity パラメータと同じです。

  • max-capacity — アプリケーションの自動スケーリングによって管理される既存のインスタンスと新しいインスタンスを含めて、DB クラスター内のリーダー DB レプリカインスタンスの最大数。この値は 0 から 15 までの範囲に設定される必要があり、min-capacity の Neptune レプリカの最小数として指定された値以上である必要があります。

    max-capacity AWS CLI パラメータは、Application Auto Scaling API の MaxCapacityパラメータと同等です。

DB クラスターを登録すると、Application Auto Scaling によって AWSServiceRoleForApplicationAutoScaling_NeptuneCluster サービスにリンクされたロールが生成されます。詳細については、Application Auto Scaling ユーザーガイドApplication auto-scaling のサービスにリンクされたロールを参照してください。

2. DB クラスターで使用するAuto Scaling ポリシーを定義します。

ターゲット追跡スケーリングポリシーは、テキストファイルに保存できる JSON テキストオブジェクトとして定義されます。Neptune の場合、このポリシーは現在、 という名前の事前定義されたCPUUtilization CloudWatch メトリクスとしてのみ Neptune メトリクスを使用できますNeptuneReaderAverageCPUUtilization

次に、Neptune のターゲット追跡スケーリング設定ポリシーの例を示します。

{ "PredefinedMetricSpecification": { "PredefinedMetricType": "NeptuneReaderAverageCPUUtilization" }, "TargetValue": 60.0, "ScaleOutCooldown" : 600, "ScaleInCooldown" : 600 }

ここで TargetValue 要素には、スケールアウト (つまり、より多くのレプリカを追加します)、その下でスケールイン (つまり、レプリカを削除します) をオートスケーリングする CPU 使用率のパーセンテージがこの上に含まれています。この場合、スケーリングをトリガーする目標パーセンテージは 60.0% です。

ScaleInCooldown 要素はスケールインアクティビティが完了してから別のスケールインが開始されるまでの時間 (秒単位) を指定します。デフォルトは 300 秒です。ここで、値 600 は、あるレプリカの削除が完了してから別のレプリカの開始までの間に 10 分以上経過する必要があることを指定します。

ScaleOutCooldown 要素はスケールアウトアクティビティが完了してから別のスケールアウトが開始されるまでの時間 (秒単位) を指定します。デフォルトは 300 秒です。ここで、値 600 は、あるレプリカの追加が完了してから別のレプリカの開始までの間に 10 分以上経過する必要があることを指定します。

-DisableScaleIn 要素はブール値であり、存在しており true に設定いれば、スケールインを完全に無効にします。つまり、auto-scaling ではレプリカが追加される可能性がありますが、レプリカは削除されません。デフォルトでは、スケールインは有効になっており、DisableScaleInfalse です。

Neptune DB クラスターを アプリケーションの Auto Scaling に登録し、テキストファイルに JSON スケーリングポリシーを定義した後、登録された DB クラスターにスケーリングポリシーを適用します。コマンドを使用して AWS CLI put-scaling-policy、次のようなパラメータでこれを行うことができます。

aws application-autoscaling put-scaling-policy \ --policy-name (name of the scaling policy) \ --policy-type TargetTrackingScaling \ --resource-id cluster:(name of your Neptune DB cluster) \ --service-namespace neptune \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --target-tracking-scaling-policy-configuration file://(path to the JSON configuration file)

auto-scaling ポリシーを適用すると、DB クラスターで auto-scaling が有効になります。

コマンドを使用して AWS CLI put-scaling-policy、既存の自動スケーリングポリシーを更新することもできます。

Application Auto Scaling API リファレンスのPutScaling「ポリシー」も参照してください。 Auto Scaling

Neptune DB クラスターから auto-scaling を削除する

Neptune DB クラスターから自動スケーリングを削除するには、 AWS CLI delete-scaling-policy コマンドと deregister-scalable-target コマンドを使用します。