このページでは、Telnet と redis-cli を使用して Redis インスタンスに接続する方法について説明します。また、このページでは、リードレプリカ、AUTH、転送中の暗号化などの機能を使用する場合の接続方法に関する手順についても説明します。最後には、Google
Kubernetes Engine 環境から接続する手順について説明します。
Memorystore for Redis でサポートされる Google Cloud 環境の一覧については、 サポートされる環境をご覧ください。Memorystore でサポートされている一部のサーバーレス環境では、サーバーレス VPC アクセス コネクタが必要です。詳細については、サーバーレス VPC アクセス コネクタの要件 をご覧ください。
telnet を使用して Compute Engine VM から Redis インスタンスに接続する
Memorystore for Redis インスタンスには、インスタンスの承認済みネットワークを使用する任意の Compute Engine VM から サポートされている RFC 1918 IP アドレスで接続できます。
インスタンスと同じ承認済みネットワークを使用する Compute Engine VM がない場合は、作成して SSH を使用して VM に接続します。これを行うには、Compute Engine で Linux VM インスタンスを作成するの手順に沿って操作します。
apt-getを使用してtelnetをインストールします。sudo apt-get install telnetターミナルから、インスタンスの IP アドレスに telnet で接続します。 VARIABLES は適切な値に置き換えます。
telnet INSTANCE_IP_ADDRESS 6379
インスタンスに接続できる場合、コマンドは次の結果を返します。
Trying INSTANCE_IP_ADDRESS… Connected to INSTANCE_IP_ADDRESS
telnet セッションで、次のようにいくつかの Redis コマンドを入力します。
次のように入力します。
PING
結果:
PONG
入力
SET HELLO WORLD
結果:
+OK
次のように入力します。
GET HELLO
結果:
$5 WORLD
redis-cli を使用して Compute Engine VM から Redis インスタンスに接続する
サポートされている RFC 1918 IP アドレスを持つ Redis インスタンスの承認済みネットワークを使用する任意の Compute Engine VM から Redis インスタンスに接続できます。
まだ Redis インスタンスに承認済みネットワークを使用する Compute Engine VM がない場合は、作成してから特定のサブネットで VM インスタンスを作成するに従って接続します。
Compute Engine SSH ターミナルから次のコマンドを実行して、
redis-cliを Compute Engine VM にインストールします。sudo apt-get install redis-tools
Compute Engine ターミナルで、variables は適切な値に置き換えて、次のコマンドを実行します。
redis-cli -h redis-instance-ip-address
これで、
redis-cliを使用して Redis インスタンスに接続されました。Redis インスタンスへの接続をテストしたら、Redis インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。
AUTH を使用して Redis インスタンスに接続する
このセクションでは、AUTH 機能が有効になっている Redis インスタンスに接続する方法について説明します。
Redis インスタンスと同じ承認済みネットワークを使用する Compute Engine VM がまだない場合は、作成してから Linux VM の使用に関するクイックスタートに沿って接続します。
Compute Engine SSH ターミナルから次のコマンドを実行して、
redis-cliを Compute Engine VM にインストールします。sudo apt-get install redis-tools
インスタンスの AUTH 文字列を取得します。
次のコマンドを実行して
redis-cliを使用し、認証を行いインスタンスに接続します。variables は適切な値に置き換えます。redis-cli -h instance-ip-address -a auth-string
または
redis-cli -h instance-ip-address AUTH auth-string
Redis の
SETとGETのコマンドを実行して、インスタンスに対する認証済み接続が確立されたことを確認します。Redis インスタンスへの接続をテストしたら、Redis インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。
読み取りエンドポイントを使用して Redis インスタンスに接続する
インスタンスでリードレプリカ が有効になっている場合は、次の手順で読み取りエンドポイントに接続できます。
Redis インスタンスと同じ承認済みネットワークを使用する Compute Engine VM がまだない場合は、作成してから Linux VM を使用したクイックスタートに従って接続します。
apt-getを使用してtelnetをインストールします。sudo apt-get install telnetインスタンスの読み取りエンドポイントの IP アドレスを確認するには、インスタンスのリードレプリカ情報を表示します。
ターミナルで次のように入力して、Redis インスタンスの読み取りエンドポイント IP アドレスに telnet で接続します。 variablesは、適切な値に置き換えてください。
telnet read-endpoint-ip 6379
コマンドが正常終了した場合は、次の結果が返されます。
Trying read-endpoint-ip… Connected to read-endpoint-ip
telnet セッションで、次のようにいくつかの Redis コマンドを入力します。
次のように入力します。
PING
結果:
PONG
Stunnel と telnet を使用して Redis インスタンスに安全に接続する
このセクションでは、Stunnel を使用して転送中の暗号化が有効になっている Redis インスタンスに接続する方法の一例を示します。Stunnel は、コードを変更せずにクライアントとサーバーに Transport Layer Security(TLS)暗号化機能を追加するプロキシです。詳細については、 Stunnel のドキュメントをご覧ください。
転送中の暗号化が有効になっている Redis インスタンスがない場合は、作成します。詳細については、転送中の暗号化を使用した Redis インスタンスの作成をご覧ください。
前のステップの Redis インスタンスと同じ承認済みネットワークを使用する Compute Engine VM がない場合は、作成して接続します。詳細については、Compute Engine で Linux VM インスタンスを作成するをご覧ください。
次のコマンドを実行して、この手順に必要なツールをインストールします。
sudo apt-get install stunnel4
sudo apt-get install telnet
特に指定しない限り、この手順の残りのステップは、作成して接続した Compute Engine VM の SSH ターミナルで行われます。
stunnel で使用する Compute Engine VM を構成します。
次のコマンドを実行して、認証局 (CA)のファイルを作成します。
sudo vim /tmp/server_ca.pem
Compute Engine ターミナルではなく、 リソース Google Cloud の管理に使用する標準ターミナルで次のコマンドを実行して、Redis インスタンスの CA を表示します。
gcloud redis instances describe INSTANCE_ID --region=REGION
次のように置き換えます。
- INSTANCE_ID: Redis インスタンスの ID
- REGION: インスタンスが配置されているリージョン
CA は 3 つまで使用できます。
-----BEGIN CERTIFICATE-----行と
-----END CERTIFICATE-----行を含むすべての CA をコピーして、作成したserver_ca.pemファイルに貼り付けて保存します。CA のテキストが完全に左揃えになっていて、CA のどの行にも先頭に空白文字がないことを確認してください。
次のコマンドを実行して、Stunnel 構成情報のファイルを作成します。
sudo vim /etc/stunnel/redis-client.conf
ファイルに次のテキストを貼り付け、REDIS_INSTANCE_IP をインスタンスの 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:6378 connect=REDIS_INSTANCE_IP:6378
次のコマンドを実行して stunnel を起動します。
sudo stunnel /etc/stunnel/redis-client.conf
stunnel が実行中であることを確認します。
ps aux | grep stunnel
次のコマンドを実行して、stunnel を再起動します。
sudo systemctl restart stunnel4
stunnel の再起動の前後に
ps aux | grep stunnelコマンドを使用すると、再起動が成功したことを確認できます。ps aux | grep stunnelコマンドで示される stunnel プロセス ID が異なる場合は、stunnel が正常に再起動されています。
telnet を使用して Redis インスタンスに接続するには、次のコマンドを実行します。
telnet localhost 6378
telnet セッションで、接続をテストします。
省略可: インスタンスで Redis AUTH が有効になっている場合は、接続をテストする前に認証を行う必要があります。
次のコマンドを実行します。
AUTH AUTH_STRING
AUTH_STRING は、インスタンスの認証文字列に置き換えます。
結果:
OK
次のコマンドを実行します。
PING
結果:
PONG
省略可: telnet の代わりに、ローカルの stunnel ポートを介して
redis-cliを使用して接続し、AUTH 文字列を渡すことができます。次のコマンドを実行します。
redis-cli -h 127.0.0.1 -p 6378 -a AUTH_STRING
ポート転送を使用してローカルマシンから接続する
開発中は、ローカルマシンから Redis インスタンスに接続すると便利です。これを行うには、Redis インスタンスへのポート転送に使用する Compute Engine インスタンスを作成する必要があります。
次のコマンドを実行して Compute Engine インスタンスを作成します。
gcloud compute instances create COMPUTE_VM_NAME --machine-type=f1-micro --zone=ZONE
ここで、
- COMPUTE_VM_NAME は、Compute Engine VM に指定した名前です。
- ZONE は、VM をプロビジョニングするゾーンです。
このコマンドは、
f1-microマシン タイプ を使用して、コスト効率の高い Compute Engine VM を作成します。他のマシンタイプを選択することもできます。ローカルマシンで新しいターミナルを開きます。
Compute Engine VM を介してトラフィックをポート転送するための SSH トンネルを作成するには、次のコマンドを実行します。
gcloud compute ssh COMPUTE_VM_NAME --zone=ZONE -- -N -L 6379:REDIS_INSTANCE_IP_ADDRESS:6379
ここで、
- COMPUTE_VM_NAME は Compute Engine VM の名前です。
- ZONE は、Compute Engine VM が配置されているのと同じゾーンです。
- REDIS_INSTANCE_IP_ADDRESS は、Redis インスタンスの IP アドレスです。
接続をテストするには、新しいターミナル ウィンドウを開いて、次のコマンドを実行します。
redis-cli ping
適切に機能していれば、次のような結果が返されます。
PONG
Redis インスタンスに接続されたので、この開いている SSH トンネルを使用して Redis インスタンスにコマンドを送信できます。
redis-cliをまだインストールしていない場合は、インストールして、コマンドを実行できるようにします。ターミナル ウィンドウに SSH トンネル接続が表示され機能している限り、SSH トンネルは開いたままになります。
Google Kubernetes Engine クラスタから Redis インスタンスに接続する
クラスタが IP エイリアスを使用しているかどうかを確認するには、gcloud container clusters describe を使用します。
Redis インスタンスと同じ承認済みネットワークを使用する Google Kubernetes Engine クラスタから Redis インスタンスに接続できます。
bash シェルを実行しているポッドから接続する
- コンソールの Google Cloud
[GKE] ページに移動します。 - 接続する GKE クラスタをクリックします。まだクラスタがない場合は、IP エイリアスを有効にしてクラスタを作成します。IP エイリアスを有効にしてクラスタを作成する方法については、VPC ネイティブ クラスタの作成をご覧ください。
- クラスタ名の右側にある [接続] ボタンをクリックし、表示されるウィンドウで [Cloud Shell で実行] ボタンをクリックします。
- 次のコマンドを実行して、
kubectlコマンドライン アクセスを構成します。gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_ZONE --project=PROJECT_ID
CLUSTER_NAMEはクラスタの名前です。CLUSTER_ZONEは、クラスタが配置されているゾーンです。Redis インスタンスが配置されているゾーンでもある必要があります。PROJECT_IDは、クラスタと Redis インスタンスが存在するプロジェクトです。
kubeconfig generated for CLUSTER_NAME - クラスタのバージョンが 1.8 以上かつ IP エイリアスが有効になっている場合は、この手順をスキップします。クラスタのバージョンが 1.7 以下の場合、またはバージョン 1.8 以上で IP エイリアスが有効になっていない場合は、次の回避策の手順を行ってからインスタンスに接続してください。 この設定を有効にしてクラスタを作成する方法など、IP エイリアスの詳細については、VPC ネイティブ クラスタの作成をご覧ください。
- 次のコマンドを使用して、bash シェルに接続します。
kubectl run -i --tty busybox --image=busybox -- sh
- ホストアドレスとポート番号を使用して、Redis インスタンスに telnet で接続します。
telnet HOST-IP PORT
- 基本的な Redis コマンドを入力して、接続を確認します。
PING +PONG
- telnet 接続を閉じるには、Ctrl+C キー(Mac では Command+C キー)を押します。ポッド内で bash シェルを終了するには、「return」と入力します。操作が完了して Redis に接続する必要がなくなった場合は、
/k8s-custom-iptables/ディレクトリから次のコマンドを実行します。./uninstall.sh
Google Kubernetes Engine ポッドから Redis インスタンスに接続する
事前に GKE クラスタを準備しておく必要があります。まだクラスタがない場合は、IP エイリアスを有効にしてクラスタを作成します。IP エイリアスを有効にしてクラスタ を作成する方法については、VPC ネイティブ クラスタの作成をご覧ください。
- コンソールの右上隅にある [Cloud Shell をアクティブにする]
ボタンをクリックします。 - 次のコマンドを実行して、
kubectlコマンドライン アクセスを構成します。gcloud container clusters get-credentials CLUSTER_NAME --zone CLUSTER_ZONE --project PROJECT_ID
CLUSTER_NAMEはクラスタの名前です。CLUSTER_ZONEは、クラスタが配置されているゾーンです。Redis インスタンスが配置されているゾーンでもある必要があります。PROJECT_IDは、クラスタと Redis インスタンスが存在するプロジェクトです。
kubeconfig generated for CLUSTER_NAME - クラスタのバージョンが 1.8 以上かつ IP エイリアスが有効になっている場合は、この手順をスキップします。クラスタのバージョンが 1.7 以下の場合、またはバージョン 1.8 以上で IP エイリアスが有効になっていない場合は、次の回避策の手順を行ってからインスタンスに接続してください。 この設定を有効にしてクラスタを作成する方法など、IP エイリアスの詳細については、VPC ネイティブ クラスタの作成をご覧ください。
- 次のコマンドを使用して、
redis-cliを実行する Redis ポッドを起動します。kubectl run -i --tty redisbox --image=redis:7.2 -- sh
HOST-IPを Redis インスタンスのホスト IP アドレスに置き換えて、redis-cliコマンドを実行します。redis-cli -h HOST-IP info
- オプションで Redis ベンチマーク コマンドを実行します。ここでも
HOST-IPの部分は、実際の Redis インスタンスのホスト IP アドレスに置き換えてください。redis-benchmark -c 100 -n 100000 -d 1024 -r 100000 -t PING,SET,GET,INCR,LPUSH,RPUSH,LPOP,RPOP,SADD,SPOP,MSET -h HOST-IP -q
- Redis ポッドを終了するには、「
return」と入力します。操作が完了して Redis に接続する必要がなくなった場合は、/k8s-custom-iptables/ディレクトリから次のコマンドを実行します。./uninstall.sh
次のステップ
次の環境で動作するサンプル アプリケーションを使用して、Redis インスタンスに接続します。