このページでは、Memorystore for Redis Cluster インスタンスに接続する方法について説明します。
クライアントのサポート
Memorystore for Redis Cluster は独自のクライアント ライブラリを備えていませんが、Redis プロトコルをサポートする既存のサードパーティ クライアント ライブラリをサポートします。クライアントのリストの例は、Redis クライアント ページで確認できます。
Redis-py クライアントのベスト プラクティス
redis-py Python クライアントを使用して Memorystore for Redis クラスタ インスタンスに接続するには、Redis クラスタを宣言する際に 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 for Redis クラスタ インスタンスには、Memorystore インスタンスが配置されているのとは異なるリージョンにあるクライアントからアクセスできます。
クラスタの検出エンドポイントを表示する
Memorystore クラスタのディスカバリ エンドポイントを表示するには、次の手順を使用します。
コンソール
Google Cloud コンソールで [Memorystore for Redis Cluster] ページに移動します。
クラスタ ID をクリックします。
[このインスタンスに接続] セクションで、[内部 IP アドレス] と [接続ポート] の値をメモします。これら 2 つの値は、クラスタ ディスカバリ エンドポイントになります。
gcloud
クラスタの検出エンドポイントを表示するには、インスタンスの詳細を表示セクションの説明に従って describe
gcloud CLI を実行します。
出力例を以下に示します。
createTime: '2023-05-30T19:47:37.850985390Z'
discoveryEndpoints:
- address: 10.142.0.10
port: 6379
pscConfig:
network: projects/my-project-364018/global/networks/default
projectId: my-project-364018
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: 87b47146-217d-472e-96e5-13962c0e8706
discovery_endpoints:
セクションに表示されているエンドポイントのアドレスとポート番号をメモしておきます。これら 2 つの値は、クラスタの検出エンドポイントです。
redis-cli を使用して Compute Engine VM から接続する
Memorystore インスタンスの承認済みネットワークを使用する任意の Compute Engine VM から Memorystore for Redis Cluster インスタンスに接続できます。
インスタンスに接続するには:
Memorystore for Redis Cluster インスタンスの承認済みネットワークを使用する Compute Engine VM がまだない場合は、Linux VM の作成に関するクイックスタートの手順に沿って作成し、接続します。
Compute Engine VM に
redis-cli
をインストールします。Linux Debian ベースの VM を作成した場合は、Compute Engine SSH ターミナルから次のコマンドを実行できます。sudo apt-get update sudo apt-get install redis
クラスタのディスカバリ エンドポイントを表示し、メモしておきます。
Memorystore for Redis Cluster ターミナルで次のコマンドを実行します。変数は適切な値に置き換えます。
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
ここで
- DISCOVERY_ENDPOINT_ADDRESS と PORT_NUMBER は、前のステップでメモした値です。
接続したら、次のようにいくつかの Redis コマンドを入力します。
次のように入力します。
PING
結果:
PONG
入力
SET HELLO WORLD
結果:
OK
次のように入力します。
GET HELLO
結果:
"WORLD"
Redis インスタンスへの接続をテストしたら、Redis インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。
stunnel と telnet を使用した Memorystore クラスタへの安全な接続
このセクションでは、stunnel を使用して転送中の暗号化が有効になっている Memorystore for Redis Cluster インスタンスに接続する方法の一例を示します。
転送中の暗号化が有効になっている Memorystore クラスタがまだない場合は、転送中の暗号化を使用したインスタンスの作成に沿って作成します。
前のステップの Redis インスタンスと同じ承認済みネットワークを使用する Compute Engine VM がまだない場合は、これを作成してから、Linux VM を使用したクイックスタートに従って接続します。
このガイドに必要なツールをインストールします。
sudo apt-get install stunnel4
sudo apt-get install telnet
stunnel で使用する Compute Engine VM を構成します。
次のコマンドを実行して、認証局(CA)を格納する新しいファイルを作成します。
sudo vim /tmp/server_ca.pem
Compute Engine ターミナルではなく、Google Cloud リソースの管理に使用する標準ターミナルで次のコマンドを実行して、Redis インスタンスの認証局を表示します。
gcloud alpha redis clusters get-cluster-certificate-authority --cluster-id=CLUSTER_ID
-----BEGIN CERTIFICATE-----
と-----END CERTIFICATE-----
の行に表示されているすべての認証局をコピーして、前に作成したserver_ca.pem
ファイルに貼り付けて、保存します。stunnel の構成情報を格納する新しいファイルを作成します。
sudo vim /etc/stunnel/redis-client.conf
次のテキストをファイルに貼り付けます。DISCOVERY_ENDPOINT_ADDRESS はクラスタの Private Service Connect エンドポイントの IP アドレスに置き換えられます。
output=/tmp/stunnel.log CAfile=/tmp/server_ca.pem client=yes pid=/var/run/stunnel.pid verifyChain=yes sslVersion=TLSv1.2 [redis] accept=127.0.0.1:6379 connect=DISCOVERY_ENDPOINT_ADDRESS:PORT_NUMBER
stunnel を起動します。
sudo stunnel /etc/stunnel/redis-client.conf
stunnel が実行中であることを確認します。
ps aux | grep stunnel
stunnel を再起動します。
sudo systemctl restart stunnel4
Redis-CLI を使用して Redis インスタンスに接続するには、次のコマンドを実行します。
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
接続したら、次のようにいくつかの Redis コマンドを入力します。
次のように入力します。
PING
結果:
PONG