Zugreifen auf Ihren ElastiCache Cluster oder Ihre Replikationsgruppe - Amazon ElastiCache

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zugreifen auf Ihren ElastiCache Cluster oder Ihre Replikationsgruppe

Ihre ElastiCache Amazon-Instances sind für den Zugriff über eine EC2 Amazon-Instance konzipiert.

Wenn Sie Ihre ElastiCache Instance in einer Amazon Virtual Private Cloud (Amazon VPC) gestartet haben, können Sie von einer ElastiCache Amazon-Instance in derselben Amazon VPC aus auf Ihre EC2 Instance zugreifen. Oder Sie können mithilfe von VPC-Peering von einem Amazon EC2 in einer anderen Amazon-VPC auf Ihre ElastiCache Instance zugreifen.

Wenn Sie Ihre ElastiCache Instance in EC2 Classic gestartet haben, erlauben Sie der EC2 Instance den Zugriff auf Ihren Cluster, indem Sie der mit der Instance verknüpften EC2 Amazon-Sicherheitsgruppe Zugriff auf Ihre Cache-Sicherheitsgruppe gewähren. Standardmäßig ist der Zugriff auf einen Cluster auf das Konto beschränkt, mit dem der Cluster gestartet wurde.

Zugriff auf Ihren Cluster oder die Replikationsgruppe erteilen

Sie haben Ihren Cluster in VPC EC2 gestartet

Wenn Sie Ihren Cluster in einer Amazon Virtual Private Cloud (Amazon VPC) gestartet haben, können Sie nur von einer EC2 Amazon-Instance aus, die in derselben Amazon VPC läuft, eine Verbindung zu Ihrem ElastiCache Cluster herstellen. In diesem Fall müssen Sie Netzwerkzugang zum Cluster gewähren.

Anmerkung

Wenn Sie Local Zones verwenden, vergewissern Sie sich, dass Sie sie aktiviert haben. Weitere Informationen finden Sie unter Local Zones aktivieren. Dadurch wird Ihre VPC auf diese Local Zone ausgedehnt, und Ihre VPC behandelt das Subnetz wie jedes andere Subnetz in jeder anderen Availability Zone, und relevante Gateways, Routentabellen und andere Sicherheitsgruppen werden automatisch angepasst.

So gewähren Sie einem Cluster den Netzwerkeingang aus einer Amazon-VPC-Sicherheitsgruppe
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Wählen Sie in der Navigationsleiste unter Network &Security die Option Security Groups aus.

  3. Wählen Sie aus der Liste der Sicherheitsgruppen die Sicherheitsgruppe Ihrer Amazon VPC aus. Sofern Sie keine Sicherheitsgruppe zur ElastiCache Verwendung erstellt haben, wird diese Sicherheitsgruppe als Standard bezeichnet.

  4. Wählen Sie die Registerkarte Inbound und verfahren Sie dann wie folgt:

    1. Wählen Sie Edit aus.

    2. Wählen Sie Regel hinzufügen aus.

    3. Wählen Sie in der Spalte Typ die Option Benutzerdefinierte TCP-Regel aus.

    4. Geben Sie in das Feld Port Range die Portnummer Ihres Clusterknotens ein. Diese Nummer muss mit der Nummer übereinstimmen, die Sie beim Starten des Clusters angegeben haben. Der Standardport für Memcached ist 11211 Der Standardport für Valkey und Redis OSS ist. 6379

    5. Wählen Sie im Feld Quelle die Option Anywhere mit dem Portbereich (0.0.0.0/0) aus, sodass jede EC2 Amazon-Instance, die Sie in Ihrer Amazon VPC starten, eine Verbindung zu Ihren Knoten herstellen kann. ElastiCache

      Wichtig

      Durch das Öffnen des ElastiCache Clusters für 0.0.0.0/0 wird der Cluster nicht dem Internet zugänglich gemacht, da er keine öffentliche IP-Adresse hat und daher nicht von außerhalb der VPC darauf zugegriffen werden kann. Die Standardsicherheitsgruppe kann jedoch auf andere EC2 Amazon-Instances im Kundenkonto angewendet werden, und diese Instances können eine öffentliche IP-Adresse haben. Wenn diese Instances zufälligerweise eine Aktion auf dem Standardport ausführen, dann könnte dieser Service unbeabsichtigt zugänglich gemacht werden. Daher wird empfohlen, eine VPC-Sicherheitsgruppe einzurichten, die ausschließlich von ElastiCache genutzt wird. Weitere Informationen finden Sie unter Benutzerdefinierte Sicherheitsgruppen.

    6. Wählen Sie Save (Speichern) aus.

Wenn Sie eine EC2 Amazon-Instance in Ihrer Amazon VPC starten, kann diese Instance eine Verbindung zu Ihrem ElastiCache Cluster herstellen.

Zugriff auf ElastiCache Ressourcen von außen AWS

Amazon ElastiCache ist ein AWS Service, der einen cloudbasierten In-Memory-Key-Value-Speicher bereitstellt. Der Service ist so konzipiert, dass er ausschließlich von innen abgerufen werden kann. AWS Wenn der ElastiCache Cluster jedoch in einer VPC gehostet wird, können Sie eine Network Address Translation (NAT) -Instance verwenden, um externen Zugriff zu gewähren.

Voraussetzungen

Die folgenden Anforderungen müssen erfüllt sein, damit Sie von außen AWS auf Ihre ElastiCache Ressourcen zugreifen können:

  • Der Cluster muss sich innerhalb einer VPC befinden und über eine Network Address Translation (NAT)-Instance zugänglich sein. Für diese Anforderung gibt es keine Ausnahmen.

  • Die NAT-Instance muss in der gleichen VPC gestartet werden wie der Cluster.

  • Die NAT-Instance muss in einem vom Cluster getrennten, öffentlichen Subnetz gestartet werden.

  • Eine Elastic IP-Adresse (EIP) muss der NAT-Instance zugeordnet sein. Die Portweiterleitungsfunktion von iptables wird verwendet, um einen Port auf der NAT-Instance an den Cache-Knotenport innerhalb der VPC weiterzuleiten.

Überlegungen

Beachten Sie beim Zugriff auf Ihre ElastiCache -Ressourcen von außerhalb von ElastiCache die folgenden Punkte.

  • Clients stellen eine Verbindung mit der EIP und dem Cache-Port der NAT-Instance her. Die Portweiterleitung auf der NAT-Instance leitet den Datenverkehr an den entsprechenden Cache-Cluster-Knoten weiter.

  • Wenn ein Cluster-Knoten hinzugefügt oder ersetzt wird, müssen die iptables-Regeln entsprechend aktualisiert werden.

Einschränkungen

Dieser Ansatz sollte nur zu Test- und Entwicklungszwecken verwendet werden. Er wird aufgrund der folgenden Einschränkungen nicht für die Produktion empfohlen:

  • Die NAT-Instance fungiert als Proxy zwischen Clients und mehreren Clustern. Ein zusätzlicher Proxy beeinträchtigt die Leistung des Cache-Clusters. Die Beeinträchtigung steigt mit der Anzahl von Cache-Clustern, auf die Sie über die NAT-Instance zugreifen.

  • Der Datenverkehr von den Clients zur NAT-Instance ist nicht verschlüsselt. Daher sollten Sie keine sensiblen Daten über die NAT-Instance senden.

  • Die NAT-Instance bedeutet zusätzlichen Aufwand durch Verwalten einer weiteren Instance.

  • Die NAT-Instance dient als einzelne Fehlerquelle. Informationen zum Einrichten von NAT mit hoher Verfügbarkeit in VPC finden Sie unter Hohe Verfügbarkeit für Amazon VPC NAT-Instances: Beispiel.

Wie greife ich von außen auf ElastiCache Ressourcen zu AWS

Das folgende Verfahren zeigt, wie Sie mithilfe einer NAT-Instanz eine Verbindung zu Ihren ElastiCache Ressourcen herstellen.

Diese Schritte setzen Folgendes voraus:

  • 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

Als Nächstes benötigen Sie NAT in die entgegengesetzte Richtung:

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

Sie müssen auch die IP-Weiterleitung aktivieren, die standardmäßig deaktiviert ist:

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

  • Ihr Zugriff auf einen Memcached-Cluster erfolgt mit:

    • IP-Adresse – 10.0.1.230

    • Memcached-Standardport – 11211

    • Sicherheitsgruppe – *10\.0\.0\.55*

  • Sie greifen auf einen Valkey- oder Redis OSS-Cluster zu mit:

    • IP-Adresse – 10.0.1.230

    • Standardport — 6379

    • Sicherheitsgruppe – sg-bd56b7da

    • AWS Instanz-IP-Adresse — sg-bd56b7da

  • Die IP-Adresse Ihres vertrauenswürdigen Clients lautet 198.51.100.27.

  • Ihre NAT-Instance hat die Elastic IP-Adresse 203.0.113.73.

  • Die Sicherheitsgruppe Ihrer NAT-Instance lautet sg-ce56b7a9.

So stellen Sie mithilfe einer NAT-Instance eine Verbindung zu Ihren Ressourcen her ElastiCache
  1. Erstellen Sie eine NAT-Instance in derselben VPC wie Ihr Cache-Cluster, allerdings in einem öffentlichen Subnetz.

    Standardmäßig startet der VPC-Assistent einen cache.m1.small-Knotentyp. Wählen Sie eine Knotengröße aus, die Ihren Anforderungen entspricht. Sie müssen EC2 NAT AMI verwenden, um ElastiCache von außen darauf zugreifen zu können AWS.

    Informationen zum Erstellen einer NAT-Instance finden Sie unter NAT-Instances im AWS VPC-Benutzerhandbuch.

  2. Erstellen Sie Sicherheitsgruppenregeln für den Cache-Cluster und die NAT-Instance.

    Die Sicherheitsgruppe der NAT-Instance und die Cluster-Instance sollten folgende Regeln besitzen:

    • Zwei Regeln für eingehenden Datenverkehr

      • Bei Memcached besteht die erste Regel darin, TCP-Verbindungen von vertrauenswürdigen Clients zu jedem Cache-Port zuzulassen, der von der NAT-Instance weitergeleitet wird (11211 — 11213).

      • Bei Valkey und Redis OSS besteht die erste Regel darin, TCP-Verbindungen von vertrauenswürdigen Clients zu jedem Cache-Port zuzulassen, der von der NAT-Instanz weitergeleitet wird (6379 — 6381).

      • Eine zweite Regel ermöglicht den SSH-Zugriff auf vertrauenswürdige Clients.

      Sicherheitsgruppe für NAT-Instanzen — Regeln für eingehenden Datenverkehr mit Memcached
      Typ Protocol (Protokoll) Port-Bereich Quelle
      Zielbereich TCP 11211 –11213 198.51.100.27/32
      SSH TCP 22 198.51.100.27/32
      NAT-Instanz-Sicherheitsgruppe — Regeln für eingehenden Datenverkehr mit Valkey oder Redis OSS
      Typ Protocol (Protokoll) Port-Bereich Quelle
      Zielbereich TCP 6379-6380 198.51.100.27/32
      SSH TCP 22 203.0.113.73/32
    • Bei Memcached handelt es sich um eine ausgehende Regel, die TCP-Verbindungen zum Cache-Port (11211) zulässt.

      Sicherheitsgruppe der NAT-Instance – Regeln für ausgehenden Datenverkehr
      Typ Protocol (Protokoll) Port-Bereich Bestimmungsort
      Zielbereich TCP 11211 sg-ce56b7a9 (Sicherheitsgruppe der Cluster-Instance)
    • Bei Valkey oder Redis OSS handelt es sich um eine ausgehende Regel, die TCP-Verbindungen zum Cache-Port (6379) zulässt.

      Sicherheitsgruppe der NAT-Instance – Regeln für ausgehenden Datenverkehr
      Typ Protocol (Protokoll) Port-Bereich Bestimmungsort
      Zielbereich TCP 6379 sg-ce56b7a9 (Sicherheitsgruppe der Cluster-Instance)
    • Mit Memcached, einer eingehenden Regel für die Sicherheitsgruppe des Clusters, die TCP-Verbindungen von der NAT-Instance zum Cache-Port (11211) ermöglicht.

      Sicherheitsgruppe der Cluster-Instance – Regel für eingehenden Datenverkehr
      Typ Protocol (Protokoll) Port-Bereich Quelle
      Zielbereich TCP 11211 sg-bd56b7da (NAT-Sicherheitsgruppe)
    • Mit Valkey oder Redis OSS, einer eingehenden Regel für die Sicherheitsgruppe des Clusters, die TCP-Verbindungen von der NAT-Instance zum Cache-Port zulässt (6379).

      Sicherheitsgruppe der Cluster-Instance – Regel für eingehenden Datenverkehr
      Typ Protocol (Protokoll) Port-Bereich Quelle
      Zielbereich TCP 6379 sg-bd56b7da (Cluster-Sicherheitsgruppe)
  3. Validieren Sie die Regeln.

    • Bestätigen Sie, dass der vertrauenswürdige Client eine SSH-Verbindung mit der NAT-Instance herstellen kann.

    • Bestätigen Sie, dass der vertrauenswürdige Client eine Verbindung mit dem Cluster über die NAT-Instance herstellen kann.

  4. Memcached

    Fügen Sie der NAT-Instance eine iptables-Regel hinzu.

    Eine iptables-Regel muss der NAT-Tabelle für jeden Knoten im Cluster hinzugefügt werden, um den Cache-Port von der NAT-Instance an den Cluster-Knoten weiterzuleiten. Ein Beispiel könnte folgendermaßen aussehen:

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

    Die Portnummer muss für jeden Knoten im Cluster eindeutig sein. Wenn Sie z. B. mit einem aus drei Knoten bestehenden Memcached-Cluster unter Verwendung der Ports 11211 – 11213 arbeiten, sehen die Regeln wie folgt aus:

    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

    Bestätigen Sie, dass der vertrauenswürdige Client eine Verbindung mit dem Cluster herstellen kann.

    Der vertrauenswürdige Client sollte eine Verbindung mit dem EIP herstellen, der der NAT-Instance zugewiesen ist, und dem Cluster-Port, der dem entsprechenden Cluster-Knoten entspricht. Die Verbindungszeichenfolge für PHP sieht beispielsweise wie folgt aus:

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

    Zum Überprüfen der Verbindung kann auch ein Telnet-Client verwendet werden. Zum Beispiel:

    telnet 203.0.113.73 11211 telnet 203.0.113.73 11212 telnet 203.0.113.73 11213

    Valkey oder Redis OSS

    Fügen Sie der NAT-Instance eine iptables-Regel hinzu.

    Eine iptables-Regel muss der NAT-Tabelle für jeden Knoten im Cluster hinzugefügt werden, um den Cache-Port von der NAT-Instance an den Cluster-Knoten weiterzuleiten. Ein Beispiel könnte folgendermaßen aussehen:

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

    Die Portnummer muss für jeden Knoten im Cluster eindeutig sein. Wenn Sie beispielsweise mit einem Redis-OSS-Cluster mit drei Knoten arbeiten und die Ports 6379 — 6381 verwenden, würden die Regeln wie folgt aussehen:

    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

    Bestätigen Sie, dass der vertrauenswürdige Client eine Verbindung mit dem Cluster herstellen kann.

    Der vertrauenswürdige Client sollte eine Verbindung mit dem EIP herstellen, der der NAT-Instance zugewiesen ist, und dem Cluster-Port, der dem entsprechenden Cluster-Knoten entspricht. Die Verbindungszeichenfolge für PHP sieht beispielsweise wie folgt aus:

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

    Zum Überprüfen der Verbindung kann auch ein Telnet-Client verwendet werden. Zum Beispiel:

    telnet 203.0.113.73 6379 telnet 203.0.113.73 6380 telnet 203.0.113.73 6381
  5. Speichern Sie die iptables-Konfiguration.

    Speichern Sie die Regeln, nachdem Sie sie getestet und überprüft haben. Wenn Sie eine Redhat-Linux-Verteilung (wie Amazon Linux) verwenden, führen Sie den folgenden Befehl aus:

    service iptables save

Verwandte Themen

Die folgenden Themen können von zusätzlichem Interesse sein.