HUAWEI CLOUD ELB → STACKIT · TUTORIAL
Huawei Cloud ELB zu STACKIT Load Balancing: ein praktischer Durchlauf
Dieses Tutorial führt eine kleine Huawei-Cloud-Umgebung mit einem Shared und einem Dedicated Load Balancer durch StackToIT und liest, was herauskommt. Der Shared Load Balancer wird als RECONFIGURE auf den STACKIT Network Load Balancer abgebildet. Der Dedicated Load Balancer bleibt als MANUAL_REVIEW bei Ihnen, mit dem Application Load Balancer als Kandidaten. Listener, Pools, Member und Monitore werden in diesem Build gar nicht bewertet, und genau dort liegt die eigentliche Entscheidung: Schicht 4 oder Schicht 7, und wer TLS terminiert. Die Abschnitte zeigen Eingabe, Befehl, Ausgabe und was Sie ändern, bevor Sie etwas bauen.
Schritt 1: Befehl und Variablendatei
Die Demo-Umgebung hat zwölf Ressourcen in einer main.tf: eine VPC, ein Subnetz, eine Security Group, zwei Server, einen Shared Load Balancer mit Listener, Pool, Membern und Monitor sowie einen Dedicated Load Balancer mit Listener und Pool. Der Dedicated Load Balancer liest zwei Flavor-IDs aus Variablen ohne Standardwert. Platzhalterwerte stehen in einer Variablendatei; auch die beiden Zertifikats-IDs der Listener in main.tf sind Platzhalter. Setzen Sie Ihre eigenen IDs ein.
stacktoit assess ./edge-terraform --var-file ./demo.tfvarsl4_flavor_id = "l4-flavor-placeholder"
l7_flavor_id = "l7-flavor-placeholder"Keine Verbindung zu Huawei Cloud
StackToIT liest das Terraform und die Variablendatei. Es öffnet kein Huawei-Cloud-Konto.
Der Ausgabeordner
assessment.json, engineering/architect-report.md, migration/technical-sequencing.md, execution/manual/actions.md und index.html sind die Dateien, die Sie als Nächstes lesen.
Schritt 2: Was eine fehlende Variable bewirkt
Dieselbe Umgebung, einmal ohne und einmal mit der Variablendatei ausgeführt. Links drei Zusammenfassungszeilen aus der Konsolenausgabe des ersten Laufs, rechts dieselben drei Zeilen des zweiten. Jede Zeile ist so kopiert, wie sie ausgegeben wurde.
Source 12 resources · 12 units · visibility: Required input missing
Migration 0 drafted · 9 manual · 3 have no draft because an input the source needs is not in the package (of 12 units: 9 the draft considered, 3 have no draft)
Attention 2 variables without a value (var.l4_flavor_id, var.l7_flavor_id) · 7 open requests (3 block the draft, marked in inputs-template.yaml)Source 12 resources · 12 units · visibility: Complete
Migration 0 drafted · 12 manual (of 12 units the draft considered)
Attention 5 open requests (1 block the draft, marked in inputs-template.yaml)Drei Einheiten ohne Entwurf
Ohne Werte für l4_flavor_id und l7_flavor_id haben der Dedicated Load Balancer und die zwei Einheiten, die von ihm abhängen, keinen Entwurf, weil eine Eingabe, die die Quelle braucht, im Paket fehlt, und sie erhalten keine Welle.
In beiden Fällen zwölf Einheiten
Zahl der Einheiten und Klassen ändern sich nicht. Die Variablen bestimmen, wie vollständig das Bild ist und welche Einheiten in Wellen eingeordnet werden können.
Schritt 3: Der Shared Load Balancer
Links die drei Blöcke der Eingabe, die den öffentlichen Web-Eingang bilden (die Member und der Monitor stehen in derselben Datei). Rechts das Ergebnis, das der Lauf dafür festgehalten hat: ein Auszug aus assessment.json.
resource "huaweicloud_lb_loadbalancer" "web" {
name = "edge-web"
vip_subnet_id = huaweicloud_vpc_subnet.app.ipv4_subnet_id
}
resource "huaweicloud_lb_listener" "https" {
name = "edge-web-https"
protocol = "TERMINATED_HTTPS"
protocol_port = 443
default_tls_container_ref = "web-certificate-id-placeholder"
loadbalancer_id = huaweicloud_lb_loadbalancer.web.id
}
resource "huaweicloud_lb_pool" "web" {
name = "edge-web-pool"
protocol = "HTTP"
lb_method = "ROUND_ROBIN"
listener_id = huaweicloud_lb_listener.https.id
}[
{
"id": "huaweicloud_lb_loadbalancer.web",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT Network Load Balancer"
},
"reason": "A shared load balancer becomes a STACKIT Network Load Balancer. Listeners and backends are rewritten, and the public address changes."
}
},
{
"id": "huaweicloud_lb_listener.https",
"result": {
"class": "MANUAL_REVIEW",
"confidence": "LOW",
"reason": "huaweicloud_lb_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)."
}
},
{
"id": "huaweicloud_lb_pool.web",
"result": {
"class": "MANUAL_REVIEW",
"confidence": "LOW",
"reason": "huaweicloud_lb_pool 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)."
}
}
]Der Balancer wird zugeordnet
Ein Shared Load Balancer wird zu einem STACKIT Network Load Balancer, RECONFIGURE mit Konfidenz MEDIUM. Listener und Backends werden neu geschrieben, und die öffentliche Adresse ändert sich.
Listener und Pool dagegen nicht
huaweicloud_lb_listener, lb_pool, lb_member und lb_monitor stehen nicht im Katalog der Wissensbasis dieses Builds. Jede Einheit ist MANUAL_REVIEW mit Konfidenz LOW; nichts davon wird bewertet oder entworfen.
Der HTTPS-Listener ist das Signal
Port 443 mit HTTPS bedeutet, dass TLS am Balancer endet. Der Network Load Balancer arbeitet nur auf Schicht 4; dieser Listener weist also auf einen Application Load Balancer. Der Lauf sieht das nicht, weil er den Listener nicht liest.
Schritt 4: Der Dedicated Load Balancer
Der Dedicated Balancer im selben Aufbau. Seine Flavor-IDs stammen aus der Variablendatei von Schritt 1.
resource "huaweicloud_elb_loadbalancer" "api" {
name = "edge-api"
vpc_id = huaweicloud_vpc.main.id
ipv4_subnet_id = huaweicloud_vpc_subnet.app.ipv4_subnet_id
l4_flavor_id = var.l4_flavor_id
l7_flavor_id = var.l7_flavor_id
availability_zone = ["eu-west-101a", "eu-west-101b"]
}
resource "huaweicloud_elb_listener" "api" {
name = "edge-api-https"
protocol = "HTTPS"
protocol_port = 8443
server_certificate = "api-certificate-id-placeholder"
loadbalancer_id = huaweicloud_elb_loadbalancer.api.id
}
resource "huaweicloud_elb_pool" "api" {
name = "edge-api-pool"
protocol = "HTTP"
lb_method = "LEAST_CONNECTIONS"
listener_id = huaweicloud_elb_listener.api.id
}[
{
"id": "huaweicloud_elb_loadbalancer.api",
"result": {
"class": "MANUAL_REVIEW",
"confidence": "LOW",
"target": {
"service": "STACKIT Application Load Balancer"
},
"reason": "A dedicated ELB can serve layer 4 and layer 7. Choose a STACKIT Application or Network Load Balancer from its listeners, and rewrite them."
}
},
{
"id": "huaweicloud_elb_listener.api",
"result": {
"class": "MANUAL_REVIEW",
"confidence": "LOW",
"reason": "huaweicloud_elb_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)."
}
},
{
"id": "huaweicloud_elb_pool.api",
"result": {
"class": "MANUAL_REVIEW",
"confidence": "LOW",
"reason": "huaweicloud_elb_pool 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)."
}
}
]Kandidat, keine Entscheidung
Der Lauf nennt den STACKIT Application Load Balancer als Kandidaten und stuft die Einheit als MANUAL_REVIEW ein: Ein Dedicated ELB kann Schicht 4 und Schicht 7 bedienen; die Wahl hängt also von seinen Listenern ab.
Sechs Einstellungen bei Ihnen
Availability Zones, Subnetz, beide Flavors, Name und eine weitere Einstellung sind als kritische Einstellungen aufgeführt, die beim Architekten liegen.
Schritt 5: Die Reihenfolge, die der Lauf vorschlägt
Wellen 3 bis 6 aus migration/technical-sequencing.md, wie geschrieben. Welle 1 enthält VPC und Security Group, Welle 2 das Subnetz.
## Wave 3 — 3 unit(s)
| Unit | Class | Target |
|---|---|---|
| `huaweicloud_compute_instance.app` | RECONFIGURE / MEDIUM | STACKIT Compute Engine |
| `huaweicloud_elb_loadbalancer.api` | MANUAL_REVIEW / LOW | STACKIT Application Load Balancer |
| `huaweicloud_lb_loadbalancer.web` | RECONFIGURE / MEDIUM | STACKIT Network Load Balancer |
## Wave 4 — 2 unit(s)
| Unit | Class | Target |
|---|---|---|
| `huaweicloud_elb_listener.api` | MANUAL_REVIEW / LOW | — |
| `huaweicloud_lb_listener.https` | MANUAL_REVIEW / LOW | — |
## Wave 5 — 2 unit(s)
| Unit | Class | Target |
|---|---|---|
| `huaweicloud_elb_pool.api` | MANUAL_REVIEW / LOW | — |
| `huaweicloud_lb_pool.web` | MANUAL_REVIEW / LOW | — |
## Wave 6 — 2 unit(s)
| Unit | Class | Target |
|---|---|---|
| `huaweicloud_lb_member.web` | MANUAL_REVIEW / LOW | — |
| `huaweicloud_lb_monitor.web` | MANUAL_REVIEW / LOW | — |
## Cutover (decision support — performed by the customer)
No cutover facts: the scan and the draft established no DNS record set whose value the draft re-binds to a generated address, no public address re-binding, no DNS record unit, no certificate unit and no open cutover decision. That is not a statement that nothing has to be cut over: a name, an address or a certificate outside the scanned source is not seen, and a unit that exists only if OpenTofu decides so at plan time is not read here. StackToIT performs no cutover and gives no time estimate.Balancer vor Listenern
Listener folgen den Balancern, Pools folgen den Listenern, Member und Monitore kommen zuletzt. Server und beide Balancer stehen in Welle 3.
Eine Abhängigkeitsfolge
Sie ist ein Ausgangspunkt für Ihren Wellenplan, weder ein Zeitplan noch eine Cutover-Reihenfolge.
Shared, Dedicated, Network und Application Load Balancer
| Aspekt | Huawei Cloud ELB | STACKIT |
|---|---|---|
| Schichten und Protokolle | Shared: Frontend TCP, UDP, HTTP, HTTPS; Backend TCP, UDP, HTTP. Dedicated ergänzt QUIC und TLS im Frontend sowie HTTPS, QUIC, TLS und GRPC im Backend. | Network Load Balancer: Schicht 4, TCP (die Seite nennt auch UDP). Application Load Balancer: Schicht 7, HTTP und HTTPS, WebSocket. |
| TLS | Beide terminieren TLS am Listener: der Shared-Typ mit dem Protokoll TERMINATED_HTTPS und default_tls_container_ref, der Dedicated-Typ mit HTTPS und server_certificate. | Network Load Balancer: keine TLS-Verarbeitung; die Verschlüsselung liegt bei Ihnen. Application Load Balancer: TLS Offloading und TLS Bridging. |
| Routing | Shared: Weiterleitungsregeln nach Domainname und Pfad. Dedicated ergänzt HTTP-Methode, Header, Query-String und CIDR-Block sowie Redirects, Rewrites und feste Antworten. | Application Load Balancer: nach Host, Pfad, Header und Query-Parameter. Network Load Balancer: ein Target Pool je Listener. |
| Health Checks | Beide Typen prüfen Backend-Servergruppen. | Network Load Balancer: aktiv, standardmäßig an, Intervall und Schwellen anpassbar. Application Load Balancer: TCP-Checks überall, erweiterte HTTP-Checks über API und SDK. |
| Algorithmus und Persistenz | Weighted Round Robin, Weighted Least Connections, Source-IP-Hash; Dedicated ergänzt Connection ID. | Network Load Balancer: standardmäßig Round Robin, Source-IP-Persistenz schaltet auf Maglev. Application Load Balancer: Cookie-Persistenz. |
| Öffentliche Adresse | Eine EIP: beim Shared-Typ als eigene Ressource zugeordnet; der Dedicated-Typ verweist auf eine vorhandene EIP oder legt sie mit ihren Bandbreiteneinstellungen selbst an. | Network Load Balancer: eine statische externe IP, die Sie mitbringen, oder eine ephemere. Application Load Balancer: eine ephemere IP oder ein Betrieb ausschließlich im privaten Netzwerk. |
Spalte Huawei Cloud aus der Seite zu den ELB-Typen, Spalte STACKIT aus den Seiten zu Network und Application Load Balancer, alle am 4. November 2026 gelesen. Stand November 2026 führt die Funktionstabelle des Application Load Balancer erweiterte HTTP-Health-Checks nur für API und SDK; Terraform- und Portal-Unterstützung sind in Arbeit. Prüfen Sie daher den aktuellen Stand.
Was Sie ändern, bevor Sie bauen
1. Jeden Listener mit Protokoll und Zertifikat auflisten
Tun Sie das aus der main.tf, denn der Lauf bewertet keine Listener. Notieren Sie Frontend-Protokoll, Port, Backend-Protokoll und die Zertifikatsreferenz (default_tls_container_ref oder server_certificate).
2. Den Balancer-Typ je Listener wählen
Reines TCP-Durchreichen passt zum Network Load Balancer (UDP vorher bestätigen: Die NLB-Seite nennt in der Übersicht Layer-4-TCP, im Abschnitt zu Listenern TCP und UDP), HTTP-Routing oder TLS-Terminierung zum Application Load Balancer. Im Beispiel ist der Shared-Listener TERMINATED_HTTPS auf Port 443 vor einem HTTP-Pool auf Port 8080 mit HTTP-Health-Check: Der Balancer beendet TLS und gehört damit trotz der Zuordnung des Laufs zum Network Load Balancer auf den Application Load Balancer. Der Dedicated-Listener (HTTPS auf 8443, HTTP-Pool) weist in dieselbe Richtung, passend zum Kandidaten des Laufs.
3. Netzwerk und Regeln vorbereiten
Legen Sie die STACKIT-Netzwerke der Wellen 1 und 2 an. Targets im selben STACKIT-Netzwerk erhalten automatisch eine Target Security Group; Targets in einem anderen Netzwerk brauchen sie von Hand, und Targets in einem anderen Projekt müssen in derselben Network Area liegen.
4. Pool und Targets anlegen
Die Dokumentation des Network Load Balancers verlangt für Lastverteilung mindestens zwei Targets. Das Beispiel hat zwei Server, passend zu seinen zwei Membern.
5. Health Checks und Zertifikate neu aufbauen
Der Monitor /healthz im Beispiel ist ein Schicht-7-Check. Entscheiden Sie, ob ein TCP-Check genügt oder der Application Load Balancer nötig ist, und legen Sie das Zertifikat dort ab, wo der Ziel-Balancer es erwartet.
6. Öffentliche Adresse und DNS ändern
Die Adresse ist neu. Senken Sie die DNS-TTL vor dem Umschalten, richten Sie den Namen auf den neuen Balancer und behalten Sie den Huawei-Cloud-Balancer, bis der Verkehr sauber läuft. Den Namen zurückzusetzen ist der Rückweg; schreiben Sie ihn auf.
Fragen zum Umzug der Load Balancer
Welcher STACKIT Load Balancer ersetzt einen Shared ELB von Huawei Cloud?
Der Lauf ordnet ihn dem Network Load Balancer zu. Das passt zu Verkehr auf Schicht 4. Terminiert ein Listener TLS oder routet nach Host oder Pfad, nehmen Sie stattdessen den Application Load Balancer und behandeln das Ergebnis des Laufs als Ausgangspunkt.
Warum sind Listener, Pools, Member und Monitore MANUAL_REVIEW?
Ihre Ressourcentypen stehen nicht im Katalog der Wissensbasis dieses Builds; daher wird nichts davon bewertet oder entworfen. Sie schreiben sie auf der STACKIT-Seite aus dem Terraform neu, das Sie schon haben.
Wozu dienen die Variablen für die l4- und l7-Flavors im Lauf?
Sie sind Eingaben des Dedicated Load Balancers. Ohne Werte meldet der Lauf sie als fehlend und lässt die abhängigen Einheiten ohne Entwurf und Welle; mit einer Variablendatei werden alle zwölf Einheiten eingeordnet.
Bleibt die öffentliche IP gleich?
Nein. Der Lauf hält fest, dass sich die öffentliche Adresse ändert; DNS-Einträge und Freigabelisten, die sie nennen, ändern sich ebenfalls.
Quellen
- Huawei Cloud ELB: Load-Balancer-Typen
- STACKIT Network Load Balancer: Grundkonzepte
- STACKIT Application Load Balancer: Funktionen
- huaweicloud_elb_loadbalancer (Huawei-Cloud-Terraform-Provider 1.100.0)
- huaweicloud_lb_loadbalancer (Huawei-Cloud-Terraform-Provider 1.100.0)
- huaweicloud_lb_listener (Huawei-Cloud-Terraform-Provider 1.100.0)
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.