ORACLE LOAD BALANCER → STACKIT ALB UND NLB · TUTORIAL

OCI Load Balancer und Network Load Balancer zu STACKIT

Ein OCI Load Balancer wird ein STACKIT Application Load Balancer, ein OCI Network Load Balancer wird ein STACKIT Network Load Balancer. StackToIT bewertet die beiden Load Balancer selbst; Listener, Backend Sets, Backends und Zertifikate bleiben als manuelle Arbeit bei Ihnen. Diese Anleitung bewertet eine Demo-Umgebung mit 12 Ressourcen und liest jede Antwort des Laufs, auch die offenen Stellen.

Schritt 1: Demo-Umgebung und Befehl

Eine für diese Anleitung geschriebene Demo-Umgebung: ein VCN mit öffentlichem und privatem Subnetz, ein Server, ein HTTPS-Load-Balancer mit Zertifikat, Backend Set, Backend und Listener sowie ein Network Load Balancer für einen TLS-gesicherten MQTT-Port. Bewertet am 4. November 2026 mit dem Befehl rechts, ausgeführt im Eingabeordner der Demo, offline und ohne Validierung der Quelle, weil kein Provider-Mirror vorlag. Links das Netzwerk, in dem die beiden Load Balancer liegen, wie es in main.tf steht; den Load-Balancer-Block selbst zeigt Schritt 2.

Beispieleingabemain.tf
resource "oci_core_vcn" "edge" {
  compartment_id = var.compartment_id
  cidr_blocks    = ["10.30.0.0/16"]
  display_name   = "edge"
}

resource "oci_core_subnet" "public" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.edge.id
  cidr_block     = "10.30.1.0/24"
  display_name   = "public"
}

resource "oci_core_subnet" "app" {
  compartment_id             = var.compartment_id
  vcn_id                     = oci_core_vcn.edge.id
  cidr_block                 = "10.30.2.0/24"
  display_name               = "app"
  prohibit_public_ip_on_vnic = true
}
Befehl und Dateien zum Öffnenterminal
# im Eingabeordner der Demo ausgeführt; der Ausgabeordner liegt daneben
stacktoit assess . ../out --offline --no-validate

# danach in dieser Reihenfolge öffnen
../out/index.html
../out/engineering/architect-report.md
../out/migration/technical-sequencing.md
../out/execution/manual/actions.md
  • Keine Verbindung zu Oracle Cloud

    StackToIT liest das Terraform. Es baut keine Verbindung zu Ihrer Tenancy auf; daher braucht der Lauf nur die .tf-Dateien der Umgebung.

  • Provider zuerst festschreiben

    Der Lauf warnt, dass der oci-Provider nicht durch einen Eintrag in der Lock-Datei festgelegt ist, und begrenzt die Einheiten bis dahin auf mittlere Konfidenz. Committen Sie .terraform.lock.hcl mit dem Root-Modul, bevor Sie den echten Lauf starten.

Schritt 2: Der Load Balancer selbst wird bewertet

Der Load Balancer mit flexibler Shape ist die eine Einheit der HTTPS-Seite mit katalogisiertem Ziel. Links die Eingabe, rechts die Entscheidung, wie sie in assessment.json steht. Da assessment.json in einer einzigen Zeile geschrieben ist, zeigt der Ausschnitt ausgewählte Felder jeder Einheit, eingerückt und so verschachtelt wie in der Datei, mit unveränderten Werten.

Beispieleingabemain.tf
resource "oci_load_balancer_load_balancer" "web" {
  compartment_id = var.compartment_id
  display_name   = "web"
  shape          = "flexible"
  subnet_ids     = [oci_core_subnet.public.id]

  shape_details {
    minimum_bandwidth_in_mbps = 10
    maximum_bandwidth_in_mbps = 100
  }
}
StackToIT-Bewertungassessment.json
{
  "id": "oci_load_balancer_load_balancer.web",
  "result": {
    "class": "RECONFIGURE",
    "confidence": "LOW",
    "target": {
      "service": "STACKIT Application Load Balancer"
    },
    "reason": "A load balancer becomes a STACKIT Application Load Balancer. Listeners, backends and certificates are rewritten, and the public address changes."
  }
}
  • Klasse und Ziel

    RECONFIGURE, Ziel ist der STACKIT Application Load Balancer. Die Begründung nennt, was sich ändert: Listener, Backends und Zertifikate werden neu geschrieben, und die öffentliche Adresse wechselt.

  • Warum die Konfidenz niedrig ist

    Der Architektenbericht nennt vier verknüpfte Ressourcen, die nicht katalogisiert sind (Backend, Backend Set, Zertifikat und Listener), und hält fest, dass ihre Wirkung auf die Migration nicht bewertet ist. In der Umgebung der Fallstudie, die keine Listener und Backend Sets hat, ist derselbe Block MEDIUM; in diesem Lauf bleibt auch der Network Load Balancer mit zwei solchen verknüpften Ressourcen MEDIUM. Lesen Sie LOW so: Auf der HTTPS-Seite ist am meisten offen.

  • Die Bandbreitenspanne

    Die Eingabe setzt 10 bis 100 Mbit/s als flexible Shape. Der Bericht zählt die Shape-Einstellungen zu den Einstellungen, die bei Ihnen liegen; die Konzeptseite des STACKIT ALB beschreibt keine Bandbreitenspanne. Klären Sie die Dimensionierung mit STACKIT, statt die Zahlen zu übernehmen.

Schritt 3: Zertifikat, Backend Set und Listener bleiben bei Ihnen

Die Ressourcen, die einen OCI Load Balancer erst nutzbar machen, stehen nicht im Katalog dieses Builds: Zertifikat, Backend Set, Backend und Listener (Zeilen 92 bis 130 in main.tf). Jede ist eine MANUAL_REVIEW-Einheit ohne Ziel; der Auszug rechts zeigt drei davon. Backend Set und Listener des NLB verhalten sich genauso. Da assessment.json in einer einzigen Zeile geschrieben ist, zeigt der Ausschnitt ausgewählte Felder jeder Einheit, eingerückt und so verschachtelt wie in der Datei, mit unveränderten Werten.

Beispieleingabemain.tf
resource "oci_load_balancer_certificate" "web" {
  load_balancer_id   = oci_load_balancer_load_balancer.web.id
  certificate_name   = "web-cert"
  public_certificate = var.tls_certificate
  private_key        = var.tls_private_key
}

resource "oci_load_balancer_backend_set" "web" {
  load_balancer_id = oci_load_balancer_load_balancer.web.id
  name             = "web-backends"
  policy           = "LEAST_CONNECTIONS"

  health_checker {
    protocol    = "HTTP"
    port        = 8080
    url_path    = "/healthz"
    return_code = 200
  }
}

resource "oci_load_balancer_backend" "web1" {
  load_balancer_id = oci_load_balancer_load_balancer.web.id
  backendset_name  = oci_load_balancer_backend_set.web.name
  ip_address       = "10.30.2.11"
  port             = 8080
}

resource "oci_load_balancer_listener" "https" {
  load_balancer_id         = oci_load_balancer_load_balancer.web.id
  name                     = "https"
  default_backend_set_name = oci_load_balancer_backend_set.web.name
  port                     = 443
  protocol                 = "HTTP"

  ssl_configuration {
    certificate_name        = oci_load_balancer_certificate.web.certificate_name
    verify_peer_certificate = false
  }
}
StackToIT-Bewertungassessment.json
[
  {
    "id": "oci_load_balancer_certificate.web",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "oci_load_balancer_certificate is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
    }
  },
  {
    "id": "oci_load_balancer_backend_set.web",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "oci_load_balancer_backend_set is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
    }
  },
  {
    "id": "oci_load_balancer_listener.https",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "oci_load_balancer_listener is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
    }
  }
]
  • Sechs Einheiten, kein Ziel

    Von den 12 Einheiten sind 6 MANUAL_REVIEW: Zertifikat, Backend Set, Backend und Listener des HTTPS-Load-Balancers sowie Backend Set und Listener des Network Load Balancers. Aus jeder wird ein manueller Schritt in execution/manual/actions.md.

  • Was das STACKIT-Modell verlangt

    Am ALB spricht ein Listener HTTP oder HTTPS, ein HTTPS-Listener verweist per ID auf ein über die STACKIT Certificate API gespeichertes Zertifikat, und Ziele liegen per IP-Adresse in Target Pools, wobei der Port am Pool steht. Diese Objekte legen Sie von Hand anhand der OCI-Einstellungen oben an.

  • TLS-Offloading oder Bridging

    Der OCI-Listener terminiert TLS. Der ALB kann das ebenso und leitet dann unverschlüsseltes HTTP weiter, oder er nutzt TLS-Bridging und verschlüsselt zu den Zielen neu, auf Wunsch mit eigener CA. Das entscheiden Sie je Anwendung; der Lauf kann es nicht.

Schritt 4: Der Network Load Balancer

Der MQTT-Port ist ein reiner Layer-4-Dienst. Die Load-Balancer-Einheit ist zugeordnet; Backend Set und Listener sind wieder manuell. Da assessment.json in einer einzigen Zeile geschrieben ist, zeigt der Ausschnitt ausgewählte Felder jeder Einheit, eingerückt und so verschachtelt wie in der Datei, mit unveränderten Werten.

Beispieleingabemain.tf
resource "oci_network_load_balancer_network_load_balancer" "mqtt" {
  compartment_id = var.compartment_id
  display_name   = "mqtt"
  subnet_id      = oci_core_subnet.public.id
  is_private     = false
}

resource "oci_network_load_balancer_backend_set" "mqtt" {
  name                     = "mqtt-backends"
  network_load_balancer_id = oci_network_load_balancer_network_load_balancer.mqtt.id
  policy                   = "FIVE_TUPLE"
  is_preserve_source       = true

  health_checker {
    protocol = "TCP"
    port     = 8883
  }
}

resource "oci_network_load_balancer_listener" "mqtt" {
  name                     = "mqtt-tls"
  network_load_balancer_id = oci_network_load_balancer_network_load_balancer.mqtt.id
  default_backend_set_name = oci_network_load_balancer_backend_set.mqtt.name
  port                     = 8883
  protocol                 = "TCP"
}
StackToIT-Bewertungassessment.json
[
  {
    "id": "oci_network_load_balancer_network_load_balancer.mqtt",
    "result": {
      "class": "RECONFIGURE",
      "confidence": "MEDIUM",
      "target": {
        "service": "STACKIT Network Load Balancer"
      },
      "reason": "A network load balancer becomes a STACKIT Network Load Balancer. Listeners and backends are rewritten, and the public address changes."
    }
  },
  {
    "id": "oci_network_load_balancer_listener.mqtt",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "oci_network_load_balancer_listener is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
    }
  }
]
  • Pass-Through bleibt Pass-Through

    Der OCI Network Load Balancer arbeitet als Pass-Through und erhält die Quelladresse des Clients. Der STACKIT NLB führt TCP- und UDP-Balancing, TCP-Proxy und TLS-Passthrough auf; seine Funktionsseite nennt den Erhalt der Quelladresse nicht als eigene Funktion. Testen Sie vor dem Cutover, welche Client-Adresse Ihr Broker sieht.

  • Öffentlich oder privat

    Die Eingabe ist öffentlich (is_private = false). Die NLB-Funktionsseite nennt den Betrieb im privaten Netzwerk und eine ephemere IP; klären Sie mit STACKIT, wie die öffentliche Adresse angebunden wird, bevor Sie die DNS-Umstellung planen.

Was aus jeder OCI-Einstellung wird

Die Einstellungen der Demo-Umgebung, gelesen gegen die in den Quellen genannte STACKIT-Dokumentation. Zeilen mit „prüfen“ löst der Lauf nicht.

OCI-Einstellung in der UmgebungAuf STACKITWer entscheidet
policy = LEAST_CONNECTIONS am Backend SetDie Konzeptseite des ALB nennt den Maglev-Algorithmus für die Verteilung; ein Policy-Feld ist dort nicht beschrieben. Wirkung auf langlebige Anfragen prüfen.Anwendungsverantwortliche
health_checker HTTP, Port 8080, /healthz, 200HTTP-Health-Check mit Pfad und akzeptierten Statuscodes. Standard: Intervall 5 Sekunden, als ausgefallen nach 3 fehlgeschlagenen, wieder verfügbar nach 3 erfolgreichen Prüfungen.Plattformarchitekt
Zertifikat mit öffentlichem Zertifikat und privatem SchlüsselEin gültiges X.509-Zertifikat, über die Certificate API gespeichert und per ID referenziert. Den Schlüssel aus Ihrem Secret-Store nehmen, nicht aus dem Terraform-State.Security-Verantwortliche
Listener HTTP auf 443 mit ssl_configurationHTTPS-Listener mit TLS-Offloading, optional TLS-Bridging am Target Pool.Netzwerkarchitekt
Backend 10.30.2.11:8080Ein Ziel per IP-Adresse in einem Target Pool; mindestens ein Ziel, erreichbar über ein STACKIT-Netzwerk.Plattformarchitekt
NLB is_preserve_source = true, FIVE_TUPLEAuf der NLB-Funktionsseite nicht als solche beschrieben. Verhalten der Quelladresse mit einem Testclient prüfen.Netzwerkarchitekt
NLB-Health-Check TCP auf 8883, TCP-Listener auf 8883Einfacher aktiver TCP-Check und TCP-Listener; TLS-Passthrough ist aufgeführt.Netzwerkarchitekt
Öffentlicher NLB (is_private = false)Betrieb im privaten Netzwerk und ephemere IP sind aufgeführt; die öffentliche Anbindung bestätigen lassen.Netzwerkarchitekt

Die Zeilen stammen aus den geöffneten STACKIT-Seiten und der Ausgabe des Laufs; wo eine Seite schweigt, steht „prüfen“.

Die Reihenfolge des Umzugs

Der Lauf ordnet die 12 Einheiten aus ihren Abhängigkeiten in fünf Wellen. Einheiten einer Welle können parallel umziehen; die Load-Balancer-Teile kommen zuletzt, weil sie von den Load Balancern abhängen und diese von den Netzwerken.

  1. Welle 1

    Das VCN. Es wird zum Netzwerklayout und, wo Routing zwischen Netzwerken nötig ist, zu einer Network Area.

  2. Welle 2

    Das öffentliche und das private Subnetz, jedes ein STACKIT-Netzwerk mit eigenem Adressbereich.

  3. Welle 3

    Der Server, der Application Load Balancer und der Network Load Balancer.

  4. Welle 4

    Die beiden Backend Sets und das Zertifikat, alle manuell.

  5. Welle 5

    Das Backend und die beiden Listener, alle manuell. Der Listener kommt zuletzt, weil er vom Backend Set und vom Zertifikat abhängt.

Was Sie ändern, bevor Sie etwas anwenden

  • Neue öffentliche Adresse einplanen

    Beide Begründungen im Lauf sagen, dass die öffentliche Adresse wechselt. Senken Sie die DNS-TTL vor dem Cutover und erfassen Sie jeden Eintrag, jede Freigabeliste und jede Partner-Firewall, die die alte Adresse nennt.

  • Die Regionsanfrage beantworten

    Der Lauf öffnet eine Anfrage, die den Entwurf blockiert: die Zielregion, eu01 oder eu02. Beantworten Sie sie in review/inputs.yaml und wiederholen Sie den Lauf.

  • Regeln neu schreiben, nicht nur Objekte

    Backend Sets, Listener und Zertifikate entstehen neu aus den OCI-Einstellungen der Tabelle oben. Legen Sie diese Tabelle dem Change-Record bei.

  • Mit einer Kopie echten Verkehrs testen

    Health-Check-Pfade, Header-Behandlung (der ALB setzt X-Forwarded-For und X-Forwarded-Proto selbst) und lange Verbindungen sind Anwendungsverhalten. Proben Sie sie vor dem Fenster an einem Test-Load-Balancer.

  • Die OCI Load Balancer bis zum Ende des Rollback-Fensters behalten

    Den DNS-Eintrag auf die alte Adresse zurückzusetzen ist der einfachste Rollback. Löschen Sie die OCI-Seite erst nach der vereinbarten Haltefrist (allgemeine Praxis, keine Ausgabe des Laufs).

Fragen aus Netzwerkteams

Schreibt StackToIT Terraform für die STACKIT-Load-Balancer?

Nein. Für eine Oracle-Cloud-Quelle schreibt dieser Build nur die Provider- und Variablendateien in terraform/. Alle 12 Einheiten dieses Laufs sind manuelle Schritte, was der Lauf selbst ausweist: 0 Einheiten erzeugt, 12 für Ihre Architekten offen.

Warum sind Listener und Backend Sets als MANUAL_REVIEW eingestuft?

Sie stehen nicht im Katalog dieses Builds, daher wird kein Ziel vorgeschlagen und nichts bewertet. Der Bericht führt sie als mit dem Load Balancer verknüpft und hält fest, dass ihre Wirkung auf die Migration nicht bewertet ist; der Application Load Balancer steht in diesem Lauf auf LOW.

Können wir dieselbe IP-Adresse behalten?

Dem Lauf nach nicht: Die Begründung beider Load Balancer sagt, dass die öffentliche Adresse wechselt. Planen Sie die DNS-Umstellung und jeden Nutzer der alten Adresse ein.

Welchen Load Balancer brauchen wir für unseren Dienst?

HTTP- und HTTPS-Routing nach Host, Pfad oder Headern spricht für den ALB; reines TCP oder UDP und TLS-Passthrough für den NLB. Die STACKIT-Dokumentation trennt beide nach Schicht 7 und Schicht 4.

Quellen

Ihr nächster Schritt: STACKIT.

Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.