クラスタへの接続

OCIキャッシュは、プライベート・エンドポイントを介してクラスタへのアクセスを提供します。

プライベート・エンドポイントでは、トラフィックはインターネットを経由しません。クラスタに接続できるのは、クラスタと同じVCN内のクライアントから、または適切なゲートウェイおよびルート・ルールが構成されている別のVCNからのみです。

警告

KEYSコマンドは、本番環境での通常の使用ではサポートされておらず、デバッグおよび特別な操作のみを目的としています。KEYSコマンドをクラスタに送信すると、クラスタでクラッシュまたはパフォーマンスの低下が発生する可能性があります。

キー・スペースのサブセット内のキーを検索するには、かわりにSCANコマンドまたはデータ型の設定を使用します。

制限事項および考慮事項

  • サービスによって提供される完全修飾ドメイン名(FQDN)を使用してのみ、クラスタのノードに接続できます。非シャード・クラスタの場合、FQDNはクラスタのプライマリ・ノードまたはレプリカ・ノードへのプライベート・エンドポイント用です。クラスタの接続詳細の取得を参照してください。シャード・クラスタの場合、FQDNは各シャードのノードに対するプライベート・エンドポイント用です。シャード・クラスタの接続詳細の取得を参照してください。
    重要

    トポロジ内のノードの解決にIPアドレスを使用しないでください。
  • デフォルトでは、OCIキャッシュは、接続元のクライアントに関係なく、クラスタとのTLS接続のみをサポートします。シナリオでTLSなしで接続する必要がある場合は、サポートに連絡してください。

  • Redis CLIバージョン6以降が必要です。Redis CLIバージョン7をお薦めします。Redis CLIを使用した接続を参照してください。

  • OCIキャッシュなどのデータベースに接続する場合は、開発プラクティスとして接続プールを使用します。クラスタへの接続数が1024を超えると、サービスのプロセスに負荷がかかり、応答が遅くなる可能性があります。推奨されるコーディング方法については、使用しているフレームワークまたはライブラリのドキュメントを参照してください。

  • クラスタを作成すると、OCIキャッシュによって、クラスタのノードを構成するコンピュート・インスタンスのセットが作成および管理されます。これらのインスタンスは、クラスタ・ノードとしてサポートされている唯一のインスタンスです。個別に作成したインスタンスをクラスタのノードとしてアタッチすることはできません。クラスタに追加インスタンスをアタッチしようとすると、クラスタはFAILEDライフサイクル状態になります。

  • シャード・クラスタへの接続に使用するRedisクライアント・ライブラリは、ホスト名をサポートするRedis CLUSTER MODEをサポートしている必要があります。

非シャード・クラスタ接続情報

クラスタの接続情報には、クラスタへの接続に使用する次のエンドポイントが含まれます。

  • プライマリ・エンドポイント: これは、クラスタのプライマリ・ノードのエンドポイントです。このエンドポイントは、プライマリ・ノードとして構成された基礎となるインスタンスが変更された場合でも、常にプライマリとして構成されたノードに接続します。

  • レプリカ・エンドポイント: これは、クラスタのレプリカ・ノードのエンドポイントです。このエンドポイントは、常にレプリカとして構成されたノードに接続しますが、複数のレプリカ・ノードを持つクラスタでは、毎回同じレプリカではない可能性があります。

  • ノード・エンドポイント: 各ノード・インスタンスへの直接エンドポイントです。接続先のノードのタイプに接続していることを確認した場合にのみ、接続にこれらのエンドポイントを使用します。プライマリ・ノードの基礎となるインスタンスが変更されている場合があります。プライマリ・ノードに接続することを保証するには、かわりにプライマリ・エンドポイントを使用します。

この情報を表示する方法については、クラスタの接続の詳細の取得を参照してください。

シャード・クラスタ接続情報

シャード・クラスタには、クラスタへの接続に使用するクラスタ・レベルのプライマリ・エンドポイントまたはレプリカ・エンドポイントがありません。かわりに、クラスタのシャードのプライマリ・ノードのプライベート・エンドポイントを使用します。この情報を取得する方法は、シャード・クラスタの接続詳細の取得を参照してください。アプリケーションの接続情報で、クラスタの最初の3つのシャードのプライベート・エンドポイントを指定することをお薦めします。

クラスタに接続するためのセキュリティ・ルール

クラスタへの接続を有効にするには、クラスタのVCNに、次の値で構成されたイングレス・セキュリティ・ルールが必要です:

  • ステートレス: いいえ

  • IPプロトコル: TCP

  • ソース・ポート範囲: すべて

  • 宛先ポート範囲: 6379

  • 許可: 次のポートに対するTCPトラフィック: 6379

ネットワーク・サービスには、セキュリティ・ルールをVCNに適用するために使用できる2つの機能、セキュリティ・リストおよびネットワーク・セキュリティ・グループ(NSG)が用意されています。OCIキャッシュは両方の機能をサポートしています。詳細は、クラスタのセキュリティ・リストおよびクラスタでのNSGの使用を参照してください。

セキュリティ・リストでは、セキュリティ・ルールはサブネット内のすべてのVCNに適用されます。セキュリティ・ルールをVCNのサブセットにのみ適用する場合は、かわりにNSGを使用します。セキュリティ・グループとNSGの違いの詳細は、セキュリティ・リストとネットワーク・セキュリティ・グループの比較を参照してください。

クラスタのセキュリティ・リスト

クラスタを作成すると、クラスタからデータにアクセスできるようにするために、OCI Cacheは、クラスタのVCNの宛先ポート6379のTCPトラフィックのステートフル・イングレス・セキュリティ・ルールを含むセキュリティ・リストを作成します。

次のステップを使用して、このルールのセキュリティ・リストを確認できます:

  1. 「クラスタ」リスト・ページで、使用するクラスタを選択します。リスト・ページまたはクラスタの検索に関するヘルプが必要な場合は、クラスタのリストを参照してください。

  2. 詳細ページで、「クラスタ情報」タブの「サブネット」リンクを選択します。

  3. サブネットのリスト・ページで、「セキュリティ」を選択します。

  4. 「セキュリティ・リスト」ページで、redis-security-listを選択します。

  5. redis-security-list detailsページで、「セキュリティ・ルール」を選択します。

  6. 「イングレス・ルール」に、次の値を含む1つのルールがリストされます:

    • ステートレス: いいえ

    • IPプロトコル: TCP

    • ソース・ポート範囲: すべて

    • 宛先ポート範囲: 6379

    • 許可: 次のポートに対するTCPトラフィック: 6379

セキュリティ・リストが表示されないか、ルールが必須として構成されていない場合は、新しいセキュリティ・リストを作成してルールを追加するか、VCNのデフォルト・セキュリティ・リストにルールを追加できます。詳細は、セキュリティ・リストおよびセキュリティ・リストの作成を参照してください。

ルールを作成および構成する場合は、「イングレス・ルールの追加」ページで次のオプションを指定する必要があります:
  • ステートレス: チェック・ボックスはクリアしたままにします。

  • ソース・タイプ: CIDR

  • IPプロトコル: TCP

  • ソース・ポート範囲: すべて

  • 宛先ポート範囲: 6379

クラスタでのNSGの使用

セキュリティ・リストのかわりにNSGを使用するには、クラスタへの接続に必要な構成でイングレス・セキュリティ・ルールをNSGに追加する必要があります。NSGの作成および管理の詳細は、次を参照してください:

NSGのイングレス・ルールを作成および構成する場合は、次の構成を指定する必要があります。
  • ステートレス: チェック・ボックスはクリアしたままにします。

  • ソース・タイプ: CIDR

  • IPプロトコル: TCP

  • ソース・ポート範囲: すべて

  • 宛先ポート範囲: 6379

1つのクラスタに対して1から5個のNSGを構成できます。クラスタを作成するときに、クラスタのNSGを指定できます。既存のクラスタのNSGを構成することもできます。クラスタのNSGの構成を参照してください。

VMインスタンスの作成

クラスタと同じサブネット内のVMインスタンスからRedis CLIを使用してクラスタに接続できます。インスタンスの作成方法については、次のトピックのいずれかを参照してください。

インスタンスの作成後、インスタンスに接続します。詳細は、次を参照してください:

Redis CLIを使用した接続

ヒント

Redis CLIバージョン6以降が必要です。Redis CLIバージョン7をお薦めします。

Redis CLI redis-cliをVMインスタンスにダウンロードしてインストールします。

非シャード・クラスタに接続するには、次のコマンドを実行してクラスタのプライマリ・ノードに接続します。

redis-cli --tls -h <ID>-p.redis.<region>.oci.oraclecloud.com

シャード・クラスタに接続するには、次のコマンドを実行して、クラスタのシャードの1つに接続します。

redis-cli --tls -h <ID>.redis.<region>.oci.oraclecloud.com -c

シャードの接続文字列を取得する方法は、シャード・クラスタの接続詳細の取得を参照してください。

重要

シャード・クラスタへの接続には、-cスイッチを含める必要があります。これは、クラスタモードで CLIと接続することを指定します。詳細は、4.2 RedisクラスタでのRedis-CLIの使用を参照してください。

--tlsを含めない場合、Redis CLIコマンドでエラーError: connection reset by peerが発生します。

Unrecognized option or bad number of args for: '--tls'エラーは、使用しているRedis CLIのバージョンがバージョン6より古い場合に発生します。Redis CLIのバージョンを確認するには、次のコマンドを実行します:

redis-cli -v

Luaスクリプト

Luaスクリプトはサーバー上で実行され、クラスタ・データの効率的な読取りおよび書込みが可能になります。詳細は、Luaを使用したスクリプトを参照してください。次の例は、Redis CLIからEVALコマンドをコールしてキー値を設定し、キー値を取得する方法を示しています。

キー値を設定するには:

redis-cli --tls -h <IP_address> EVAL "return redis.call('SET', 'mykey', 'helloworld')" 0

設定したキー値を取得するには:

redis-cli --tls -h <IP_address> EVAL "return redis.call('GET', 'mykey')" 0

長時間実行Luaスクリプトを使用することはお薦めしません。Luaスクリプトが実行されると、Luaスクリプトが完了するまで、他のコマンドの実行がブロックされます。スクリプトの最大実行時間は、busy-reply-threshold値によって設定されます。デフォルトでは、b busy-reply-thresholdの値は5秒です。Luaスクリプトの実行時間がデフォルトの実行時間が5秒より長くなると、クラスタに対してフェイルオーバーがトリガーされ、クラスタが異常な状態になる可能性が高くなります。実行に5秒以上かかるLuaスクリプトを必要とするクラスタがある場合は、サポートに連絡して、クラスタのbusy-reply-threshold値を増やすようにリクエストします。

重要

Luaスクリプトは、シャード・クラスタではサポートされていません。

クラスタへの接続のトラブルシューティング

digツールによる基本接続性のテスト

digツールを使用して、プライマリ・ノードへの接続など、クラスタへの基本的なネットワーク接続をテストします。
dig <primary_endpoint>

プライマリ・ノード・エンドポイントを取得する方法は、クラスタの接続詳細の取得を参照してください。

クラスタと同じVCN内からdigコマンドを実行し、接続の解決に失敗した場合は、宛先ポート6379でTCPトラフィックのステートフル・イングレス・セキュリティ・ルールを含むセキュリティ・リストがサブネットにあることを確認します。クラスタを作成すると、OCIキャッシュは必要な構成でセキュリティ・リストを作成しますが、これを削除または更新する場合は、この構成を追加する必要があります。詳細は、クラスタのセキュリティ・リストを参照してください。

クラスタとして別のVCNからdigコマンドを実行し、接続の解決に失敗した場合は、VCNに正しいルート表構成があることを確認してください。VCNルート表を参照してください。

Network Path Analyzer

ネットワーク・パス・アナライザを使用して、クラスタへの接続をテストすることもできます。このツールを使用すると、同じVCN内から接続している場合でも、別のVCN内から接続している場合でも、ルーティングおよびその他のネットワーク構成の問題をトラブルシューティングして識別できます。