ステップ 4: クラスターのノードに接続する
続行する前に、「ステップ 3: クラスターへのアクセスの許可」を完了します。
このセクションでは、Amazon EC2 インスタンスが作成済みであり、このインスタンスに接続できることを前提としています。これを行う手順については、「Amazon EC2 入門ガイド」を参照してください。
Amazon EC2 インスタンスは、許可されている場合にのみクラスターノードに接続できます。
ノードのエンドポイントを見つける
クラスターが利用可能な状態であり、クラスターへのアクセスを許可されている場合は、Amazon EC2 インスタンスにログインしてクラスターに接続できます。そのためには、最初にエンドポイントを確認する必要があります。
Redis (クラスターモードが無効) クラスターのエンドポイント (コンソール)
Redis (クラスターモードが無効) クラスターに 1 つのみのノードがある場合、ノードのエンドポイントは読み取りと書き込みの両方に使用されます。クラスターに複数のノードがある場合は、プライマリエンドポイント、リーダーエンドポイント、ノードエンドポイントの 3 種類のエンドポイントがあります。
プライマリエンドポイントは、常にクラスターのプライマリノードに解決される DNS 名です。プライマリエンドポイントは、リードレプリカのプライマリロールへの昇格など、クラスターに対する変更の影響を受けません。書き込みアクティビティの場合、アプリケーションをプライマリエンドポイントに接続することをお勧めします。
読み込みエンドポイントによって、ElastiCache for Redis クラスター内のすべてのリードレプリカ間でエンドポイントへの着信接続が均等に分割されます。アプリケーションがいつ接続を作成するか、アプリケーションが接続をどのように (再) 利用するかなどの追加要因によって、トラフィックの分散が決定されます。レプリカが追加または削除されても、読み込みエンドポイントはリアルタイムでクラスターの変更に対応します。ElastiCache for Redis クラスターの複数のリードレプリカを異なる AWS アベイラビリティーゾーン (AZ) に配置して、リーダーエンドポイントの高可用性を確保することができます。
注記
リーダーエンドポイントはロードバランサーではありません。これは、ラウンドロビン方式でレプリカノードの 1 つの IP アドレスに解決される DNS レコードです。
読み取りアクティビティの場合、アプリケーションはクラスター内のいずれのノードにも接続できます。プライマリエンドポイントとは異なり、ノードエンドポイントは特定のエンドポイントに解決されます。レプリカの追加または削除など、クラスターに変更を加えた場合は、アプリケーションでノードエンドポイントを更新する必要があります。
Redis (クラスターモードが無効) クラスターのエンドポイントを検索するには
-
AWS Management Console にサインインして、ElastiCache コンソール (https://console.aws.amazon.com/elasticache/
) を開きます。 -
ナビゲーションペインで、[Redis clusters] (Redis クラスター) を選択します。
クラスター画面には Redis (クラスターモード無効) クラスターと Redis (クラスターモード有効) クラスターのリストが表示されます。Redis (クラスターモードが無効) クラスターの作成 (コンソール) のセクションで作成したものを選択します。
-
クラスターのプライマリエンドポイントやリーダーエンドポイントを検索するには、クラスターの名前 (ラジオボタンではない) を選択します。
Redis (クラスターモードが無効) クラスターのプライマリエンドポイント
クラスターに 1 つのみのノードがある場合、プライマリエンドポイントはないため、次のステップに進むことができます。
-
Redis (クラスターモードが無効) クラスターにレプリカノードがある場合は、クラスターの名前を選択してから [Nodes] (ノード) タブを選択して、クラスターのレプリカノードエンドポイントを検索できます。
ノードの画面では、クラスター内のプライマリとレプリカの各ノードがそのエンドポイントと共に表示されます。
Redis (クラスターモードが無効) クラスターのノードエンドポイント
-
エンドポイントをクリップボードにコピーするには:
-
一度に 1 つのみ、コピーするエンドポイントを見つけます。
-
エンドポイントアドレスのすぐ前にあるコピーアイコンを選択します。
エンドポイントがクリップボードにコピーされます。エンドポイントを使用してノードに接続する方法については、「ノードに接続する」を参照してください。
-
Redis (クラスターモードが無効) プライマリエンドポイントは以下のように表示されます。転送時の暗号化が有効かどうかによって違いがあります。
転送時の暗号化が無効
clusterName.xxxxxx
.nodeId
.regionAndAz
.cache.amazonaws.com:port
redis-01.7abc2d.0001.usw2.cache.amazonaws.com:6379
転送時の暗号化が有効
master.clusterName
.xxxxxx
.regionAndAz
.cache.amazonaws.com:port
master.ncit.ameaqx.use1.cache.amazonaws.com:6379
エンドポイントを見つける方法の詳細については、実行中のエンジンとクラスターの該当するトピックを参照してください。
これで、必要なエンドポイントがわかったので、EC2 インスタンスにログインし、クラスターまたはレプリケーショングループに接続できます。次の例では、redis-cli ユーティリティを使用して、クラスターに接続します。redis-cli の最新バージョンでは、暗号化/認証が有効なクラスターを接続するための SSL/TLS もサポートしています。
次の例では、Amazon Linux および Amazon Linux 2 を実行している Amazon EC2 インスタンスを使用しています。他の Linux ディストリビューションでの redis-cli のインストールとコンパイルの詳細については、ご使用のオペレーティングシステムのドキュメントを参照してください。
注記
このプロセスでは、予期しない使用のみを対象として、redis-cli ユーティリティを使用した接続のテストをカバーしています。サポートされる Redis クライアントのリストについては、「Redis ドキュメント
redis-cli のダウンロードとインストール
選択した接続ユーティリティを使用して、Amazon EC2 インスタンスに接続します。Amazon EC2 インスタンスに接続する方法については、「Amazon EC2 入門ガイド」を参照してください。
次のコマンドを実行して、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
オプションは必要ありません。
クラスターモードが無効な非暗号化クラスターへの接続
次のコマンドを実行してクラスターに接続し、
[primary-endpoint]
と[ポート番号]
をクラスターのエンドポイントとポート番号に置き換えます。(Redis のデフォルトポートは、6379 です。)src/redis-cli -h
primary-endpoint
-pport number
次のような Redis のコマンドプロンプトが表示されます。
primary-endpoint
:port number
Redis コマンドを実行できるようになりました。
set x Hello OK get x "Hello"
クラスターモードが有効の非暗号化クラスターへの接続
次のコマンドを実行してクラスターに接続し、
[configuration-endpoint]
と[ポート番号]
をクラスターのエンドポイントとポート番号に置き換えます。(Redis のデフォルトポートは、6379 です。)src/redis-cli -h
configuration-endpoint
-c -pport number
注記
上記のコマンドで、-c オプションを指定すると、-ASK および -MOVED リダイレクト
が続くクラスターモードが有効になります。 次のような Redis のコマンドプロンプトが表示されます。
configuration-endpoint
:port number
Redis コマンドを実行できるようになりました。リダイレクトは、-c オプションを使用して有効にしたために発生します。リダイレクトが有効でない場合、このコマンドは MOVED エラーを返します。MOVOD エラーの詳細については、「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"
暗号化/認証が有効なクラスターへの接続
デフォルトでは、redis-cli は Redis に接続するときに暗号化されていない TCP 接続を使用します。オプション BUILD_TLS=yes
により、前の redis-cli のダウンロードとインストールセクションで示されたように、redis-cli コンパイル時に SSL/TLS を有効にします。AUTH の有効化はオプションです。ただし、AUTH を有効にするために、転送時の暗号化を有効にする必要があります。ElastiCache の暗号化と認証の詳細については、「ElastiCache の転送時の暗号化 (TLS)」を参照してください。
注記
--tls
redis-cli を用いたオプションを使用して、クラスターモードが有効および無効の両方の暗号化されたクラスターに接続できます。クラスターに AUTH トークンが設定されている場合は、オプション -a
を使用して AUTH パスワードを指定します。
以下の例では、[cluster-endpoint
] と [ポート番号
] をクラスターのエンドポイントとポート番号に置き換えてください。(Redis のデフォルトポートは、6379 です。)
クラスターモードが無効の暗号化されたクラスターに接続する
次の例では、暗号化および認証が有効のクラスターに接続します。
src/redis-cli -h
cluster-endpoint
--tls -ayour-password
-pport number
次の例では、暗号化のみが有効なクラスターに接続します。
src/redis-cli -h
cluster-endpoint
--tls -pport number
クラスターモードが有効の暗号化されたクラスターへの接続
次の例では、暗号化および認証が有効のクラスターに接続します。
src/redis-cli -c -h
cluster-endpoint
--tls -ayour-password
-pport number
次の例では、暗号化のみが有効なクラスターに接続します。
src/redis-cli -c -h
cluster-endpoint
--tls -pport number
クラスターに接続した後、暗号化されていないクラスターに対して、前の例に示されているように Redis コマンドを実行できます。
Redis-cli の代替
クラスターがクラスターモードが有効ではなく、短いテストのためにクラスターに接続する必要があるが、redis-cli コンパイルを行わない場合、telnet または openssl を使用できます。以下のコマンド例では、[cluster-endpoint
] と [ポート番号
] をクラスターのエンドポイントとポート番号に置き換えてください。(Redis のデフォルトポートは、6379 です。)
次の例では、暗号化および/または認証が有効のクラスターモードが無効のクラスターに接続します。
openssl s_client -connect
cluster-endpoint
:port number
クラスターにパスワードが設定されている場合は、まずクラスターに接続します。接続後、次のコマンドを使用してクラスターを認証してから、Enter
キーを押します。次の例では、[your-password
] をクラスターのパスワードに置き換えます。
Auth
your-password
次の例では、暗号化または認証が有効ではないクラスターモードが無効のクラスターに接続します。
telnet
cluster-endpoint
port number
Redis CLI を使用して EC2 Windows インスタンスから Redis クラスターに接続するには、redis-cli パッケージをダウンロードし、redis-cli.exe を使用して EC2 Windows インスタンスから Redis クラスターに接続する必要があります。
次の例では、redis-cli ユーティリティを使用して、暗号化が有効ではなく Redis を実行しているクラスターに接続します。Redis および使用可能な Redis コマンドの詳細については、Redis ウェブサイトで「Redis のコマンド
redis-cli を使用して、暗号化が有効になっていない Redis クラスターに接続するには
-
選択した接続ユーティリティを使用して、Amazon EC2 インスタンスに接続します。Amazon EC2 インスタンスに接続する方法については、「Amazon EC2 入門ガイド」を参照してください。
リンク https://github.com/microsoftarchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.zip
をコピーしてインターネットブラウザに貼り付け、Github の利用可能なリリース (https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504 ) から Redis クライアントの zip ファイルをダウンロードします。 zip ファイルを目的のフォルダ/パスに展開します。
コマンドプロンプトを開き、Redis ディレクトリに移動し、コマンド
c:\Redis>redis-cli -h
を実行します。Redis_Cluster_Endpoint
-p 6379例:
c:\Redis>redis-cli -h cmd.xxxxxxx.ng.0001.usw2.cache.amazonaws.com -p 6379
-
Redis コマンドを実行します。
これで、クラスターに接続され、以下のような Redis コマンドを実行できます。
set a "hello"
// Set key "a" with a string value and no expiration OKget a
// Get value for key "a" "hello"get b
// Get value for key "b" results in miss (nil)set b "Good-bye" EX 5
// Set key "b" with a string value and a 5 second expiration "Good-bye"get b
// Get value for key "b" "Good-bye" // wait >= 5 secondsget b
(nil) // key has expired, nothing returnedquit
// Exit from redis-cli