Zugriff auf Ihren Cluster oder die Replikationsgruppe - Amazon ElastiCache (Redis OSS)

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.

Zugriff auf Ihren Cluster oder die Replikationsgruppe

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

Wenn Sie Ihre ElastiCache Instance in einer Amazon Virtual Private Cloud (Amazon VPC) gestartet haben, können Sie von einer Amazon ElastiCache EC2-Instance in derselben Amazon VPC aus auf Ihre 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 Amazon EC2-Sicherheitsgruppe, die mit der Instance verknüpft ist, 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 EC2-VPC gestartet

Wenn Sie Ihren Cluster in einer Amazon Virtual Private Cloud (Amazon VPC) gestartet haben, können Sie nur von einer Amazon EC2-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 Amazon EC2 EC2-Konsole an AWS Management Console und öffnen Sie sie 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 Bearbeiten 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 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 Amazon EC2 EC2-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 Amazon-EC2-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 empfehlen wir, eine VPC-Sicherheitsgruppe zu erstellen, die ausschließlich von ElastiCache verwendet wird. Weitere Informationen finden Sie unter Benutzerdefinierte Sicherheitsgruppen.

    6. Wählen Sie Speichern.

Wenn Sie eine Amazon EC2 EC2-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

Die folgenden Überlegungen sollten Sie berücksichtigen, wenn Sie von außen auf Ihre ElastiCache Ressourcen zugreifen ElastiCache.

  • 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 Redis-Cluster erfolgt mit:

    • IP-Adresse – 10.0.1.230

    • Redis-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 AWS darauf zugreifen zu können.

    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

      • Eine Regel, mit der TCP-Verbindungen von vertrauenswürdigen Clients mit jedem Cache-Port zulässig sind, der von der NAT-Instance weitergeleitet wird (6379 – 6381).

      • Eine zweite Regel, die SSH-Zugriff auf vertrauenswürdige Clients zulässt.

      Sicherheitsgruppe der NAT-Instance – Regeln für eingehenden Datenverkehr
      Typ Protocol (Protokoll) Port-Bereich Quelle
      Zielbereich TCP 6379-6380 198.51.100.27/32
      SSH TCP 22 203.0.113.73/32
    • Eine Regel für ausgehenden Datenverkehr, der TCP-Verbindungen mit jedem Cache-Port zulässt (6379).

      Sicherheitsgruppe der NAT-Instance – Regeln für ausgehenden Datenverkehr
      Typ Protocol (Protokoll) Port-Bereich Bestimmungsort
      Zielbereich TCP 6379 sg-ce56b7a9 (Sicherheitsgruppe der Cluster-Instance)
    • Eine Regel für eingehenden Datenverkehr für die Sicherheitsgruppe des Clusters, die TCP-Verbindungen von der NAT-Instance mit dem 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. 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 z. B. mit einem aus drei Knoten bestehenden Redis-Cluster unter Verwendung der Ports 6379 – 6381 arbeiten, sehen die Regeln wie folgt aus:

    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. 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. Beispielsweise:

    telnet 203.0.113.73 6379 telnet 203.0.113.73 6380 telnet 203.0.113.73 6381
  6. 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.