Hinweis:

Mit der OCI Events-Serviceregel regionsübergreifende DNS-Datensätze für eine private Zone mit OCI Functions aktualisieren

Einführung

In diesem Tutorial erfahren Sie, wie Sie Domain Name System-(DNS-)Datensätze für Compute-Instanzen in einer privaten Zone in beiden Regionen automatisch aktualisieren, wenn eine neue Compute-Instanz erstellt wird oder wenn sie während eines Switchover-Szenarios in einem Oracle Cloud Infrastructure Full Stack Disaster Recovery-(OCI Full Stack DR-)Plan verschoben wird. Dieses Tutorial behandelt zwei spezifische OCI-Services.

Dieser Anwendungsfall war ursprünglich für die Verwendung während eines OCI Full Stack DR-Switchover-Plans vorgesehen, bei dem Instanzen zwischen Regionen verschoben werden. Im Wesentlichen umfasst der Disaster Recovery-(DR-)Switchover-Prozess das Erstellen einer neuen Instanz in der neuen Region und das Beenden der Instanz in der vorherigen Region. Basierend auf diesem Szenario konzentriert sich dieses Tutorial auf den Ereignistyp Start - Instanzende, der einen OCI Functions auslöst, um die DNS-Datensätze für private Zonen in beiden Regionen zu aktualisieren.

Diese Lösung kann auch als Standardautomatisierung für private OCI-DNS-Zonen dienen. Es wird ein DNS-Datensatz für jede neue Instanz erstellt, die im ausgewählten Compartment erstellt wurde, oder für alle anderen Filter, die Sie zur Identifizierung der Zielinstanzen angeben. Weitere Informationen finden Sie unter Services, die Ereignisse erzeugen.

Allgemeine Architektur

T3_1

Hinweis:

Ziele

Voraussetzungen

Aufgabe 1: Dynamische Gruppen einrichten

Gehen Sie zu Ihrer Domain, klicken Sie auf Dynamische Gruppen, und erstellen Sie die folgenden Gruppen.

Dynamischer Gruppenname: MyFunctions.

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

Aufgabe 2: Policys erstellen

Gehen Sie zu Policys, und erstellen Sie die folgenden Policys.

Policy-Name: FunctionsPolicies.

Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage dns-records in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use dns-zones in compartment YOUR-COMPARTMENT-NAME

Aufgabe 3: OCI Container Registry erstellen

  1. Gehen Sie zu Entwicklerservices, klicken Sie auf Containerregistrierung, und erstellen Sie ein privates Repository für das Fn-Image.

    Repository-Name: lab/fnpy-event-dns-update.

    T3_1

  2. Prüfen Sie die Repositorys, und notieren Sie sich den Namespace.

    T3_1

  3. Öffnen Sie die Terminal-Shell, in der OCI-CLI und Docker installiert sind, und melden Sie sich bei der Registry an. Prüfen Sie die korrekte URL für Ihre Region. In diesem Tutorial verwenden wir die Region Brazil East (Sao Paulo), in der die Registry-URL gru.ocir.io lautet.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

Aufgabe 4: Python OCI Functions zum Aktualisieren von DNS in privaten Zonen erstellen

  1. Gehen Sie zur OCI-Konsole, und klicken Sie auf Entwicklerservices. Klicken Sie unter Functions auf Anwendungen und Anwendung erstellen.

    T9_1

  2. Erstellen Sie die Konfiguration für die betroffenen privaten OCI-DNS-Zonen.

    Hinweis: Diese Konfigurationsvariable gibt die zu aktualisierenden OCIDs für private Zonen an. Sie können mehrere OCIDs durch Kommas getrennt auflisten.

    Secret-Name Datum
    TARGET_ZONES_OCID Liste der PRIVATE ZONES-OCIDs durch Komma getrennt festlegen

    In diesem Tutorial werden zwei private Zonen festgelegt: eine für die GRU-Region und eine für die VCP-Region.

    Beispiel :

    ocid1.dns-zone.oc1.sa-saopaulo-1.xxxx
    
    ocid1.dns-zone.oc1.sa-vinhedo-1.xxx
    

    T4_2

  3. Gehen Sie zur Terminalshell, in der Docker, OCI-CLI und Fn-Projekt-CLI installiert sind, und führen Sie die folgenden Befehle aus, um die Funktion zu initialisieren.

    Hinweis: Wenn Sie die Aufgaben ausgeführt haben, wurde Ihr Docker-Anmeldebefehl bereits ausgeführt. Wenn nicht, fahren Sie mit der Docker-Anmeldung in Aufgabe 3.3 fort.

    mkdir lab
    cd lab
    fn create context oci-cloud --provider oracle
    fn use context oci-cloud
    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    fn init --runtime python fnpy-event-dns-update
    cd fnpy-event-dns-update
    ls -lrt
    

    Hinweis: In diesem Tutorial wird die Region Brazil East(Sao Paulo) verwendet. Wenn Sie eine andere Region verwenden, müssen Sie die Speicherorte api-url und registry ändern.

    T4_3

    Mit dem Befehl init wird eine Hallo-Welt-Funktion in func.py erstellt. Dieser Code wird überschrieben.

  4. Rufen Sie den Beispielcode der Python-Funktion von hier ab: fnpy-event-dns-update.zip, dekomprimieren Sie ihn, und überschreiben Sie die Dateien beim Befehl init.

    1. Kopieren Sie die ZIP-Datei in das Übungsverzeichnis, in dem Sie den Befehl fn init ausgeführt haben, und suchen Sie nach den Dateien im Verzeichnis.

      ls -lrt
      
    2. Dekomprimieren Sie die Datei, und überschreiben Sie die vorhandenen Dateien.

      unzip fnpy-event-dns-update.zip
      

    T9_1

  5. Erstellen Sie den neuen Code, und stellen Sie die Funktion bereit.

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

Aufgabe 5: OCI Events Service-Regel erstellen

  1. Gehen Sie zur OCI-Konsole, und klicken Sie auf Observability and Management. Wählen Sie unter Eventservice die Option Regeln aus, und klicken Sie auf Regel erstellen.

  2. Geben Sie folgende Informationen ein.

    • Name: Geben Sie MyAutoDNSRule ein.
    • Regelbedingungen:
      • Bedingung 1:
        • Bedingung: Wählen Sie Event Type aus.
        • Servicename: Wählen Sie Compute aus.
        • Ereignistyp: Wählen Sie Instance - Launch End aus.
      • Bedingung 2:
        • Bedingung: Wählen Sie Attribute aus.
        • Attributname: Wählen Sie compartmentId aus.
        • Attributwerte: Geben Sie die Compartment-OCID ein.
    • Aktionen:
      • Aktionstyp: Wählen Sie Functions aus.
      • Function Compartment: Wählen Sie Ihr Compartment aus.
      • Funktionsanwendung: Wählen Sie MyApp aus.
      • Funktion: Wählen Sie fnpy-event-dns-update aus.

    T5_1

    Hinweis: In diesem Beispiel filtern wir die Instanzen nach compartmentID. Dies bedeutet, dass jede neu gestartete Instanz in diesem Compartment die ausgewählte Funktion auslöst. Je nach Bedarf können Sie verschiedene Filter und Bedingungen angeben.

Aufgabe 6: Lösung validieren

In diesem Tutorial haben wir private DNS-Zonen sowohl in den GRU- als auch in den VCP-Regionen eingerichtet und die OCIDs für jede private DNS-Zone dokumentiert. Diese OCIDs werden für die Konfiguration der OCI Functions verwendet.

  1. Stellen Sie sicher, dass OCI Functions verfügbar ist, und aktivieren Sie das Logging dafür.

    1. Gehen Sie zur OCI-Konsole, und klicken Sie auf Entwicklerservices. Klicken Sie unter Funktionen auf Anwendungen, und wählen Sie die erstellte Anwendung MyApp aus.

      T6_1

    2. Klicken Sie auf Logs, und wählen Sie Log aktivieren aus.

      T6_1

  2. Prüfen Sie die aktuellen privaten DNS-Zonen. In beiden Regionen wurde eine Domain mit dem Namen UBUNTUAPPS.COM eingerichtet, wie in den folgenden Images dargestellt.

    T6_1

    T6_1

  3. Erstellen Sie eine neue Compute-Instanz, um einen OCI Full Stack DR-Switchover zu simulieren. Dadurch wird das Ereignis Instance Launch - END ausgelöst. Dadurch wird OCI Functions aufgerufen, um die private DNS-Zone in beiden Regionen zu aktualisieren.

    T6_2

    T6_2

  4. Nachdem die Instanz erstellt wurde, prüfen Sie, ob die private DNS-Zone in beiden Regionen ordnungsgemäß aktualisiert wurde.

    T6_3

    T6_3

  5. Prüfen Sie die OCI Functions-Logs, um die Details der ausgeführten Funktion zu prüfen.

    T6_4

Danksagungen

Weitere Lernressourcen

Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.