クラスターまたはレプリケーショングループへのアクセス - Amazon ElastiCache (Redis OSS)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クラスターまたはレプリケーショングループへのアクセス

Amazon ElastiCache インスタンスは、Amazon EC2 インスタンスを介してアクセスするように設計されています。

Amazon Virtual Private Cloud (Amazon VPC) で ElastiCache インスタンスを起動した場合、同じ Amazon VPC 内の Amazon EC2 インスタンスからインスタンスにアクセスできます ElastiCache。または、VPC ピアリングを使用して、別の Amazon VPC の Amazon EC2 から ElastiCache インスタンスにアクセスできます。

EC2 Classic で ElastiCache インスタンスを起動した場合、インスタンスに関連付けられた Amazon EC2 セキュリティグループにキャッシュセキュリティグループへのアクセスを許可することで、EC2 インスタンスがクラスターにアクセスできるようにします。 Amazon EC2 デフォルトでは、クラスターへのアクセスはそのクラスターを起動したアカウントに制限されています。

クラスターまたはレプリケーショングループへのアクセスの許可

EC2-VPC でクラスターを起動した

クラスターを Amazon Virtual Private Cloud (Amazon VPC) で起動した場合、クラスターに接続 ElastiCacheできるのは、同じ Amazon VPC で実行されている Amazon EC2 インスタンスからのみです。この場合、クラスターに対するネットワーク進入を許可する必要があります。

注記

[Local Zones] を使用している場合、それを有効にしていることを確認します。詳細については、「Local Zones の有効化」を参照してください。これにより、VPC はそのローカルゾーンに拡張され、VPC はそのサブネットを他のアベイラビリティーゾーン、関連するゲートウェイ、ルートテーブル、およびその他のセキュリティグループの考慮事項のサブネットとして扱い、自動的に調整されます。

Amazon VPC セキュリティグループからクラスターへのネットワーク進入を許可するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[ネットワーク & セキュリティ] の下にある [セキュリティグループ] を選択します。

  3. セキュリティグループのリストから、Amazon VPC のセキュリティグループを選択します。 ElastiCache 使用するセキュリティグループを作成しない限り、このセキュリティグループにはデフォルトの という名前が付けられます。

  4. Inbound タブを選択し、次の操作を行います。

    1. Edit (編集) を選択します。

    2. ルールの追加 を選択します。

    3. Type 列で Custom TCP rule を選択します。

    4. Port range ボックスに、クラスターノードのポート番号を入力します。この番号は、クラスターの起動時に指定した番号と同じ番号である必要があります。 です。Redis OSS のデフォルトポートは 6379です。

    5. ソースボックスで、ポート範囲 (0.0.0.0/0) を持つ Anywhere を選択して、Amazon VPC 内で起動する Amazon EC2 インスタンスを ElastiCache ノードに接続できるようにします。

      重要

      ElastiCache クラスターを 0.0.0.0/0 に開くと、クラスターにはパブリック IP アドレスがないため、VPC の外部からアクセスできないため、クラスターはインターネットに公開されません。ただし、お客様のアカウントの他の Amazon EC2 インスタンスにデフォルトのセキュリティグループが適用され、そのインスタンスにパブリック IP アドレスが付与される場合があります。それがデフォルトポートで何かを実行している場合、そのサービスが意図せず公開されることがあります。したがって、 でのみ使用される VPC セキュリティグループを作成することをお勧めします ElastiCache。詳細については、「 カスタムセキュリティグループ」を参照してください。

    6. Save (保存) を選択します。

Amazon VPC で Amazon EC2 インスタンスを起動すると、そのインスタンスは ElastiCache クラスターに接続できるようになります。

外部から ElastiCache リソースにアクセスする AWS

Amazon ElastiCache は、クラウドベースのインメモリキーバリューストアを提供する AWS サービスです。このサービスは、 内からのみアクセスするように設計されています AWS。ただし、 ElastiCache クラスターが VPC 内でホストされている場合は、ネットワークアドレス変換 (NAT) インスタンスを使用して外部アクセスを提供できます。

要件

外部から ElastiCache リソースにアクセスするには、次の要件を満たす必要があります AWS。

  • クラスターが VPC 内にあり、ネットワークアドレス変換(NAT)インスタンスを介してアクセスできる必要があります。これは必須の要件であり、例外はありません。

  • NAT インスタンスがクラスターと同じ VPC 内で起動されている必要があります。

  • NAT インスタンスがクラスターとは別のパブリックサブネットで起動されている必要があります。

  • Elastic IP (EIP) アドレスが NAT インスタンスに関連付けられている必要があります。NAT インスタンスのポートは、iptables のポート転送機能を使用して VPC 内のキャッシュノードポートに転送されます。

考慮事項

外部 ElastiCache からリソースにアクセスするときは、以下の考慮事項に留意する必要があります ElastiCache。

  • クライアントは EIP に接続し、NAT インスタンスのポートをキャッシュします。NAT インスタンスでポート転送すると、トラフィックは適切なキャッシュクラスターノードに転送されます。

  • クラスターノードが追加または交換されたら、この変更が反映されるように iptables ルールが更新される必要があります。

制限事項

このアプローチは、テストおよび開発の目的にしか使用できません。以下の制限があるため、本稼働で使用することは推奨されません。

  • NAT インスタンスは、クライアントと複数のクラスターの間のプロキシとして機能します。プロキシを追加すると、キャッシュクラスターのパフォーマンスに影響が及びます。この影響は、NAT インスタンスを介してアクセスするキャッシュクラスターの数に応じて増大します。

  • クライアントから NAT インスタンスへのトラフィックは暗号化されません。したがって、NAT インスタンスを介して機密データを送信することは回避してください。

  • NAT インスタンスは、別のインスタンスを維持するためのオーバーヘッドを増加させます。

  • NAT インスタンスは単一障害点として機能します。VPC で高可用性 NAT をセットアップする方法については、「Amazon VPC NAT インスタンスの高可用性: 例」を参照してください。

外部から ElastiCache リソースにアクセスする方法 AWS

次の手順は、NAT インスタンスを使用して ElastiCache リソースに接続する方法を示しています。

これらのステップは、以下を前提としています。

  • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379

  • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379

次に、逆方向の NAT が必要です。

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.0.0.55

デフォルトで無効になっている IP 転送も有効にする必要があります。

sudo sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sudo sysctl --system

  • 以下を使って、Redis クラスターにアクセスします。

    • IP アドレス – 10.0.1.230

    • デフォルトの Redis ポート – 6379

    • セキュリティグループ – sg-bd56b7da

    • AWS インスタンス IP アドレス – sg-bd56b7da

  • 信頼済みクライアントの IP アドレスが 198.51.100.27 である。

  • NAT インスタンスの Elastic IP アドレスが 203.0.113.73 である。

  • NAT インスタンスのセキュリティグループが sg-ce56b7a9 である。

NAT インスタンスを使用して ElastiCache リソースに接続するには
  1. キャッシュクラスターと同じ VPC 内のパブリックサブネット内に NAT インスタンスを作成します。

    デフォルトでは、VPC ウィザードが cache.m1.small ノードタイプを起動します。必要に応じてノードサイズを選択する必要があります。外部 ElastiCache から にアクセスするには、EC2 NAT AMI を使用する必要があります AWS。

    NAT インスタンスの作成の詳細については、 AWS 「VPC ユーザーガイド」の「NAT インスタンス」を参照してください。

  2. キャッシュクラスターと NAT インスタンスのセキュリティグループルールを作成します。

    NAT インスタンスのセキュリティグループとクラスターインスタンスには以下のルールが必要です。

    • 2 つのインバウンドルール

      • 信頼済みクライアントから、NAT インスタンスから転送された各キャッシュポート (6379 - 6381) への TCP 接続を許可するルール。

      • 信頼済みクライアントへの SSH アクセスを許可するルール。

      NAT インスタンスのセキュリティグループ - インバウンドルール
      タイプ プロトコル ポート範囲 ソース
      カスタム TCP ルール TCP 6379-6380 198.51.100.27/32
      SSH TCP 22 203.0.113.73/32
    • キャッシュポート(6379)への TCP 接続を許可するアウトバウンドルール。

      NAT インスタンスのセキュリティグループ - アウトバウンドルール
      タイプ プロトコル ポート範囲 デスティネーション
      カスタム TCP ルール TCP 6379 sg-ce56b7a9 (クラスターインスタンスのセキュリティグループ)
    • NAT インスタンスからキャッシュポート(6379)への TCP 接続を許可するクラスターのセキュリティグループのインバウンドルール。

      クラスターインスタンスのセキュリティグループ - インバウンドルール
      タイプ プロトコル ポート範囲 ソース
      カスタム TCP ルール TCP 6379 sg-bd56b7da (クラスターセキュリティグループ)
  3. ルールを検証します。

    • 信頼済みクライアントが NAT インスタンスに SSH 接続できることを確認します。

    • 信頼済みクライアントが NAT インスタンスからクラスターに接続できることを確認します。

  4. NAT インスタンスに iptables ルールを追加します。

    NAT インスタンスからのキャッシュポートをクラスターノードに転送するには、iptables ルールをクラスターのノードごとに NAT テーブルに追加する必要があります。以下に例を示します。

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379

    ポート番号は、クラスターのノードごとに一意である必要があります。たとえば、ポート 11211~11213 を使用する 3 つのノードで構成される Redis クラスターを使用している場合、ルールは次のようになります。

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379
  5. 信頼済みクライアントがクラスターに接続できることを確認します。

    信頼済みクライアントは、NAT インスタンスに関連付けられている EIP と、適切なクラスターノードに対応するクラスターポートに接続できる必要があります。たとえば、PHP の接続文字列は次のようになります。

    redis->connect( '203.0.113.73', 6379 ); redis->connect( '203.0.113.73', 6380 ); redis->connect( '203.0.113.73', 6381 );

    telnet クライアントを使用して接続を検証することもできます。例:

    telnet 203.0.113.73 6379 telnet 203.0.113.73 6380 telnet 203.0.113.73 6381
  6. iptables 設定を保存します。

    ルールをテストし、検証してから保存します。Red Hat ベースの Linux ディストリビューション (Amazon Linux など) を使用している場合は、次のコマンドを実行します。

    service iptables save

関連トピック

以下のトピックも役に立つ場合があります。