DR REST API レート リミッタは、API リソースの枯渇や総当たり攻撃のリスクに対処するためのメカニズムです。

レート リミッタは、 Site Recovery Manager 8.8 以降および vSphere Replication 8.8 以降の DR REST API で使用できます。DR REST API レート リミッタは、セキュリティとパフォーマンスのトレードオフです。
表 1. DR REST API 要求レート制限の階層
階層 説明 構成 デフォルト値
IP address IP アドレスあたりの要求数を考慮します。 ipRateLimitQuota 100
ipRateLimitWindow 60,000 ミリ秒(1 分)
Service DR REST API サービス名あたりの要求数を考慮します。DR REST API には、srmvrconfigure という 3 つのサービス名があります。「srm v1」と「srm v2」のサービス名は「srm」で同じです。 serviceRateLimitQuota 1000
serviceRateLimitWindow 60,000 ミリ秒(1 分)
Session セッションあたりの要求数を考慮します。 sessionRateLimitQuota 50
sessionRateLimitWindow 60,000 ミリ秒(1 分)
n/a ランタイム メモリのフィンガープリントを減らすために、古い要求のレート リミッタ データ構造を定期的にクリーンアップします。値 0(ゼロ)は、クリーンアップがまったく実行されないことを意味します。 rateLimitLogPurgeInterval 7,200,000 ミリ秒(2 時間)

DR REST API レート リミッタは、チェーンとして機能する 3 つの階層で構成され、階層の基準に照らして、受信される要求をレート制限します。階層の基準を満たしている場合、要求応答はすぐに返されるため、残りの階層チェーンはスキップされます。DR REST API レート リミッタの階層チェーンは、IP アドレス、サービス、セッションの順番で構成されています。

DR REST API レート リミッタの構成を変更するには、dr-rest-api.properties ファイル内の指定されたプロパティの値を追加または更新します。このファイルは /opt/vmware/dr-rest/lib/ フォルダにあります。DR REST API の dr-rest-api.properties 構成ファイルでレート リミッタ プロパティが明示的に定義されていない場合、レート リミッタはデフォルト値を使用します。構成値を事前定義するには、必要な値を設定します。該当する構成がない場合は、その前に構成を追加します。更新された値は、レート制限の新しい時間枠が開始されると有効になります。

dr-rest-api.properties ファイルの例

...
ipRateLimitQuota=100
ipRateLimitWindow=60000
serviceRateLimitQuota=1000
serviceRateLimitWindow=60000
sessionRateLimitQuota=50
sessionRateLimitWindow=60000
rateLimitLogPurgeInterval=0
...

HTTP 応答

すべての DR REST API 要求応答には、次のヘッダーが含まれます。
  • RateLimit-Limit - その時間枠における、クライアントによる要求に対するサーバの割り当て。
  • RateLimit-Remaining - 現在の時間枠において残っている割り当て。
  • RateLimit-Reset - 現在の時間枠における残り時間(ミリ秒単位で指定)。
注目: HTTP 要求がレート制限されると、応答エラー コードが 429 Too Many Requests になり、ヘッダー RateLimit-Remaining は 0(ゼロ)になります。DR REST API 応答には、クライアント要求を処理した最後のレート制限階層のレート制限ヘッダーが含まれます。

最適なレート制限構成を設定するためのベスト プラクティス

最適なレート制限構成を設定するには、さまざまな要素を考慮する必要があります。

  • レート リミッタ構成のデフォルト値から開始します。
    • ipRateLimitQuotaipRateLimitWindowserviceRateLimitQuotaserviceRateLimitWindowsessionRateLimitQuotasessionRateLimitWindow
    • rateLimitLogPurgeInterval
  • 要求応答をリッスンし、エラー コード 429 Too Many Requests が含まれている場合はそれに応じてアクションを実行します。
    • 次のレート制限時間枠を待機し、レート制限された要求を繰り返します。
    • クライアント側の要求の強度を減らします。
    • レート制限の構成を更新します。関連する構成 RateLimitQuota を大きくするか、関連する構成 RateLimitWindow を小さくします。
  • 応答ヘッダー RateLimit-LimitRateLimit-RemainingRateLimit-Reset を分析し、それに応じてアクションを実行します。
    • 必要な方向でクライアント側の要求の強度を変更します。
    • 必要な方向でレート制限の構成を更新します。