ステップ 4: クラスターのノードに接続する - Amazon ElastiCache for Redis

ステップ 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 (クラスターモードが無効) クラスターのエンドポイントを検索するには

  1. AWS Management Console にサインインして、ElastiCache コンソール (https://console.aws.amazon.com/elasticache/) を開きます。

  2. ナビゲーションペインで、[Redis clusters] (Redis クラスター) を選択します。

    クラスター画面には Redis (クラスターモード無効) クラスターと Redis (クラスターモード有効) クラスターのリストが表示されます。Redis (クラスターモードが無効) クラスターの作成 (コンソール) のセクションで作成したものを選択します。

  3. クラスターのプライマリエンドポイントやリーダーエンドポイントを検索するには、クラスターの名前 (ラジオボタンではない) を選択します。

    Redis (クラスターモードが無効) クラスターの場合、[Primary endpoint] (主要エンドポイント) および [Reader endpoint] (リーダーエンドポイント) は [Cluster details] (クラスターの詳細) の下に表示されます。どちらかをコピーするには、エンドポイントの左側にある [copy] (コピー) アイコンを選択します。

    クラスターにノードが 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 ドキュメント」を参照してください。AWS ElastiCache を用いた SDK の使用の例については、「ElastiCache および AWS SDK の使用開始」を参照してください。

redis-cli のダウンロードとインストール

  1. 選択した接続ユーティリティを使用して、Amazon EC2 インスタンスに接続します。Amazon EC2 インスタンスに接続する方法については、「Amazon EC2 入門ガイド」を参照してください。

  2. 次のコマンドを実行して、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 オプションは必要ありません。

クラスタモードが無効な非暗号化クラスターへの接続

  1. 次のコマンドを実行してクラスターに接続し、[cluster-endpoint] と [ポート番号] をクラスターのエンドポイントとポート番号に置き換えます。(Redis のデフォルトポートは、6379 です。)

    src/redis-cli -h cluster-endpoint -c -p port number
    注記

    上記のコマンドで、-c オプションを指定すると、-ASK および -MOVED リダイレクトが続くクラスターモードが有効になります。

    次のような Redis のコマンドプロンプトが表示されます。

    cluster-endpoint:port number
  2. 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 -a your-password -p port number

次の例では、暗号化のみが有効なクラスターに接続します。

src/redis-cli -h cluster-endpoint --tls -p port number

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

次の例では、暗号化および認証が有効のクラスターに接続します。

src/redis-cli -c -h cluster-endpoint --tls -a your-password -p port number

次の例では、暗号化のみが有効なクラスターに接続します。

src/redis-cli -c -h cluster-endpoint --tls -p port 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 クラスターに接続するには

  1. 選択した接続ユーティリティを使用して、Amazon EC2 インスタンスに接続します。Amazon EC2 インスタンスに接続する方法については、「Amazon EC2 入門ガイド」を参照してください。

  2. リンク 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
  3. Redis コマンドを実行します。

    これで、クラスターに接続され、以下のような Redis コマンドを実行できます。

    set a "hello" // Set key "a" with a string value and no expiration OK get 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 seconds get b (nil) // key has expired, nothing returned quit // Exit from redis-cli
  1. 次のコマンドを実行してクラスターに接続し、[cluster-endpoint] と [ポート番号] をクラスターのエンドポイントとポート番号に置き換えます。(Redis のデフォルトポートは、6379 です。)

    src/redis-cli -h cluster-endpoint -c -p port number
    注記

    上記のコマンドで、-c オプションを指定すると、-ASK および -MOVED リダイレクトが続くクラスターモードが有効になります。

    次のような Redis のコマンドプロンプトが表示されます。

    cluster-endpoint:port number
  2. 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 -a your-password -p port number

次の例では、暗号化のみが有効なクラスターに接続します。

src/redis-cli -h cluster-endpoint --tls -p port number

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

次の例では、暗号化および認証が有効のクラスターに接続します。

src/redis-cli -c -h cluster-endpoint --tls -a your-password -p port number

次の例では、暗号化のみが有効なクラスターに接続します。

src/redis-cli -c -h cluster-endpoint --tls -p port number

クラスターに接続した後、暗号化されていないクラスターに対して、前の例に示されているように Redis コマンドを実行できます。