このページでは、さまざまなエラーのシナリオと、それらのエラーを解決するためのガイダンスについて説明します。
レプリケーションのシナリオ
このセクションでは、クラスタで発生する可能性のあるレプリケーションの問題について説明します。
レプリケーションの遅延をモニタリングするにはどうすればよいですか?
Memorystore for Redis Cluster には、/cluster/replication/maximum_offset_diff 指標があります。この指標は、プライマリ クラスタ内のノードの最大レプリケーション オフセット差分(バイト単位)をモニタリングします。
レプリケーション オフセットの差分を小さくすることで、レプリカは完全同期オペレーションよりも頻繁に、低コストで増分同期オペレーションを実行できます。
maximum_offset_diff 指標のしきい値を設定することをおすすめします。しきい値を超えると、Memorystore for Redis Cluster からアラートで通知されます。
クラスタのノードタイプ に基づいて、次のようにしきい値を設定することをおすすめします。
ノードタイプが
redis-shared-core-nano、redis-standard-small、redis-highmem-medium、redis-highcpu-medium、redis-standard-largeの場合は、しきい値を 64 MB 未満に設定します。ノードタイプが
redis-highmem-xlargeまたはredis-highmem-2xlargeの場合は、しきい値を 1 GB 未満に設定します。
接続性エラーのシナリオ
このセクションでは、クラスタで発生する可能性のある接続性の問題について説明します。
ファイアウォール ルールによる接続エラー
ファイアウォール ルールでは、Memorystore for Redis Cluster で使用されるポートをブロックすることによる接続エラーが発生することがあります。クラスタの両方の Private Service Connect エンドポイントで、TCP ポート 11000 ~ 13047 を許可します。 これらのエンドポイントの詳細については、予約済みのネットワーク アドレスをご覧ください。
組織のポリシーによる接続エラー
クラスタへの Private Service Connect 接続をブロックする組織のポリシーが設定されている可能性があります。
組織のポリシーで .restrictPrivateServiceConnectProducer ポリシーを使用している場合は、961333125034 フォルダ(Memorystore for Redis Cluster 専用のフォルダ)を許可します。次に例を示します。
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/961333125034
組織のポリシーで .disablePrivateServiceConnectCreationForConsumers ポリシーを使用している場合は、SERVICE_PRODUCERS を許可します。次に例を示します。
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
rules:
- values:
allowedValues:
- SERVICE_PRODUCERS
応答しない接続による接続エラー
Memorystore for Redis Cluster への応答しない接続を検出するようにクライアント アプリケーションを構成することを強くおすすめします。応答しない接続が検出されたら、クライアントは接続をリセットする必要があります。復元力のあるアプリケーションを構築するには、次のクライアント構成をおすすめします。
- TCP keep-alive パラメータを構成する: 接続が
アイドル状態の場合でも、クライアントが応答しない接続をプロアクティブに
検出して切断するように、
TCP keepalive time、TCP keepalive interval、およびTCP keepalive probesパラメータを設定します。たとえば、TCP keepalive timeパラメータを 30 秒、TCP keepalive intervalを 10 秒、TCP keepalive probesを 3 に設定すると、クライアントは 1 分以内に応答しないアイドル接続をリセットします。 - TCP ユーザー タイムアウトを構成する: このタイムアウトをクライアントで設定して、未処理のリクエストがあり、応答を停止した 接続をリセットします。たとえば、タイムアウトを 15 秒に設定すると、クライアントは未処理のリクエストがある応答しない接続を 15 秒後にリセットします。
CPU 使用率のシナリオ
このセクションでは、クラスタで発生する可能性のある CPU 使用率の問題について説明します。
クラスタの出力バッファの容量が不足する
クラスタの出力バッファの容量が不足した場合は、次の操作を行います。
maxmemoryパラメータに小さい値を設定します。allkeys-lrumaxmemoryポリシーを使用します。
クラスタのメモリがいっぱいになり、新しい書き込みが発生すると、Memorystore for Redis Cluster はクラスタの maxmemory
ポリシーに基づいてキーを削除し、書き込み用のスペースを確保します。allkeys-lru
ポリシーは、キーセット全体から、最も長い間使用されていない(LRU)キーを削除します。
クラスタの maxmemory と使用メモリをモニタリングすることをおすすめします。これにより、クラスタがプロビジョニングされたクラスタ容量に達したかどうかを確認できます。
また、maxmemory パラメータの値を小さくすると、オーバーヘッド用のスペースが増えます。
クラスタの外部指標が表示されないのはなぜですか?
クラスタの CPU 使用率が高い場合や、クラスタのリソースが不足している場合(接続が多すぎるなど)、クラスタが誤動作し、外部指標が表示されないことがあります。
永続性のシナリオ
このセクションでは、クラスタで発生する可能性のある永続性の問題について説明します。
書き込みトラフィックが、AOF の書き換えによるスペースの圧縮と再利用を行う Memorystore for Redis Cluster の能力を超えている
この状況が発生すると、Append-Only File(AOF)は書き換えプロセスで管理できるよりも速く増大します。これにより、ディスクが不足し、書き込みエラーが発生し、レプリカの作成と完全同期を必要とするオペレーションがブロックされます。
Memorystore for Redis Cluster は、書き込みスループットを調整するガードレールを実装しました。 これにより、AOF の書き換えは、持続的な高書き込みワークロードに対応できます。