AWS : So garantieren Sie die Verfügbarkeit von statischer privater IP beim Bootstrapping
Ich starte den EMR-Cluster und weise dem Master-Knoten beim Bootstrapping eine private IP-Adresse zu. Dies wird also verknüpft, wenn der Cluster gestartet wird, und wird freigegeben, wenn der Cluster beendet wird. Wie garantiere ich, dass diese IP für meinen Cluster immer verfügbar ist und kein anderer Prozess sie abnimmt, auch wenn sie nicht verwendet wird.
Sobald ich diese IP erhalten habe, sende ich meine Spark-Gläser an den Port 8998 dieser IP, indem ich die Apache livy REST API verwende
Mein Anwendungsfall besteht also darin, die IP auf dem Master-Knoten bereitzustellen, damit LIVY-APIs Jobs an EMR senden können.
Es ist nicht möglich, eine bestimmte private IP-Adresse für den Cluster anzufordern.
Stattdessen würde ich vorschlagen:
- Erstellen Sie eine private gehostete Route 53-Zone mit einem Datensatz für den Cluster (z. B.
cluster.private
) - Aktualisieren Sie nach dem Starten des EMR-Clusters den Datensatz für die IP-Adresse des Master-Knotens
- Lassen Sie Apache Livy den Cluster anhand des DNS-Namens statt der IP-Adresse referenzieren
Das Aktualisieren des Datensatzes kann programmgesteuert erfolgen. Ein Skript würde etwa Folgendes tun:
- Forderung
list_clusters()
- Rufen Sie für jeden Cluster auf
describe_cluster()
- Suchen Sie nach einem Tag (zB
DNS=cluster.private
) - Wenn das
DNS
Tag vorhanden ist:- Aktualisieren Sie den benannten Datensatz in Route 53, um einen A-Datensatz zu verwenden, um auf die IP-Adresse des Master-Knotens zu verweisen
Dieses Skript müsste nach dem Start des Clusters ausgelöst werden.