Memorystore for Redis Cluster インスタンスに接続する

このページでは、Memorystore for Redis Cluster インスタンスに接続する方法について説明します。

クライアントのサポート

Memorystore for Redis Cluster は独自のクライアント ライブラリを備えていませんが、Redis プロトコルをサポートする既存のサードパーティ クライアント ライブラリをサポートします。 Redis がサポートするクライアント ライブラリの詳細については、サポートされている接続クライアントをご覧ください。

redis-py クライアントのベスト プラクティス

redis-py Python クライアントを使用して Memorystore for Redis Cluster インスタンスに接続するには、redis-py を宣言するときに skip_full_coverage_check=True を追加する必要があります。

from rediscluster import RedisCluster
endpoints = [{"host": "IPADDRESS", "port": "6379"}]

rdb = RedisCluster(
    startup_nodes=endpoints,
    skip_full_coverage_check=True, # Required for Memorystore
    decode_responses = True)

print(rdb.set('PYTHON', 'CLUSTER'))
print(rdb.get('PYTHON'))
print(rdb.unlink('PYTHON'))

ファイアウォールのポートを許可リストに登録する

ファイアウォールで正しいポートを許可リストに登録しないと、インスタンスで接続エラーが発生する可能性があります。ポートの許可リストへの登録の詳細については、 問題のトラブルシューティングをご覧ください。

リージョン間アクセス

Memorystore インスタンスがあるリージョンとは異なるリージョンにあるクライアントから、Memorystore for Redis Cluster インスタンスにアクセスできます。

クラスタの検出エンドポイントを表示する

各クラスタには、検出エンドポイントがあり、クライアントが接続します。 このエンドポイントは、IP アドレスとポート番号の組み合わせです。

Memorystore for Redis Cluster のクラスタの検出エンドポイントを表示するには、 コンソールまたは gcloud CLI を使用します。 Google Cloud

コンソール

  1. コンソールで [Memorystore for Redis Cluster] ページに移動します。 Google Cloud

    Memorystore for Redis Cluster

  2. クラスタ ID をクリックします。

  3. [このインスタンスに接続] セクションで、[検出エンドポイント] の横にある IP アドレスとポート番号をメモします。これら 2 つの値を組み合わせて使用すると、クラスタの検出エンドポイントになります。

gcloud

クラスタの検出エンドポイントを表示するには、インスタンスの詳細情報を表示するセクションの説明に従って、describe gcloud CLI を実行します。

出力例を以下に示します。

authorizationMode: AUTH_MODE_DISABLED
createTime: '2023-08-04T17:49:07.988918793Z'
discoveryEndpoints:
- address: 10.142.0.13
  port: 6379
  pscConfig:
  - network: projects/my-project-364018/global/networks/default
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
pscConnections:
- address: 10.142.0.13
  forwardingRule: https://www.googleapis.com/compute/v1/projects/my-project-364018/regions/us-east1/forwardingRules/sca-auto-fr-5bc46f69-ec80-4c5a-8971-ce267a4d8ddd
  network: projects/my-project-364018/global/networks/default
  projectId: my-project-364018
  pscConnectionId: '25734306048376845'
- address: 10.142.0.10
  forwardingRule: https://www.googleapis.com/compute/v1/projects/my-project-364018/regions/us-east1/.
  forwardingRules/sca-auto-fr-817b64c5-85ac-48d0-82e3-c6fa99b4e67d
  network: projects/my-project-364018/global/networks/default
  projectId: my-project-364018
  pscConnectionId: '25734306048376842'
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
tier: PERFORMANCE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: cddda5de-d91f-449b-8755-3a665430271a

discovery_endpoints: セクションに記載されているエンドポイントのアドレスとポート番号をメモします。これら 2 つの値を組み合わせて使用すると、クラスタの検出エンドポイントになります。

redis-cli を使用して Compute Engine VM から接続する

Memorystore インスタンスの承認済みネットワークを使用する任意の Compute Engine VM から Memorystore for Redis Cluster インスタンスに接続できます。

インスタンスに接続する手順は次のとおりです。

  1. Memorystore for Redis Cluster インスタンスの 承認済みネットワークを使用する Linux Compute Engine VM がまだない場合は、作成して Linux VM の作成に関するクイックスタートの手順に沿って接続します。

  2. Linux に Redis をインストールするの手順に沿って、redis-cli バージョン 6.0 以降を Compute Engine VM にインストールします。

  3. クラスタの検出エンドポイントを表示して メモします。

  4. 次のコマンドを実行して、インスタンスの検出エンドポイントに接続します。

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    

    ここで

    • DISCOVERY_ENDPOINT_ADDRESSPORT_NUMBER は、前のステップでメモした値です。
  5. CLUSTER SHARDS コマンドを実行して、クラスタ トポロジを表示します。ノードの IP アドレスとポート番号のいずれかをメモします。

  6. 次のコマンドを実行して、目的のノードに接続します。

    redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -c
    

    以下を置き換えます。

    • NODE_IP_ADDRESS は、前のステップで確認したノードの IP アドレスです。
    • NODE_PORT は、前の ステップで確認したノードのポート番号です。
  7. ノードに接続したら、Redis コマンドを入力します。

    次のように入力します:

    PING
    

    結果:

    PONG
    

    入力

    SET HELLO WORLD
    

    結果:

    OK
    

    次のように入力します。

    GET HELLO
    

    結果:

    "WORLD"
    
  8. Redis ノードへの接続をテストしたら、Redis インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。

転送中の暗号化が有効になっているインスタンスに接続する

このセクションでは、転送中の暗号化が有効になっている Memorystore for Redis Cluster インスタンスに接続する方法の例を示します。

  1. 前のステップの Redis インスタンスと同じ 承認済みネットワークを使用する Compute Engine VM がまだない場合は、これを作成してから、Linux VM を使用したクイックスタートに従って接続します。

    1. Linux に Redis をインストールするの手順に沿って、redis-cli バージョン 6.0 以降を Compute Engine VM にインストールします。
  2. クラスタで使用している認証局(CA)モードを確認します。

    • CA モードが インスタンス単位 の場合は、 クライアントに CA 証明書をインストールするの手順に沿って、クラスタの CA 証明書をインストールします。

    • CA モードが 共有の場合は、 クライアントに CA 証明書バンドルをインストールするの手順に沿って、 クラスタの CA 証明書バンドルをインストールします。

    • CA モードが 顧客管理 の場合、 追加の CA 証明書をダウンロードしてインストールしなくても、 アプリケーションをクラスタに接続できます。そのため、このステップはスキップできます。

  3. クラスタの検出エンドポイントを表示して メモします。

  4. 次のコマンドを実行して、インスタンスの検出エンドポイントに接続します。

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c --tls  --cacert /tmp/server_ca.pem
    

    ここで

    • DISCOVERY_ENDPOINT_ADDRESSPORT_NUMBER は、前のステップでメモした値です。
  5. CLUSTER SHARDS コマンドを実行して、クラスタ トポロジを表示します。ノードの IP アドレスとポート番号のいずれかをメモします。

  6. 次のコマンドを実行して、目的のノードに接続します。

    redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -c --tls  --cacert /tmp/server_ca.pem
    

    以下を置き換えます。

    • NODE_IP_ADDRESS は、前のステップで確認したノードの IP アドレスです。
    • NODE_PORT は、前の ステップで確認したノードのポート番号です。
  7. ノードに接続したら、Redis コマンドを入力します。

    次のように入力します:

    PING
    

    結果:

    PONG