HUAWEI CLOUD DMS → STACKIT · GIDS

Huawei DMS naar STACKIT: Kafka, RabbitMQ en RocketMQ

De drie DMS-engines komen niet op dezelfde manier terecht. DMS for RabbitMQ wordt STACKIT RabbitMQ, een replatforming. DMS for Kafka heeft in de catalogus van de run geen managed STACKIT-tegenhanger, dus de broker draait zelfbeheerd op STACKIT Kubernetes Engine (SKE), of het messagingontwerp verandert naar RabbitMQ. DMS for RocketMQ heeft helemaal geen STACKIT-dienst, dus de semantiek voor geordende en vertraagde berichten ontwerpt u opnieuw. Deze gids volgt één demo-omgeving met alle drie, van de run tot de cutovervolgorde.

Drie brokers als invoer

Een kleine Huawei Cloud-omgeving, voor deze pagina geschreven en op 4 november 2026 door StackToIT beoordeeld, met een VPC, een subnet en een security group rond de brokers. Links Kafka en RabbitMQ, rechts RocketMQ. Het wachtwoord van de broker is met opzet een variabele zonder waarde.

Kafka en RabbitMQmain.tf
resource "huaweicloud_dms_kafka_instance" "stream" {
  name               = "orders-stream"
  engine_version     = "2.7"
  flavor_id          = "c6.2u4g.cluster"
  storage_spec_code  = "dms.physical.storage.ultra.v2"
  storage_space      = 600
  broker_num         = 3
  vpc_id             = huaweicloud_vpc.main.id
  network_id         = huaweicloud_vpc_subnet.brokers.id
  security_group_id  = huaweicloud_networking_secgroup.brokers.id
  availability_zones = ["eu-west-101a", "eu-west-101b", "eu-west-101c"]
  ssl_enable         = true
  access_user        = "orders"
  password           = var.broker_password
}

resource "huaweicloud_dms_rabbitmq_instance" "jobs" {
  name               = "jobs-queue"
  engine_version     = "3.8.35"
  flavor_id          = "c6.2u4g.cluster"
  storage_spec_code  = "dms.physical.storage.ultra.v2"
  broker_num         = 3
  vpc_id             = huaweicloud_vpc.main.id
  network_id         = huaweicloud_vpc_subnet.brokers.id
  security_group_id  = huaweicloud_networking_secgroup.brokers.id
  availability_zones = ["eu-west-101a", "eu-west-101b", "eu-west-101c"]
  access_user        = "jobs"
  password           = var.broker_password
}
RocketMQmain.tf
resource "huaweicloud_dms_rocketmq_instance" "billing" {
  name               = "billing-events"
  engine_version     = "4.8.0"
  storage_space      = 300
  vpc_id             = huaweicloud_vpc.main.id
  subnet_id          = huaweicloud_vpc_subnet.brokers.id
  security_group_id  = huaweicloud_networking_secgroup.brokers.id
  availability_zones = ["eu-west-101a"]
  flavor_id          = "c6.4u8g.cluster"
  storage_spec_code  = "dms.physical.storage.high.v2"
  broker_num         = 1
}

Kafka en RabbitMQ, beoordeeld

Fragmenten van assessment.json met de waarden precies zoals de run ze schreef.

Kafkaassessment.json
{
  "id": "huaweicloud_dms_kafka_instance.stream",
  "result": {
    "class": "CONTAINERIZE",
    "confidence": "MEDIUM",
    "target": {
      "service": "a self-managed Kafka-compatible broker on SKE",
      "resources": [
        "stackit_ske_cluster"
      ]
    },
    "reason": "STACKIT has no managed Kafka service. The broker runs self-managed on SKE, or the messaging design changes to RabbitMQ."
  }
}
RabbitMQassessment.json
{
  "id": "huaweicloud_dms_rabbitmq_instance.jobs",
  "result": {
    "class": "REPLATFORM",
    "confidence": "MEDIUM",
    "target": {
      "service": "STACKIT RabbitMQ",
      "resources": [
        "stackit_rabbitmq_instance",
        "stackit_rabbitmq_credential"
      ]
    },
    "reason": "DMS for RabbitMQ becomes STACKIT RabbitMQ. Exchanges, queues and credentials are recreated, and messages in flight are drained before cut-over."
  }
}
  • Kafka: CONTAINERIZE

    Het doel is een Kafka-compatibele broker die u op een SKE-cluster draait. De run noemt 13 Kafka-instellingen voor uw architecten, waaronder engine_version, broker_num, flavor_id, ssl_enable en access_user.

  • RabbitMQ: REPLATFORM

    Exchanges, queues en inloggegevens worden opnieuw aangemaakt en berichten in transit worden vóór de cutover afgewerkt. De run noemt 11 instellingen, waaronder engine_version, broker_num en de gebruiker.

  • Wachtwoorden worden nooit in het rapport gelezen

    Het argument password is een van de instellingen die bij naam worden genoemd; in de bestanden van de run staat geen waarde.

RocketMQ en de volgorde van de verhuizing

Links de RocketMQ-eenheid: REDESIGN met zekerheidsniveau LOW. Rechts technical-sequencing.md van dezelfde run. De netwerkeenheden komen eerst; de drie brokers delen golf 3.

RocketMQassessment.json
{
  "id": "huaweicloud_dms_rocketmq_instance.billing",
  "result": {
    "class": "REDESIGN",
    "confidence": "LOW",
    "target": {
      "service": "STACKIT RabbitMQ",
      "resources": [
        "stackit_rabbitmq_instance",
        "stackit_rabbitmq_credential"
      ]
    },
    "reason": "STACKIT has no RocketMQ service. Ordered and delayed message semantics have to be redesigned for RabbitMQ, or the broker runs self-managed on SKE."
  }
}
Golvenmigration/technical-sequencing.md
## Wave 1 — 2 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_networking_secgroup.brokers` | RECONFIGURE / MEDIUM | STACKIT security groups |
| `huaweicloud_vpc.main` | RECONFIGURE / MEDIUM | STACKIT network |

## Wave 2 — 1 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_vpc_subnet.brokers` | RECONFIGURE / MEDIUM | STACKIT network |

## Wave 3 — 3 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_dms_kafka_instance.stream` | CONTAINERIZE / MEDIUM | a self-managed Kafka-compatible broker on SKE |
| `huaweicloud_dms_rabbitmq_instance.jobs` | REPLATFORM / MEDIUM | STACKIT RabbitMQ |
| `huaweicloud_dms_rocketmq_instance.billing` | REDESIGN / LOW | STACKIT RabbitMQ |
  • Voorwaardelijke haalbaarheid

    De run markeert het RocketMQ-doel als voorwaardelijk: het concept bevat de feature niet en een persoon maakt de verwijzingen naar het netwerk in het redesign opnieuw.

  • Brokers zijn geen data-eenheden

    Het bestand voor dataverplaatsing van de run meldt dat de bron geen database, cache, zoekdomein, warehouse, volume, bestandsshare of objectopslag bevat, en dat state niet van toepassing is. Berichten in queues en topics staan daar niet, dus het plan om ze af te werken of te repliceren moet van u komen.

  • Eén eigenaar voor de drie brokers

    De drie brokers vormen één werkpakket met de Platform Architect als eigenaar; de netwerkeenheden gaan naar de Network Architect.

Hoe de DMS-omgeving wordt gekoppeld

Huawei Cloud-resourceSTACKIT-doelMigratieklasse
DMS for KafkaZelfbeheerde Kafka-compatibele broker op SKEContainerisatie
DMS for RabbitMQSTACKIT RabbitMQ (instance en credential)Replatforming
DMS for RocketMQSTACKIT RabbitMQ na een redesign, of een zelfbeheerde broker op SKERedesign
VPC en subnetSTACKIT-netwerk, met een Network Area waar routering nodig isHerconfiguratie
Security groupSTACKIT security groupsHerconfiguratie

Klassen zoals de run ze bepaalde voor zes resources in zes eenheden. Kafka, RabbitMQ en de netwerkeenheden hebben zekerheidsniveau MEDIUM, RocketMQ LOW.

De migratie, op volgorde

Stap 1 tot en met 3 zijn voorbereiding die de run rechtstreeks ondersteunt. Stap 4 tot en met 7 zijn algemene praktijk per engine, als zodanig aangeduid, omdat de run geen berichtenverplaatsing plant.

  1. Lever de variabelen aan en voer opnieuw uit

    Zonder waarde voor broker_password markeert de run de bron als VARIABLE_UNRESOLVED (volledigheid PARTIAL) en meldt dat onbekend is wat de variabele leest totdat een waarde is aangeleverd. Geef de waarde in een variabelenbestand mee met --var-file; de run is dan volledig.

  2. Bepaal de bestemming per broker

    RabbitMQ komt op de managed service terecht. Kies voor Kafka tussen draaien op SKE en overstappen op RabbitMQ. Kies voor RocketMQ eerst het redesign, want dat bepaalt of RabbitMQ of SKE het doel is.

  3. Zet eerst het netwerk neer

    De VPC en security group zitten in golf 1, het subnet in golf 2. Brokers in golf 3 hebben het netwerk nodig waaraan ze hangen, en clients hebben een route ernaartoe nodig.

  4. RabbitMQ: bouwen en daarna de definities opnieuw aanmaken

    Maak de instance aan op een plan dat past bij de hoge beschikbaarheid die u had, stel de toegangslijst in, maak inloggegevens aan en maak daarna exchanges, queues en bindings opnieuw aan. RabbitMQ kan definities exporteren en importeren via zijn management-API; dit is algemene praktijk. De eigen how-to van STACKIT herstelt queue-definities uit een back-up van een bestaande STACKIT-instance en vertrekt dus niet vanuit DMS.

  5. RabbitMQ: afwerken en overschakelen

    Stop de producers, laat de consumers de queues leegmaken en laat producers en consumers daarna naar het nieuwe endpoint wijzen. De reden van de run zegt dat berichten in transit vóór de cutover worden afgewerkt.

  6. Kafka: opzetten, repliceren, consumers verplaatsen

    Maak het SKE-cluster aan, draai de broker erop, repliceer de topics vanuit DMS (bijvoorbeeld met MirrorMaker 2 van Kafka), verplaats de consumers zodra de lag nul is en daarna de producers. Laat DMS draaien totdat de laatste consumer group is verplaatst.

  7. RocketMQ: het nieuwe ontwerp parallel draaien

    Verplaats topic voor topic zodra ordening en vertraging in het nieuwe ontwerp vaststaan, en houd de oude broker totdat de laatste producer is verplaatst.

Instellingen die veranderen tussen DMS en STACKIT

De run noemt de instellingen; deze tabel zet de zwaarstwegende ervan naast de pagina's in de bronnenlijst.

DMS-instelling in de demoOp STACKITWat u bepaalt
broker_num = 3 op RabbitMQDe serviceplannen zijn replicaplannen met drie nodes (hoge beschikbaarheid) of met één node. Voorbeelden: 4 vCPU, 8 GB RAM en 50 GB disk per node, drie nodes.Kies het plan dat past bij uw beschikbaarheidsbehoefte; één broker komt overeen met een plan met één node, drie met een replicaplan.
engine_version = 3.8.35De lifecyclepagina noemt hoofdversie 4.0 zonder einddatum en geeft voor 3.13 en 3.10 einddatums van september 2025 en maart 2025 (gelezen op 4 november 2026).U komt uit op een nieuwere hoofdversie dan de bron. Controleer clientbibliotheken en verwijderde functies in de eigen release notes van RabbitMQ vóór de overschakeling.
security_group_id en network_idToegang tot de instance wordt geregeld met een toegangslijst van bron-IP's. Standaard is de instance bereikbaar vanuit STACKIT; openbare IPv4-adressen voegt u toe in CIDR-notatie en 0.0.0.0/0 wordt afgeraden.Vertaal de bedoeling van de security group naar een IP-lijst. IPv6 kan niet worden toegevoegd.
access_user en passwordHet doel van de run bevat naast de instance een STACKIT RabbitMQ-credential, en de reden zegt dat inloggegevens opnieuw worden aangemaakt.De DMS-gebruiker en het wachtwoord gaan niet mee. Maak nieuwe inloggegevens aan op de STACKIT-instance en werk de configuratie van elke applicatie ermee bij.
Kafka engine_version = 2.7, ssl_enable = trueGeen managed service in de catalogus van de run; het doel is een broker die u op SKE draait, dus versie en TLS zijn uw configuratie.Kies een Kafka-versie die uw clients ondersteunen en bepaal TLS en authenticatie in de eigen brokerconfiguratie.
Geordende en vertraagde berichten in RocketMQGeen equivalente dienst.Bepaal per topic of ordening en vertraging nodig zijn, en hoe RabbitMQ of een broker op SKE ze levert.

Bronzijde: de demo-invoer en de instellingen die de run noemt. Doelzijde: de STACKIT RabbitMQ-pagina's over plannen, lifecycle, toegang tot de instance en migratie in de bronnenlijst.

De ontbrekende variabele aanleveren

De eerste run had geen waarde voor broker_password. De tweede run voegde --var-file toe met een plaatshouderwaarde. Links de eerste run, rechts de tweede run.

Eerste runconsole.txt
  Source completeness: PARTIAL (source status VARIABLE_UNRESOLVED)
Tweede runconsole.txt
  Source completeness: COMPLETE (source status COMPLETE)
  • Verzoeken die het concept blokkeren

    De regel Decisions van de eerste run meldt 6 openstaande verzoeken, waarvan er 2 het concept blokkeren. De tweede meldt er 5, waarvan 1 blokkerend: de ontbrekende variabele telt niet meer mee en de regiovraag blijft.

  • Waarom dit ertoe doet

    Een bron met onopgeloste variabelen wordt als gedeeltelijk beoordeeld. Vul ze in voordat u vertrouwt op de klasse en de instellingen van de eenheden die ze lezen.

Beslissingen die bij de architecten liggen

  • Kafka: zelf draaien of laten

    Zelfbeheerd op SKE betekent dat uw team brokers, opslag en upgrades beheert. SKE zelf regelt Kubernetes- en besturingssysteemupdates. Gaat het om eenvoudige queues, dan is RabbitMQ misschien de kleinere ontwerpwijziging.

  • STACKIT Intake is niet het Kafka-antwoord

    STACKIT Intake accepteert streamingdata via het Apache Kafka-protocol en schrijft die weg in Apache Iceberg-tabellen in de Dremio-catalogus. Het overzicht beschrijft geen topics of consumer groups waaruit applicaties lezen, dus het past bij streams die in analyse eindigen, niet bij een broker waaruit diensten consumeren.

  • Semantiek van RocketMQ

    Maak een lijst van elk topic dat van ordening of vertraging afhangt en bepaal wat het vervangt voordat er iets wordt verplaatst.

  • Berichtafhandeling bij de cutover

    Afwerken, repliceren of verlies van berichten in transit accepteren, per queue en per topic.

Vragen van messagingteams

Is er een managed Kafka-dienst op STACKIT?

In de catalogus die de run las niet: de Kafka-eenheid komt uit op een zelfbeheerde broker op SKE, of het ontwerp verandert naar RabbitMQ. Controleer de productlijst van STACKIT op wijzigingen voordat u zich vastlegt.

Welke RabbitMQ-versie gaan we draaien?

De lifecyclepagina van STACKIT noemt 4.0 zonder einddatum; 3.13 en 3.10 bereikten hun einde in september 2025 en maart 2025 (gelezen op 4 november 2026). Een bron op 3.8 stapt dus over naar een andere hoofdversie.

Verplaatst StackToIT de berichten?

Nee. Het classificeert de brokers, ordent de eenheden en noemt de instellingen die u meeneemt. Queues afwerken of topics repliceren is werk voor uw teams en uw tooling.

Waarom heeft RocketMQ zekerheidsniveau LOW?

De run markeert de eenheid als REDESIGN met haalbaarheid CONDITIONAL: STACKIT heeft geen RocketMQ-dienst en het RabbitMQ-doel hangt af van hoe geordende en vertraagde berichten worden afgehandeld. Een eenheid met LOW betekent: lees de vermelding in het rapport voordat u plant.

Bronnen

Uw volgende stap: STACKIT.

Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.

Laat uw gegevens achter, onze specialisten nemen contact met u op.

Liever zelf een e-mail sturen? connect@stacktoit.com

Wij gebruiken uw gegevens alleen om dit verzoek te beantwoorden en een mogelijke pilot te bespreken. Privacyverklaring