HUAWEI CLOUD DCS → STACKIT VALKEY · HANDLEIDING

Huawei DCS Redis naar STACKIT Valkey

Een DCS-instance wordt een Key Value Store-instance op basis van Valkey. De data verhuist niet vanzelf, en de kopieermethode die STACKIT voor Redis documenteert, leunt op een commando dat DCS uitschakelt. Deze handleiding beoordeelt een kleine DCS-omgeving, laat zien wat StackToIT noemt en wat het openlaat, en loopt een kopie met vergelijking door die u vóór de cutover test.

Twee DCS-instances, beoordeeld

Een kleine Huawei Cloud-omgeving, voor deze pagina geschreven en op 4 november 2026 door StackToIT beoordeeld: een hoogbeschikbare sessiecache en een job-cache met één node. Links de twee DCS-blokken uit de invoer, rechts het resultaat dat voor de sessiecache is vastgelegd: een fragment van assessment.json met de waarden zoals de run ze schreef.

Voorbeeldinvoermain.tf
resource "huaweicloud_dcs_instance" "sessions" {
  name               = "web-sessions"
  engine             = "Redis"
  engine_version     = "6.0"
  capacity           = 4
  flavor             = "redis.ha.xu1.large.r2.4"
  availability_zones = ["eu-west-101a", "eu-west-101b"]
  password           = var.redis_password
  vpc_id             = huaweicloud_vpc.main.id
  subnet_id          = huaweicloud_vpc_subnet.data.id

  backup_policy {
    backup_type = "auto"
    save_days   = 3
    backup_at   = [1, 3, 5, 7]
    begin_at    = "02:00-04:00"
  }

  whitelists {
    group_name = "app-servers"
    ip_address = ["10.40.1.0/24"]
  }
}

resource "huaweicloud_dcs_instance" "queue_cache" {
  name               = "job-cache"
  engine             = "Redis"
  engine_version     = "5.0"
  capacity           = 2
  flavor             = "redis.single.xu1.large.2"
  availability_zones = ["eu-west-101a"]
  password           = var.redis_password
  vpc_id             = huaweicloud_vpc.main.id
  subnet_id          = huaweicloud_vpc_subnet.data.id
}
StackToIT-assessmentassessment.json
{
  "id": "huaweicloud_dcs_instance.sessions",
  "result": {
    "class": "RECONFIGURE",
    "confidence": "MEDIUM",
    "target": {
      "service": "STACKIT Key Value Store (Valkey)",
      "resources": [
        "stackit_valkey_instance",
        "stackit_valkey_credential"
      ]
    },
    "reason": "A DCS instance becomes a Valkey instance. The application changes its endpoint and credentials; check the engine and version in use, since a Memcached instance needs a client change."
  }
}
  • Beide worden Valkey

    Beide instances krijgen de klasse RECONFIGURE met zekerheidsniveau MEDIUM en komen uit op STACKIT Key Value Store (Valkey). De applicatie wijzigt zijn endpoint en inloggegevens; de engine en versie die in gebruik zijn, bepalen of ook een client moet veranderen.

  • Instellingen genoemd, niet overgenomen

    De sessiecache noemt 15 instellingen voor uw platformteam: engine, engine_version, capacity, flavor, de twee availability zones, het wachtwoord, de netwerkverwijzingen, vier backup_policy-waarden en de twee whitelist-waarden. De job-cache noemt er negen.

  • Eerst het netwerk

    De run ordent de omgeving in drie golven: de VPC, dan het subnet, dan beide caches. Maak het STACKIT-netwerk aan vóór de Valkey-instances.

  • Een Terraform-concept ter beoordeling

    StackToIT schrijft een STACKIT-Terraform-concept dat uw architecten beoordelen. De vier eenheden hebben een eigenaar: de Network Architect en de Data Architect.

De migratie in zeven stappen

Stap 1 tot en met 4 bereiden het doel voor en kosten geen downtime. Stap 5 tot en met 7 zijn de stappen om te oefenen.

  1. 1. De Terraform-code beoordelen

    Voer het assessment uit op de map met de code voor de huaweicloud-provider. StackToIT leest alleen bestanden en maakt nooit verbinding met uw Huawei Cloud-account. Geef ook het variabelenbestand mee: een gevoelige variabele zonder waarde markeert de instance als eenheid met ontbrekende invoer.

  2. 2. Engine en versie bevestigen

    engine en engine_version behoren tot de genoemde instellingen. Redis 5.0 en 6.0 staan in de demo. De run merkt op dat een Memcached-instance een clientwijziging vereist, omdat Valkey geen Memcached is.

  3. 3. Het doel aanmaken

    Maak een Key Value Store-instance aan in de STACKIT-regio die u in het invoerbestand hebt beantwoord (eu01 of eu02), met dezelfde capaciteit als de bron of meer. STACKIT raadt aan er niet naar te schrijven voordat de consistentiecontroles klaar zijn.

  4. 4. Inloggegevens aanmaken

    Key Value Store vereist een gebruikersnaam en wachtwoord, en de verbindingsstrings gebruiken het schema rediss://, wat TLS betekent. Elke client van de oude instance krijgt een nieuwe verbindingsstring en, als die alleen een wachtwoord kende, ook een gebruikersnaam.

  5. 5. De kopieermethode kiezen

    Het bestand voor dataverplaatsing legt voor beide caches het mechanisme UNKNOWN en de status DECISION_REQUIRED vast. Omvang, wijzigingsfrequentie, toegestane downtime en herstelpunt staan niet in de Terraform-code, dus die levert u zelf aan. De volgende sectie laat zien waarom de gedocumenteerde standaard niet bij een DCS-bron past.

  6. 6. Kopiëren en vergelijken

    Koppel schrijvers los of zet ze op pauze, kopieer en vergelijk daarna INFO KEYSPACE aan beide kanten: de waarden voor keys en expires moeten overeenkomen. Vergelijk ook de gesorteerde sleutelnamen en vergelijk het geheugengebruik met een marge voor de overhead van de engine.

  7. 7. Overschakelen en de bron bewaren

    Laat de clients naar het nieuwe endpoint wijzen. Bewaar de DCS-instance en de laatste back-up totdat de applicatie op Valkey een normale piek heeft doorstaan.

Hoe elke DCS-instelling meegaat

De run noemt deze instellingen en laat de beslissing aan u. De rechterkolom is wat de STACKIT-documentatie over de doelkant zegt.

DCS-instelling in de demoWaarde in de invoerWat het op Key Value Store wordt
engine, engine_versionRedis 6.0 en Redis 5.0Een Valkey-instance. STACKIT geeft aan dat Key Value Store zijn eerdere Redis-aanbod vervangt en met bestaande Redis-opstellingen werkt; test de commando's die uw applicatie gebruikt.
capacity, flavor4 GB met een hoogbeschikbare flavor, 2 GB met een single-node-flavorEen plan dat u op STACKIT kiest. Maak het doel aan met dezelfde capaciteit (RAM, opslag, nodes) als de bron of meer.
availability_zonesTwee zones voor de sessiecache, één voor de job-cacheHoge beschikbaarheid betekent op Key Value Store replicasets met meerdere nodes en geautomatiseerde failover. Een enkele node heeft geen failover.
backup_policyAutomatische back-up, drie dagen bewaard, vier dagen per weekNiet overgenomen. Stel de back-up op de nieuwe instance opnieuw in en test een restore vóór de cutover.
whitelistsGroep app-servers met 10.40.1.0/24Netwerk-ACL's op de nieuwe instance. Maak de toegestane bereiken opnieuw aan met de adressen van het STACKIT-netwerk.
passwordEen gevoelige variabeleNiet overgenomen. De nieuwe instance geeft zelf een gebruikersnaam en wachtwoord uit.
vpc_id, subnet_idDe VPC en het subnet van de omgevingEen STACKIT-netwerk, aangemaakt in golf 1 en 2 vóór de caches.

De waarden komen uit de demo-invoer. Plannamen en prijzen op STACKIT maken geen deel uit van het assessment.

Voer het uit en lees de open datavraag

Eén commando beoordeelt de map. Het bestand voor dataverplaatsing toont daarna beide caches als stateful eenheden zonder gekozen mechanisme.

Commandoterminal
stacktoit assess . ../out --offline
Dataverplaatsingmigration/data-movement.md
| Unit | Source service | Target service | Application | Mechanism | State | Data class | RPO | Downtime tolerance |
|---|---|---|---|---|---|---|---|---|
| huaweicloud_dcs_instance.queue_cache | huaweicloud_dcs_instance | STACKIT Key Value Store (Valkey) |  | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
| huaweicloud_dcs_instance.sessions | huaweicloud_dcs_instance | STACKIT Key Value Store (Valkey) |  | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
  • Not known, met opzet

    Volgens het bestand staan de omvang van de data, de wijzigingsfrequentie, de toegestane downtime, het herstelpunt en de dataclassificatie niet in de bron. StackToIT verplaatst nooit data en raadt deze waarden niet.

  • Eerst de regio

    Het ene verzoek dat het concept blokkeert, is de doelregio. De inputs-template biedt eu01 en eu02; beantwoord dat voordat u capaciteit plant.

Waar een DCS-bron afwijkt van het gedocumenteerde pad

STACKIT documenteert een migratie vanuit zijn eigen Redis-aanbod. Die leest sleutels op de bron en stuurt ze met MIGRATE. Vier feiten over DCS veranderen dat plan.

  • MIGRATE is uitgeschakeld

    Huawei noemt MIGRATE onder de uitgeschakelde commando's van DCS Redis 6.0, voor single-node-, master/standby- en Redis Cluster-instances en opnieuw voor Proxy Cluster, read/write splitting en de enterprise-editie. De lijst voor Redis 5.0 schakelt MIGRATE ook uit voor single-node-, master/standby-, Proxy Cluster-, Redis Cluster- en read/write-splitting-instances, dus hetzelfde geldt voor de job-cache op 5.0. De STACKIT-pipe stuurt MIGRATE via de bronverbinding, dus vanuit DCS werkt die zoals beschreven niet.

  • SYNC en PSYNC zijn ook uitgeschakeld

    Dezelfde lijsten van Huawei schakelen SYNC en PSYNC uit voor de instancetypen van Redis 6.0 en 5.0. Een tool die zich als replica aansluit, kan niet uit zo'n bron lezen, dus plan een kopie sleutel voor sleutel of een back-upbestand.

  • Single-node-instances hebben geen back-up in de console

    Huawei geeft aan dat van single-node-instances geen back-up in de console kan worden gemaakt. In de demo is dat de job-cache: lees de sleutels met een client, niet uit een back-upbestand.

  • Meerdere databases

    De gids van Huawei voor het importeren van back-ups geeft aan dat Proxy Cluster- en Redis Cluster-instances standaard alleen DB0 hebben. Gebruikt de bronapplicatie genummerde databases, koppel die dan vóór het kopiëren, want het STACKIT-commando neemt een databasenummer.

Vergelijken na het kopiëren

Deze controles komen uit de migratiehandleiding van STACKIT. Vervang de plaatshouders door de verbindingsstrings en certificaatbestanden van beide kanten.

Keyspace op de bronterminal
valkey-cli -u "[source-db-connection-string]" --tls --sni [source-frontend-hosts-fqdn] --cacert [/path/to/ca_cert.pem] INFO KEYSPACE
Keyspace op het doelterminal
valkey-cli -u "[target-db-connection-string]" --tls --sni [target-frontend-hosts-fqdn] --cacert [/path/to/ca_cert.pem] INFO KEYSPACE
  • Wat moet overeenkomen

    De waarden voor keys en expires van beide uitvoerresultaten. STACKIT vergelijkt ook de gesorteerde sleutellijsten met diff en verwacht een leeg resultaat.

  • Wat u verder test

    Time-to-live-waarden, de datatypen die uw code leest en één echte clientsessie via TLS. Een gelijk aantal sleutels laat niet zien dat de applicatie zich hetzelfde gedraagt.

Wat u aanpast voordat u iets toepast

  • Het invoerbestand beantwoorden

    Kopieer target.region uit inputs-template.yaml naar uw invoerbestand, beantwoord die en voer het assessment opnieuw uit met --inputs op dezelfde uitvoermap, zoals de template aangeeft. Lees daarna het opnieuw gegenereerde concept en plan.

  • De datafeiten invullen

    Geef elke applicatie in het applicatiebestand zijn herstelpunt en toegestane downtime, zodat de rijen voor dataverplaatsing niet langer NOT_PROVIDED tonen. Omvang en wijzigingsfrequentie komen nooit uit Terraform: meet ze op de bron en bewaar ze bij het kopieerplan.

  • De provider vastzetten

    De run waarschuwt dat geen lockbestand de huaweicloud-provider vastzet. Commit .terraform.lock.hcl zodat de beoordeelde versie ook de geteste versie is.

  • De eigenaar van de kopie bepalen

    Beide cache-eenheden zijn toegewezen aan de rol Data Architect. Benoem wie de kopie uitvoert en wie de vergelijking ondertekent.

Vragen die teams stellen over DCS en Valkey

Schrijft StackToIT de Valkey-Terraform voor een DCS-instance?

Ja. StackToIT schrijft een STACKIT-Terraform-concept dat uw architecten beoordelen. De run noemt de doelresources, een Valkey-instance en een credential, en legt elke cache vast als een stap.

Kunnen we het MIGRATE-commando uit de STACKIT-handleiding gebruiken?

Niet vanuit DCS zoals beschreven: Huawei noemt MIGRATE uitgeschakeld voor DCS Redis 6.0 en 5.0. De handleiding levert ook een Python-kopieerscript mee, copy_redis.py, voor sleutelnamen die MIGRATE niet aankan. Volgens de gepubliceerde code gebruikt het MIGRATE niet: het doorloopt de bron met SCAN en kopieert strings, lists, sets, hashes en sorted sets met hun TTL via gewone lees- en schrijfcommando's, waarvan Huawei er geen als uitgeschakeld voor Redis 6.0 noemt. Andere sleuteltypen, zoals streams, kopieert het niet, en de verbindingsinstellingen staan standaard op TLS. Controleer beide tegen uw DCS-instance en oefen op een kopie. Wij hebben het niet tegen DCS uitgevoerd.

Moet de applicatiecode veranderen?

Het endpoint en de inloggegevens veranderen zeker, en de verbinding gebruikt TLS met een gebruikersnaam en wachtwoord. Of commando's zich identiek gedragen, test u zelf; STACKIT beschrijft Key Value Store als werkend met bestaande Redis-opstellingen, niet als een belofte voor elk commando.

Hoe lang duurt het kopiëren?

Het assessment weet dat niet: omvang en wijzigingsfrequentie staan niet in de Terraform-code. STACKIT noemt ongeveer 50 seconden per gigabyte voor zijn eigen kopie op basis van MIGRATE en geeft aan dat dit varieert met latentie en datastructuur. Meet op uw eigen data.

Maakt StackToIT verbinding met ons Huawei Cloud-account?

Nee. Het leest de Terraform- en OpenTofu-bestanden en niets anders.

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