Ana içeriğe atla Navigasyona atla Alt bilgiye atla
Sınırlı süre: Design Partner Programı. BUSINESS planında ömür boyu ücretsiz.

Canlı Taşıma

Çalışan bir depoyu, container'lar ve süreç belleği dahil, tek komutla başka bir makineye minimal kesinti süresiyle taşıyın.

Canlı Taşıma

Sunucular değiştirilir: donanım eskir, sağlayıcılar değişir, bölgeler taşınır. rdc repo migrate, çalışan bir depoyu tek komutla başka bir makineye taşır; --checkpoint ile süreç belleği de yolculuğa katılır. Demo uygulama pulse, RAM’de bir sayaç tutar; taşımadan sonra sıfırdan başlamak yerine saymaya devam eder.

Öğreticiyi izleyin

Nasıl taşınır?

Two phases, minimal downtime

Birinci aşama, uygulama çalışmaya devam ederken büyük bölümü kopyalar. İkinci aşama, canlı süreçleri checkpoint’ler (CRIU, rediacc.checkpoint=true etiketli container’lar için), son deltayı ve süreç durumunu karşıya taşır, ardından yeni makinede her şeyi devam ettirir. Kesinti deltaya eşittir, veriye değil.

Adım 1: Kanıt, RAM’de bir sayaç

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

Uygulama, bellekte bir sayaç tutar ve her beş saniyede bir nabız kaydeder. Sayaç yalnızca RAM'de yaşar: bir süreç yeniden başlatması onu bir'e sıfırlar.

memory counter=6 ve artıyor, her beş saniyede bir atış. Sayaç yalnızca süreç belleğinde yaşar. Süreç yeniden başlasaydı, birden başlardı.

Adım 2: Taşıyın, canlı

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

Checkpoint ile taşıma: birinci aşama, kaynak çevrimiçi kalırken 2 GB'lık yükü aktarır, ardından kısa bir geçiş çalışan süreçleri checkpoint'ler ve son delta'yı karşıya taşır. Çıktı, her aşamayı ve gerçek kesinti süresini basar.

Çıktı taşımayı anlatır: birinci aşama kaynak çevrimiçiyken 2 GB’lık büyük bölümü aktarır, ardından geçiş satırı gerçek DOWNTIME’ı yazdırır: iki gigabaytlık bir depo için birkaç on megabayt ve yaklaşık yirmi saniye.

Adım 3: Yeni yuvayı doğrulayın

rdc repo list --machine <target-machine>

Hedef makinedeki repository'leri listeleyin: pulse mount edilmiş, Docker çalışıyor ve container'ları ayakta.

Hedefte pulse bağlı, Docker çalışıyor, container’lar ayakta.

Adım 4: Kaynak durdu

rdc repo list --machine <machine-name>

Kaynakta repository durdurulmuş ve unmount edilmiş: Docker yok, sıfır container. Image, gelecekteki delta transferleri için temel olarak tutulur.

Kaynak depoyu hâlâ listeliyor, ama açıkça: bağlı değil, Docker yok, sıfır container. Orada artık hiçbir şey çalışmıyor. Görüntü kasıtlı olarak bir sonraki delta aktarımı için temel olarak saklanır; bu sayede gelecekteki bir geri gönderim ucuz olur.

Adım 5: Sayaç saymaya devam etti

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

Yeni makinedeki loglar, sayacın checkpoint'in onu dondurduğu yerden devam ettiğini, bir'e sıfırlanmadığını gösteriyor. Süreç belleği yolculuğu tamamladı.

memory counter=17, sonra 18, 19, 20… Checkpoint’in dondurduğu yerden tam olarak devam etti, bire sıfırlanmadı. Süreç belleği de yolculuğa katıldı; uygulama makine değiştirdiğinin farkına bile varmadı.

--checkpoint olmadan migrate hâlâ diski ve container’ları taşır; hedefte uçuşta devam etmek yerine sıfırdan başlarlar.


Sonraki: Delta Aktarımı.