メニュー
Amazon ElastiCache
ユーザーガイド (API Version 2015-02-02)

AWS 外部からの ElastiCache リソースへのアクセス

Amazon ElastiCache は、クラウドベースのメモリ内のキー値ストアを提供する AWS サービスです。これは、バックエンドで Memcached エンジンまたは Redis エンジンを使用します。このサービスは、AWS 内からのみアクセスできるように設計されています。ただし、ElastiCache クラスターが Amazon VPC 内にホストされている場合、AWS 外部からクラスターにアクセスする方法が多数あります。その 1 つが、このトピックで説明しているように、ネットワークアドレス変換 (NAT) インスタンスを使用して外部アクセスを提供する方法です。他のパターンについては、「顧客のデータセンター内で実行されるアプリケーションからの ElastiCache クラスターへのアクセス」を参照してください。

要件

NAT インスタンスを使用して AWS 外部から ElastiCache リソースにアクセスするには、以下の要件を満たしている必要があります。AWS 外部から ElastiCache にアクセスするその他の方法については、「顧客のデータセンター内で実行されるアプリケーションからの ElastiCache クラスターへのアクセス」を参照してください。

  • クラスターが Amazon VPC 内にあり、ネットワークアドレス変換 (NAT) インスタンスを介してアクセスできる必要があります。

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

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

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

考慮事項

ElastiCache 外部から ElastiCache リソースにアクセスする際には、以下の点を考慮してください。

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

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

制約事項

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

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

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

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

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

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

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

ヒント

Amazon ElastiCache クラスター用に動作させるように次のプロセスを変更できます。クラスターのポート番号に、例のポート番号を指定します。

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

  • IP アドレス 10.0.1.230、デフォルトの Memcached ポート 11211、およびセキュリティグループ sg-bd56b7da を使用して Memcached クラスターにアクセスしている。

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

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

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

次の手順で NAT インスタンスの作成を終了すると、以下のようになります。

  • NAT インスタンスで IP 転送が有効になります。これを確認するために、次のコマンドを使用できます。

    Copy
    cat /proc/sys/net/ipv4/ip_forward
  • マスカレードが有効になります。マスカレードを有効にするには、次のコマンドを使用できます。

    Copy
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

NAT インスタンスを使用して ElastiCache リソースに接続するには

  1. キャッシュクラスターと同じ VPC 内のパブリックサブネット内に NAT インスタンスを作成します。

    デフォルトでは、VPC ウィザードが cache.m1.small ノードタイプを起動します。必要に応じてノードサイズを選択する必要があります。

    NAT インスタンスの作成については、『AWS VPC User Guide』の「NAT インスタンス」を参照してください。

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

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

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

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

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

      NAT インスタンスのセキュリティグループ - インバウンドルール

      タイプ プロトコル ポート範囲 送信元
      カスタム TCP ルール TCP 11211-11213 198.51.100.27/32
      SSH TCP 22 198.51.100.27/32
    • 転送された各キャッシュポート (11211 ~ 11213) への TCP 接続を許可するアウトバウンドルール。

      NAT インスタンスのセキュリティグループ - アウトバウンドルール

      タイプ プロトコル ポート範囲 送信先
      カスタム TCP ルール TCP 11211-11213 sg-bd56b7da (キャッシュクラスターのセキュリティグループ)
    • NAT インスタンスからクラスター内の各インスタンスのキャッシュポート (11211 ~ 11213) への TCP 接続を許可するクラスターのセキュリティグループのインバウンドルール。

      キャッシュクラスターのセキュリティグループ - インバウンドルール

      タイプ プロトコル ポート範囲 送信元
      カスタム TCP ルール TCP 11211-11213 sg-ce56b7a9 (NAT インスタンスのセキュリティグループ)
  3. ルールを検証します。

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

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

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

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

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

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

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

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

    Copy
    $memcached->connect( '203.0.113.73', 11211 ); $memcached->connect( '203.0.113.73', 11212 ); $memcached->connect( '203.0.113.73', 11213 );

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

    Copy
    telnet 203.0.113.73 11211 telnet 203.0.113.73 11212 telnet 203.0.113.73 11213
  6. iptables 設定を保存します。

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

    Copy
    service iptables save

関連トピック