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.com6379 を、使用しているクラスターのエンドポイントとポート番号に置き換えます。

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.com6379 をクラスターのエンドポイントとポート番号に置き換えます。

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

この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?