Amazon ElastiCache Redis または Memcached クラスターへの接続をテストする方法を教えてください。

所要時間4分
0

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 エンドポイントの検索については、「接続エンドポイントの検索」を参照してください。

クラスターモードが無効な暗号化されていないクラスターへの接続

  1. クラスターに接続するには、次のコマンドを実行します。以下のコマンドの例では、change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com6379 を、クラスターのエンドポイントとポート番号にそれぞれ置き換えます:

    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>
  2. クラスターに接続すると、以下の例などの Redis コマンドを実行できます。

    set a "hello"OK
    get a
    "hello"
    quit

    詳細については、redis.io ウェブサイトの「コマンド」を参照してください。

クラスターモードが有効な暗号化されていないクラスターへの接続

クラスターに接続するには、次のコマンドを実行します。以下のコマンドの例では、cluster-disable-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com6379 を、クラスターのエンドポイントとポート番号にそれぞれ置き換えます:

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 クラスターに接続する

  1. テストしている接続元の EC2 インスタンスに telnet ユーティリティをインストールします。

    CentOS ベースのシステムの場合は、次のコマンドを実行します:

    $sudo yum install telnet

    Debian ベースのシステム (Ubuntu) の場合は、次のコマンドを実行します:

    $sudo apt-get install telnet

    Amazon EC2 インスタンスに接続する方法については、「チュートリアル: Amazon EC2 Linux インスタンスの開始方法」を参照してください。

  2. エンドポイントに接続するには、次のサンプルコマンドを実行します。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
AWS公式
AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ