Her taşıma korku hikâyesinin ortası aynıdır: biri önce DNS'i değiştirmiş, sonra kopyalamaya başlamıştır. Taşıma sırasındaki kesinti neredeyse hiçbir zaman kopyalamanın yavaş olmasından kaynaklanmaz. Adımların yanlış sırayla atılmasından kaynaklanır.
İşte işe yarayan sıra; ister başka bir sağlayıcıdan ayrılıyor olun, ister tarifelerimizden ikisi arasında geçiş yapıyor olun.
1. İki gün önce: TTL'i düşürün
Değiştireceğiniz DNS kayıtlarını bulun (genellikle A, AAAA ve onları gösteren CNAME'ler) ve TTL'lerini 300 saniyeye düşürün. Sonra en az eski TTL kadar bekleyin. TTL'i bir gün olan bir kayıt, bazı çözümleyicilerin değişiklikten sonra bir gün daha eski adresi vereceği anlamına gelir ve sunucuda yapacağınız hiçbir şey bunu hızlandıramaz.
İnsanların atladığı adım budur ve beş dakikalık bir geçişi, kullanıcıların yarısının eski sunucuyu gördüğü bir güne çeviren de budur.
2. Eski sunucunun envanterini çıkarın
Bu makineyi başka bir yerde yeniden kuracaksınız, o yüzden gerçekte ne yaptığını yazın. Hatırladığınızı değil. Yaptığını:
ss -tlnp # what is listening, and which process
crontab -l; ls /etc/cron.d # scheduled jobs
systemctl list-timers --all # the scheduled jobs people forget
systemctl list-units --type=service --state=running
Listeye şunları da ekleyin: TLS sertifikaları ve nasıl yenilendikleri, gizli bilgiler içeren ortam dosyaları, güvenlik duvarı kuralları, kullanıcılar ve SSH anahtarları, veritabanı ve boyutu, ayrıca sunucuyla IP adresi üzerinden konuşan her şey. Son grup sinsi olanıdır: bir iş ortağının izin listesi, bir ödeme sağlayıcısının webhook ayarları, bir izleme kontrolü.
3. Yeni sunucuyu eskisinin yanında kurun
Yeni sunucuyu sipariş edin, eskisine dokunmayın. VPS listesinden, size satılan değil gerçekten kullandığınız kadar ya da daha fazla diski olan bir tarife seçin. Eski makine herhangi bir gelen trafik alıyorsa (bir web sitesi, webhook'lar, bir API), yenisinin kendi IPv4'ü olmalı. NAT tarifesi gelen bağlantıları yalnızca SSH portunda kabul eder; bunun neden önemli olduğunu tek bir yönlendirilmiş portun yapabildikleri ve yapamadıkları yazısı anlatıyor.
Bağlanın, aynı paketleri kurun, kullanıcıları ve güvenlik duvarını yeniden oluşturun. Anahtarlar ve ilk giriş bağlantı rehberinde anlatılıyor.
4. Dosyaları iki kez eşitleyin
İlk eşitleme, eski sunucu çalışmaya devam ederken her şeyi kopyalar. Saatler sürebilir; sorun değil.
rsync -aHAX --numeric-ids --info=progress2 /var/www/ root@203.0.113.10:/var/www/
--numeric-ids dosya sahipliklerini numaraya göre korur; böylece iki sistem kullanıcıları farklı sırayla oluşturduğunda yaşanan klasik “her şey yanlış kullanıcıya ait” sürprizinden kaçınırsınız. SSH üzerinden rsync'i hiç kullanmadıysanız, bir VPS'e dosya aktarmak adım adım anlatıyor.
İkinci eşitleme, geçişten hemen önce, yalnızca ilkinden sonra değişenleri kopyalar. Genellikle saniyeler sürer.
5. Veritabanını bilinçli taşıyın
Dosyalar kolaydır. Yazma alan bir veritabanı, “kesintisiz” ifadesinin ya küçük bir taviz ya da daha fazla emek gerektirdiği tek yerdir.
Basit yol: test için bir kez döküm alıp geri yüklemek, geçiş anında yazmaları bir dakikalığına durdurmak (uygulamayı salt okunur moda almak ya da durdurmak), taze bir döküm almak, yeni sunucuya geri yüklemek ve uygulamayı orada başlatmak. Küçük projelerin çoğu için bu, önceden duyurulan bir iki dakikalık bir duraklamadır.
Duraklamasız yol: eski veritabanından yenisine replikasyon kurmak, yetişmesini beklemek ve geçiş anında yenisini birincil yapmak. Daha fazla kurulum gerektirir ve bir dakikalık kayıp yazmanın bile kabul edilemediği durumlarda buna değer.
6. Yeni sunucuyu başkası görmeden test edin
DNS hâlâ eski sunucuyu gösteriyor, yani yenisini gizlice test edebilirsiniz. Gerçek alan adınız için yeni adrese bir istek gönderin:
curl --resolve example.com:443:203.0.113.10 https://example.com/health
Sertifika henüz yoksa aynı şekilde HTTP üzerinden test edin ya da hosts dosyanıza geçici bir satır ekleyip siteyi tarayıcıda gezin. Girişleri, yüklemeleri, arka plan işlerini ve giden e-postayı kontrol edin. Eksik bir PHP eklentisini bulmanın en ucuz anı budur.
7. Geçiş yapın ve eski sunucuyu açık tutun
Son dosya eşitlemesini ve veritabanı adımını yapın, ardından DNS kayıtlarını değiştirin. 300 saniyelik TTL ile trafiğin çoğu dakikalar içinde taşınır. Eski sunucunun erişim günlüğünü izleyin: TTL'i görmezden gelen çözümleyicilerden ve istemcilerden oraya hâlâ ince bir istek akışı gelecektir. Birkaç gün değiştirmeden açık tutun. Sonra eski IP'yi gösteren her şeyi güncelleyin: iş ortaklarının izin listeleri, webhook URL'leri ve e-posta için yeni adresin ters DNS'i (özel IP'li tarifelerimizde bunu kendiniz ayarlarsınız, bkz. ters DNS) ile SPF kaydınız.
En sık bozulanlar
Kabaca karşılaştığımız sıklık sırasıyla: kimsenin listelemediği bir systemd zamanlayıcısı, eski IP'nin sabit yazıldığı bir yapılandırma dosyası, yanlış kullanıcıya ait dosyalar, uygulamanın kendi portunu engelleyen bir güvenlik duvarı, eski sunucuda yenilenip yenisinde yenilenmeyen bir sertifika ve yeni adresin henüz ters DNS'i olmadığı için spama düşen e-postalar.
Bu kontrol listesinin uymadığı yerler
Sürekli yazma alan ve duraklamaya hiç tahammülü olmayan yoğun bir veritabanı, blog kontrol listesine değil gerçek bir replikasyona ve bir provaya ihtiyaç duyar. Windows sunucular rsync'ten farklı araçlarla taşınır. Taşımanın asıl nedeni boyutsa, önce şunu okuyun: burada tarifeler yerinde büyür. Aynı ağ türünden daha büyük bir tarifeye geçmek, hiçbir taşıma yapmadan tek bir yeniden başlatmayla vCPU, RAM ve disk ekler. Yeni sunucu yalnızca küçülmek için gerekir. Makinenin yetip yetmediğinden emin olmadığınız için taşınıyorsanız, gerçekten 64 GB RAM'e ne zaman ihtiyacınız var sizi bu yolculuktan kurtarabilir; VPS'in doğru yer olup olmadığından emin değilseniz VPS mi, paylaşımlı hosting mi, dedicated sunucu mu, bulut mu yardımcı olur.
Yorumlar
Henüz yorum yok. İlk olun.