Amazon ElastiCache Redis または Memcached クラスターへの接続をテストする方法を教えてください。
Linux ベースのクライアントから、Amazon ElastiCache for Redis クラスターまたは Amazon ElastiCache for Memcached クラスターへの接続をテストしたいと考えています。
簡単な説明
Amazon ElastiCache では、2 つのインメモリの key-value エンジン (Redis および Memcached) がサポートされています。ElastiCache キャッシュクラスターを起動する際は、お好みのエンジンを選択します。
注: この解決策の対象となるのは、予定外の使用のみの接続をテストする場合です。サポートされている Redis クライアントのリストについては、Redis ウェブサイトのドキュメントを参照してください。
Java、.NET、または PHP で Memcached を使用する場合は、自動検出機能を備えた ElastiCache クライアントを使用するのがベストプラクティスです。自動検出機能を備えた ElastiCache クライアントは、新しい ElastiCache ノードがキャッシュクラスターに追加されると、それらを自動的に識別します。
解決策
ElastiCache クラスターを作成する
注: 既存のクラスターに接続する場合は、次の手順に進みます。
ElastiCache Redis クラスターの作成については、「クラスターを作成する」 (Amazon ElastiCache for Redis ユーザーガイド) を参照してください。
Memcached クラスターの作成については、「クラスターを作成する」 (Amazon ElastiCache for Memcached ユーザーガイド) を参照してください。
ElastiCache Redis クラスターへの接続
ElastiCache は、クラスターモードが無効な Redis クラスター、およびクラスターモードが有効な Redis クラスターの両方ををサポートしています。これらのクラスターへの接続をテストするには、redis-cli または redis6-cli ユーティリティを使用します。redis-cli および redis6-cli の最新バージョンは SSL/TLS をサポートしており、暗号化または認証が有効なクラスターに接続できます。接続元の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで redis-cli ユーティリティをダウンロードしてコンパイルします。Amazon EC2 インスタンスに接続する方法については、「チュートリアル: Amazon EC2 Linux インスタンスの開始方法」を参照してください。
注: 次の例では、Amazon Linux、Amazon Linux 2、Amazon Linux 2023 を実行する EC2 インスタンスを使用しています。redis-cli と redis6-cli を他の Linux ディストリビューションでインストールおよびコンパイルする方法については、オペレーティングシステムに固有のドキュメントを参照してください。
Amazon Linux 2023
sudo yum install redis6 -y
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
デフォルトでは、redis-cli は Redis に接続する際、暗号化されていない TCP 接続を使用します。redis-cli がコンパイルされると、BUILD_TLS=yes オプションによって SSL/TLS がオンになります。接続先のクラスターが転送中に暗号化されていない場合は、Build_TLS=yes オプションは必要ありません。次の手順では、暗号化されたクラスターと暗号化されていないクラスターは、転送中の暗号化を指します。
**注:**redis6 パッケージをインストールすると、デフォルトの SSL/TLS サポートで redis6-cli が自動的にインストールされます。
Redis エンドポイントの検索については、「接続エンドポイントの検索」を参照してください。
クラスターモードが無効な暗号化されていないクラスターへの接続
-
クラスターに接続するには、次のコマンドを実行します。以下のコマンドの例では、change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com と 6379 を、クラスターのエンドポイントとポート番号にそれぞれ置き換えます:
Amazon Linux 2023
redis6-cli -h change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com -p 6379
Amazon Linux および Amazon Linux 2
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>
-
クラスターに接続すると、以下の例などの Redis コマンドを実行できます。
set a "hello"OK get a "hello" quit
詳細については、redis.io ウェブサイトの「コマンド」を参照してください。
クラスターモードが有効な暗号化されていないクラスターへの接続
クラスターに接続するには、次のコマンドを実行します。以下のコマンドの例では、cluster-disable-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com と 6379 を、クラスターのエンドポイントとポート番号にそれぞれ置き換えます:
Amazon Linux 2023
redis6-cli -h cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com -c -p 6379
Amazon Linux および Amazon Linux 2
src/redis-cli -h cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com -c -p 6379
注: これらのコマンドでは、-c オプションを指定すると、-ASK および -MOVED リダイレクト の後にクラスターモードが有効になります。詳細については、redis.io ウェブサイトの「Redis クラスタープロトコルにおけるクライアントとサーバーの役割」を参照してください。
Redis コマンドプロンプトの結果は、次の例のようになります:
cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com:>
これで Redis コマンドを実行できるようになりました。-c オプションが原因でリダイレクトが行われます。リダイレクトを有効にしない場合、コマンドは MOVED エラーを返します。MOVED エラーについての詳細は、「Redis クラスター仕様」 (Redis ウェブサイト) を参照してください。
Redis コマンドの例は次のとおりです。
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"
暗号化/認証が有効なクラスターへの接続
AUTH を有効にするオプションもあります。ただし AUTH を有効にするには、転送時の暗号化を有効にする必要があります。ElastiCache の暗号化と認証の詳細については、「ElastiCache の転送時の暗号化 (TLS)」を参照してください。
クラスターモードが有効な暗号化クラスターとクラスターモードが無効な暗号化クラスターの両方に接続するには、redis-cli で --tls オプションを使用します。クラスターに AUTH トークンが設定されている場合は、-a オプションを使用して AUTH パスワードを指定できます。
注: Redis バージョン 7 以降、既存の ElastiCache クラスターに対して転送時の暗号化が有効になります。Redis クラスターの TLS 設定は、クラスターを再度作成またはプロビジョニングしたり、アプリケーションの可用性に影響を与えることなく変更できます。転送中の暗号化を有効にしたら、新しい TLS 固有のエンドポイントを使用するようにクライアント設定を更新します。詳細については、「転送中の暗号化を有効にする前、有効化中、有効化後に接続を確立するためのベストプラクティス」を参照してください。
次の例では、クラスターのエンドポイントとポートを置き換えます。
クラスターモードが無効な暗号化クラスターへの接続
次のコマンドの例では、暗号化/認証が有効なクラスターに接続します:
Amazon Linux 2023
redis6-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -a PASSWORD -p 6379
Amazon Linux および Amazon Linux 2
src/redis-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -a PASSWORD -p 6379
次のコマンドの例では、暗号化のみが有効なクラスターに接続します:
Amazon Linux 2023
redis6-cli -h master.cluster-disabled-noauth.54awdt.use1.cache.amazonaws.com --tls -p 6379
Amazon Linux および Amazon Linux 2
src/redis-cli -h master.cluster-disabled-noauth.54awdt.use1.cache.amazonaws.com --tls -p 6379
クラスターモードが有効な暗号化クラスターへの接続
次のコマンドの例では、暗号化/認証が有効なクラスターに接続します:
Amazon Linux 2023
redis6-cli -h clustercfg.tlswithauth.54awdt.use1.cache.amazonaws.com --tls -c -a PASSWORD -p 6379
Amazon Linux および Amazon Linux 2
src/redis-cli -h clustercfg.tlswithauth.54awdt.use1.cache.amazonaws.com --tls -c -a PASSWORD -p 6379
次のコマンドの例では、暗号化のみが有効なクラスターに接続します:
Amazon Linux 2023
redis6-cli -h clustercfg.tlswithoutauth.54awdt.use1.cache.amazonaws.com --tls -c -p 6379
Amazon Linux および Amazon Linux 2
src/redis-cli -h clustercfg.tlswithoutauth.54awdt.use1.cache.amazonaws.com --tls -c -p 6379
クラスターに接続したら、前の暗号化されていないクラスターの例で示したように、Redis コマンドを実行できます。
Redis-cli の代替
redis-cli のコンパイルを行わない簡単なテストの場合、クラスターモードが有効になっていないクラスターに接続できます。そのためには、telnet または openssl を使用してください。次のコマンドの例では、クラスターのエンドポイントとポートを置き換えます。
注: telnet ユーティリティをインストールするには、次のセクション「転送時の暗号化を行わずに Memcached クラスターに接続する」を参照してください。
接続したら、前の例で示したように 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
ElastiCache Memcached クラスターへの接続
Memcached クラスターに接続するには、telnet ユーティリティを使用します。
転送時の暗号化を行わずに Memcached クラスターに接続する
-
テストしている接続元の EC2 インスタンスに telnet ユーティリティをインストールします。
CentOS ベースのシステムの場合は、次のコマンドを実行します:
$sudo yum install telnet
Debian ベースのシステム (Ubuntu) の場合は、次のコマンドを実行します:
$sudo apt-get install telnet
Amazon EC2 インスタンスに接続する方法については、「チュートリアル: Amazon EC2 Linux インスタンスの開始方法」を参照してください。
-
エンドポイントに接続するには、次のサンプルコマンドを実行します。mycachecluster.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 5hello STORED get a VALUE a 0 5 hello END
転送時の暗号化による MemCached クラスターへの接続
転送時の暗号化は、Memcached バージョン 1.6.12 以降を実行するクラスターでサポートされています。Telnet では、暗号化を使用しません。暗号化が有効な MemCached クラスターに接続するには、openssl クライアントを使用します。
注: クラスターで転送時の暗号化を有効にできるのは、クラスターの作成時のみです。転送時の暗号化の有効化および無効化をトグルスイッチで切り替えられるようにクラスターを変更することはできません。詳細については、「ElastiCache の転送時の暗号化 (TLS)」を参照してください。
エンドポイントに接続するには、次のサンプルコマンドを実行します。testwithtls.qtyxq7.cfg.apse2.cache.amazonaws.com をエンドポイント、11211 をノードのポートに置き換えます:
openssl s_client -quiet -crlf -connect testwithtls.qtyxq7.cfg.apse2.cache.amazonaws.com:11211
出力例は次のとおりです。
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, CN = Amazon RSA 2048 M02 verify return:1 depth=0 CN = *.testwithtls.qtyxq7.apse2.cache.amazonaws.com verify return:1
これで、ノードに接続されました。次の出力の例に示すように、Memcached コマンドを実行できます:
set a 0 0 5hello STORED get a VALUE a 0 5 hello END
関連するコンテンツ
- 質問済み 3年前lg...
- 質問済み 5年前lg...
- 質問済み 5年前lg...
- 質問済み 6年前lg...
- AWS公式更新しました 1年前