Berechtigungen für EC2, die durch die Verbindung von Elastic Beanstalk mit externen RDS erstellt wurden

8

Ich bin ziemlich neu in Elastic Beanstalk und nicht sehr kompetent in der Serververwaltung, aber ich muss ein Django-Projekt auf Elastic Beanstalk einrichten, das eine Verbindung zur externen RDS-MySQL-Datenbank herstellt.

Ich habe eine separate RDS-MySQL-Datenbank erstellt und kann sie ohne Probleme mit Sequel Pro auf meinem Computer verbinden. Dann habe ich mein Django-Projekt, das ich auf Elastic Beanstalk setzen möchte, aber leider ohne Glück. Wenn ich den lokalen Django-Server von meinem Computer aus starte, ist das Projekt durchsuchbar und Amazon RDS MySQL ist zugänglich. Wenn ich jedoch

ausführe %Vor%

Ich bekomme

%Vor%

Wenn ich mich über SSH beim EC2-Server anmelde

%Vor%

und überprüfen Sie dann die offenen Ports mit

%Vor%

Ich sehe den Port 3306 von MySQL dort nicht, also denke ich, dass er von der Firewall blockiert wird.

Das habe ich in Bezug auf Berechtigungen versucht:

  1. Ich ging zu RDS Dashboard - & gt; Sicherheitsgruppen und erstellte myapp-mysql-security-group mit dem Verbindungstyp EC2 Security Group, der auf die EC2-Sicherheitsgruppe verweist, die von der Elastic Beanstalk EC2-Instanz "awseb-e -..." verwendet wird.
  2. Ich ging zu EC2 - & gt; Sicherheitsgruppen und für "awseb-e -..." habe ich den Inbound-MySQL-Port mit der Quelle 0.0.0.0/0
  3. eingestellt
  4. Ich ging zu VPC Dashboard - & gt; Sicherheitsgruppen und erstellt myapp-mysql-security-group mit Eingehende Regeln von MySQL-Port mit der Quelle 0.0.0.0/0.

Dann habe ich versucht, Server neu zu implementieren, neu zu starten und sogar die Umgebung neu zu erstellen, aber nichts half. Der MySQL-Port 3306 ist in den EC2-Instanzen, die von Elastic Beanstalk erstellt wurden, immer noch nicht geöffnet.

Was mache ich falsch oder was fehlt?

    
Aidas Bendoraitis 16.11.2015, 11:38
quelle

1 Antwort

7

Der MySQL-Port 3306 wird nur bei der RDS-Instanz (nicht in Ihrer EC2-Instanz) geöffnet. Wenn Sie also Ihre EC2-Instanz überprüfen, sollte sie den Port 3306 nicht abhören.

Dinge, die Sie tun können, um RDS zu überprüfen funktioniert:

  • Überprüfen Sie Ihre EC2-Instance-Verbindung zu RDS.
    • SSH an Ihre Instanz ( eb ssh ) und führen Sie telnet myapp-staging.xxx.eu-west-1.rds.amazonaws.com 3306 aus. Möglicherweise müssen Sie telnet first ( yum install telnet ).
    • installieren
    • Wenn es erfolgreich ist, überprüfen Sie Ihre App.
    • Wenn es fehlschlägt, überprüfen Sie den nächsten Punkt.
  • Vergewissern Sie sich, dass Ihre RDS- und EC2-Platzierung korrekt ist:
    • Für private greifen Sie nur auf RDS zu:
      • Stellen Sie sicher, dass sie sich in derselben VPC befinden, und erlauben Sie eine eingehende Verbindung in RDS von der VPC-IP bis 3306. Verwenden Sie für eine bessere Leistung die IP-Adresse anstelle des Namens der Sicherheitsgruppe.
      • Wenn sie sich auf einer anderen VPC befinden, können Sie VPC Peering erstellen.
    • Für öffentlichen Zugriff auf RDS:
      • Wie oben, erlauben Sie eine eingehende Verbindung von der IP-Adresse von VPC.
  • Stellen Sie sicher, dass EC2-Instanzen eine ausgehende Verbindung zu Port 3306 in der EC2-Sicherheitsgruppe herstellen können.
  • Stellen Sie sicher, dass Ihr EC2-Host die 3306-Regel in iptables nicht abgelehnt hat.
  • Wenn Ihr EC2 und RDS in verschiedenen VPCs und Sie private IP für Ihr EC2 verwenden, überprüfen Sie den NAT-Server. Stellen Sie sicher, dass der Port 3306 gekündigt werden darf.
Edward Samuel 20.11.2015, 14:23
quelle