Amazon ElastiCache Redis または Memcached クラスターへの接続をテストするにはどうすればよいですか?
最終更新日: 2022 年 7 月 12 日
Amazon ElastiCache for Redis または Amazon ElastiCache for Memcached クラスターへの接続をテストしたいと考えています。Linuxベースのクライアントから redis-cli や telnet などのツールを使用してこれを行うにはどうすればよいですか?
簡単な説明
Amazon ElastiCache は現在、Redis と Memcached の 2 つの異なるメモリ内キー値エンジンをサポートしています。ElastiCache キャッシュクラスターの起動時に使用するエンジンを選択できます。
注: この解決方法は、予期しない使用のための接続のテストのみを対象としています。サポートされている Redis クライアントの一覧については、Redis ドキュメントをご参照ください。
Java、.NET、または PHP を使用する Memcached の場合、自動検出機能を備えた ElastiCache クライアントを使用するのがベストプラクティスです。自動検出機能を備えた ElastiCache クライアントは、キャッシュクラスターに追加された新しい ElastiCache ノードを動検出します。
解決方法
Redis クラスターに接続する
ElastiCache は、クラスターモードが無効になっている Redis クラスターとクラスターモードが有効になっている Redis クラスターの両方をサポートしています。これらのクラスターへの接続をテストするには、redis-cli ユーティリティを使用できます。redis-cli の最新バージョンは、暗号化/認証が有効になっているクラスターを接続するための SSL/TLS もサポートしています。
接続元となる Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで redis-cli ユーティリティをダウンロードしてコンパイルします。Amazon EC2 インスタンスに接続する方法については、チュートリアル: Amazon EC2 Linux インスタンスの開始方法を参照してください。
注意: 次の例では、Amazon Linux と Amazon Linux 2 を実行している EC2 インスタンスを使用しています。他の Linux ディストリビューションを使用する redis-cli のインストールおよびコンパイルに関するドキュメントについては、使用している特定のオペレーティングシステムのドキュメントをご参照ください。
Amazon Linux 2
$sudo amazon-linux-extras install epel -y
$sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel -y
$sudo wget http://download.redis.io/redis-stable.tar.gz
$sudo tar xvzf redis-stable.tar.gz
$cd redis-stable
$sudo make BUILD_TLS=yes
Amazon Linux
$sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel clang wget
$sudo wget http://download.redis.io/redis-stable.tar.gz
$sudo tar xvzf redis-stable.tar.gz
$cd redis-stable
$sudo CC=clang make BUILD_TLS=yes
注: 接続先のクラスターが暗号化されていない場合は、Build_TLS=yes オプションは必要ありません。
Redis エンドポイントの検索の詳細については、「接続エンドポイントの検索」をご参照ください。
クラスターモードが無効になっている、暗号化されていないクラスターに接続する
1. クラスターに接続するには、次のコマンドを実行します。次のコマンド例では、change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com と 6379 を、使用しているクラスターのエンドポイントとポート番号に置き換えます。
src/redis-cli -h change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com -p 6379
前述のコマンドによって返された Redis コマンドプロンプトの例を次に示します。
change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com:6379>
2. クラスターに接続すると、Redis コマンドを実行できます。Redis コマンドの例を次に示します。
set a "hello"
OK
get a
"hello"
quit
クラスターモードが有効になっている、暗号化されていないクラスターに接続する
1. クラスターに接続するには、次のコマンドを実行します。次のコマンド例では、cluster-disable-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com と 6379 をクラスターのエンドポイントとポート番号に置き換えます。
src/redis-cli -h cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com -c -p 6379
注意: 前述のコマンドで、-c オプションを使用すると、-ASK および -MOVED リダイレクトの後にクラスタモードが有効になります。
Redis コマンドプロンプトの結果は、次のようになります。
cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com:6379>
2. これで、Redis コマンドを実行できるようになりました。-c オプションを使用してリダイレクトを有効にしたので、リダイレクトが発生します。リダイレクトが有効になっていない場合、このコマンドは MOVED エラーを返します。MOVED エラーの詳細については、redis.io ウェブサイトの「Redis cluster specification」を参照してください。
set x Hi
-> Redirected to slot [16287] located at 172.31.28.122:6379
OK
set y Hello
OK
get y
"Hello"
set z Bye
-> Redirected to slot [8157] located at 172.31.9.201:6379
OK
get z
"Bye"
get x
-> Redirected to slot [16287] located at 172.31.28.122:6379
"Hi"
暗号化/認証が有効になっているクラスターに接続する
デフォルトでは、redis-cli は Redis に接続するときに暗号化されていない TCP 接続を使用します。前述の「Redis クラスターに接続する」セクションに示すように、オプション BUILD_TLS=yes を使用すると、redis-cli コンパイル時に SSL/TLS が有効になります。AUTH をオンにすることは任意です。ただし、 AUTH を有効にするには、転送中に暗号化を有効にする必要があります。ElastiCache 暗号化と認証の詳細については、「ElastiCache の伝送中の暗号化 (TLS)」を参照してください。
注意: オプション -tls を redis-cli とともに使用すると、クラスターモードが有効になっている暗号化されたクラスターおよびクラスターモードが無効になっている暗号化されたクラスターの両方に接続できます。クラスターに AUTH トークンが設定されている場合は、オプション -a を使用して AUTH パスワードを提供できます。
以下の例では、クラスターのエンドポイントとポートを必ず置き換えてください。
クラスターモードが無効になっている暗号化されたクラスターに接続する
次のコマンド例は、暗号化と認証が有効になっているクラスターに接続します。
src/redis-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -a <Password> -p 6379
次のコマンド例は、暗号化のみが有効になっているクラスターに接続します。
src/redis-cli -h master.cluster-disabled-noauth.54awdt.use1.cache.amazonaws.com --tls -p 6379
クラスターモードが有効になっている暗号化されたクラスターに接続する
次のコマンド例は、暗号化と認証が有効になっているクラスターに接続します。
src/redis-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -c -a <Password> -p 6379
次のコマンド例は、暗号化のみが有効になっているクラスターに接続します。
redis-cli -h clustercfg.tlswithoutauth.54awdt.use1.cache.amazonaws.com --tls -c -p 6379
クラスターに接続した後、暗号化されていないクラスターについての前述の例に示すように Redis コマンドを実行できます。
Redis-cli の代替
クラスターモードが有効になっていないクラスターで redis-cli コンパイルを実行せずに、クラスターに接続して簡単なテストを行うには、telnet または openssl を使用できます。以下のコマンド例では、クラスターのエンドポイントとポートを置き換えてください。
接続すると、前述の例に示すように Redis コマンドを実行できます。
次のコマンド例では、暗号化および/または認証クラスターモードが無効になっているクラスターに接続します。
openssl s_client -connect master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com:6379
クラスターにパスワードが設定されている場合は、まずクラスターに接続します。接続したら、次のコマンドを使用してクラスターを認証し、Enter キーを押します。次のコマンド例では、Password をクラスターのパスワードに置き換えます。
Auth Password
次のコマンド例では、暗号化または認証が有効になっておらず、かつ、クラスターモードが無効になっているクラスターに接続します。
telnet change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com 6379
MemCached クラスターに接続する
MemCached クラスターに接続するには、telnet ユーティリティを使用します。Memcached および使用可能な Memcached コマンドの詳細については、 Memcached ウェブサイトを参照してください。Memcached エンドポイントの検索の詳細については、「接続エンドポイントの検索」をご参照ください。
1. 接続をテストする際の接続元となる EC2 インスタンスに telnet ユーティリティをインストールします。
CentOS ベースシステム:
$sudo yum install telnet
Debian ベースシステム (Ubuntu):
$sudo apt-get install telnet
Amazon EC2 インスタンスに接続する方法については、チュートリアル: Amazon EC2 Linux インスタンスの開始方法を参照してください。
2. このコマンド例を使用して、エンドポイントに接続します。eaogs8.0001.usw2.cache.amazonaws.com をエンドポイントに置き換え、11211 をノードのポートに置き換えます。
telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211
出力は次のようになります。
Trying 128.0.0.1...
Connected to mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com.
Escape character is '^]'.
>
これでノードに接続されました。次の出力例に示すように、Memcached コマンドを実行できます。
set a 0 0 5
hello
STORED
get a
VALUE a 0 5
hello
END