Hüppa põhisisu juurde Hüppa navigatsiooni juurde Hüppa jaluse juurde
Piiratud ajal: Design Partner Program. BUSINESS pakett igavesti tasuta.

Elus migratsioon

Tõsta töötav repositoorium, konteinerid, andmebaas ja protsessimälu kaasa arvatud, teisele masinale ühe käsuga ja minimaalse seisakuajaga.

Elus migratsioon

Servereid vahetatakse: riistvara vananeb, teenusepakkujad muutuvad, regioonid liiguvad. rdc repo migrate tõstab töötava repositooriumi teisele masinale ühe käsuga — ja --checkpoint-iga reisib isegi protsessimälu kaasa. Demokäivitus pulse hoiab loendajat RAM-is; pärast liikumist jätkab see loendamist otsast alustamise asemel.

Vaata juhendvideot

Kuidas see liigub

Kaks faasi, minimaalne seisakuaeg

Esimene faas kopeerib põhiosa, kuni rakendus jätkab tööd. Teine faas jäädvustab elavad protsessid (CRIU, rediacc.checkpoint=true sildiga konteineritele), kannab lõpliku delta koos protsessiolekuga üle ja jätkab kõike uuel masinal. Seisakuaeg on delta, mitte andmete suurus.

1. samm: Tõestus — loendaja RAM-is

rdc term connect --machine <machine-name> --repository pulse --command 'docker logs heartbeat_app --tail 5'

Rakendus hoiab mälus loendurit ja logib löögi iga viie sekundi järel. Loendur elab ainult RAM-is: protsessi taaskäivitamine lähtestaks selle ühele.

memory counter=6 ja kasvab, üks löök iga viie sekundi tagant. Loendaja elab ainult protsessimälus. Kui protsess taaskäivitub, alustaks see ühe pealt uuesti.

2. samm: Migreeeri — elusalt

rdc repo migrate --name pulse --from <machine-name> --to <target-machine> --checkpoint --skip-dns

Migreerige kontrollpunktiga: esimene faas edastab 2 GB põhiosa, samal ajal kui allikas jääb võrgus, seejärel lühike üleminek salvestab töötavate protsesside kontrollpunkti ja kannab lõpliku delta üle. Väljund prindib iga faasi ja tegeliku seisakuaja.

Väljund jutustab liikumise: esimene faas kannab 2 GB põhiosa üle, samal ajal kui allikas jääb veebis, seejärel prindib ümberlülitusliin tegeliku DOWNTIME: mõned kümned megabaidid ja umbes kakskümmend sekundit kahe gigabaidise repositooriumi kohta.

3. samm: Kinnita uus kodu

rdc repo list --machine <target-machine>

Loetlege sihtmasinas repositoryd: pulse on ühendatud, Docker töötab ja selle containerid on üleval.

Sihtmasinas on pulse ühendatud, Docker töötab, konteinerid jooksevad.

4. samm: Allikas on peatatud

rdc repo list --machine <machine-name>

Allikal on repository peatatud ja lahti ühendatud: Docker puudub, null containerit. Pilt säilitatakse tulevaste delta-ülekannete alusena.

Allikas loetleb repositooriumi endiselt, kuid ausalt: ei ole ühendatud, Dockerit pole, null konteinerit. Seal ei tööta enam midagi. Kujutis on meelega alles jäetud järgmise deltatransferi alusena, nii et tulevane tagasitõuge on odav.

5. samm: Loendaja jätkas loendamist

rdc term connect --machine <target-machine> --repository pulse --command 'docker logs heartbeat_app --tail 5'

Uue masina logid näitavad, et loendur jätkab sealt, kus kontrollpunkt selle külmutas, mitte ei lähtesta ühele. Protsessimälu tegi teekonna.

memory counter=17, siis 18, 19, 20… See jätkas täpselt sealt, kus kontrollpunkt selle külmutas, mitte ühe pealt uuesti. See on protsessimälu, mis reisis kaasa — rakendus ei märganud, et masin vahetus.

Ilma --checkpoint-ita tõstab migrate endiselt kettaandmed ja konteinerid üle; need käivituvad sihtmasinal uuesti, mitte ei jätka pooleli olekust.


Edasi: Deltatransfer.