VPS taşıma kontrol listesi: yedekler, DNS, TLS ve geri alma
Kendi kendine barındırılan bir uygulama için pratik bir taşıma sırası: envanter, tutarlı yedekler, test edilmiş bir hedef, kontrollü yazmalar, DNS geçiş ve bir geri yükleme yolu.
Bir bakışta
Kontrollü bir VPS taşıması hizmetlerin ve verilerin envanterini çıkarır, tutarlı bir yedek oluşturur, geri yüklenmiş bir hedefi doğrular, ana makine adı ve TLS yönlendirmesini test eder, son yazmaları ve DNS koordine eder ve veri farkındalıklı bir geri alma sağlar. Hiçbir kontrol listesi tek başına sıfır kesinti garantilemez.
Taşımadan önce uygulamanın envanterini çıkarın
Uygulamanın çalışması için gereken hizmetleri, sürümleri, portları, zamanlanmış görevleri, veritabanlarını, yüklenen dosyaları ve yapılandırmayı listeleyin. Yazmaların nerede gerçekleştiğini ve hangi harici hizmetlere bağlı olduğunu belirleyin. Veriler başka bir yerdeyse, kopyalanmış bir web dizini tam bir taşıma değildir.
Mevcut DNS adlarını, etkin IPv4 ve IPv6 kayıtlarını, sertifika yenileme yöntemlerini ve bir kurtarma erişim yolunu kaydedin. Sırları özel dağıtım araçlarınızda saklayın. Parolaları, özel anahtarları veya veritabanı dökümlerini herkese açık bir belge köküne ya da paylaşılan bir taşıma kontrol listesine koymayın.
Tutarlı bir yedek oluşturun ve geri yüklendiğini kanıtlayın
Yazmalar devam ederken rastgele dosyaları kopyalamak yerine veritabanının desteklediği yedekleme mekanizmasını kullanın. SQLite için Online Backup API, tutarlı bir veritabanı anlık görüntüsü oluşturur. WAL modunda, WAL dosyası kalıcı veritabanı durumuna katılır; bu nedenle yalnızca ana veritabanı dosyasını kopyalamak işlenmiş değişiklikleri atlayabilir.
Tutarlı bir veritabanı yedeği, ayrı olarak saklanan yüklemeler, kuyruklar veya dosyalarla otomatik olarak tutarlı değildir. Bunların alınmasını uygulamanızla koordine edin. Ayrı bir test konumuna geri yükleyin ve yedeği kullanılabilir saymadan önce kayıtları, dosya referanslarını ve uygulama davranışını doğrulayın.
DNS değiştirmeden önce hedefi hazırlayın
Yeni sunucuda amaçlanan kullanıcıları, izinleri, çalışma zamanı sürümlerini, hizmetleri ve uygulama dizinlerini oluşturun. Test yedeğini hedef veri konumuna, uygun olduğunda herkese açık web kökünün dışına geri yükleyin. Uygulamayı gerçekte çalıştıracak hizmet hesabını kullanarak sahipliği ve erişimi kontrol edin.
Paylaşılan bir sunucudaki ilgisiz siteleri koruyun. Ayrılmış bir belge kökü, sanal ana makine ve çalışma zamanı kullanın, web sunucusu yapılandırmasını doğrulayın ve yalnızca bu değişikliğe ait dosya ve yapılandırmayı geri yükleyen bir geri alma hazırlayın.
Gerçek ana makine adını ve sertifikayı yeni sunucuda test edin
Çıplak bir IP adresine yapılan tarayıcı isteği, ana makine adına dayalı yönlendirmeyi veya sertifika doğrulamasını yeniden üretmez. curl --resolve, bir testin normal ana makine adı ve TLS kontrollerini korurken amaçlanan ana makine adını ve seçilen hedef IP'yi kullanmasını sağlar. HTTP durumunu ve beklenen uygulama içeriğini de kontrol edin. Örnek yalnızca belgeleme değerlerini kullanır; bunları kendi doğrulanmış alan adınız ve hedefinizle değiştirin.
Bu testin geçmesi için geçerli bir sertifika ve izin verilen bir ağ yolunun zaten mevcut olması gerekir. Taşımayı hazır ilan etmek için sertifika doğrulamasını asla devre dışı bırakmayın. DNS tabanlı ACME doğrulaması, bir alan adının web sunucusu adresini değiştirmeden doğrulayabilir; HTTP tabanlı doğrulamanın erişilebilirlik gereksinimleri farklıdır. Yenilemeyi ilk düzenlemeden ayrı olarak test edin.
curl --fail-with-body --show-error --resolve example.com:443:203.0.113.10 https://example.com/Bir yazma kontrolü ve son eşitleme planı seçin
Kısa bir bakım dönemi veya uygulamaya uygun başka bir tutarlılık mekanizması planlayın. Belirlediğiniz yazıcıları durdurun veya yönlendirin, son tutarlı veritabanı yedeğini alın, ilgili değişebilir dosyaları eşitleyin ve sonucu doğrulayın. Kuyruk çalışanları, webhook'lar ve cron görevleri, genel arayüz sessiz görünse bile yazabilir.
Dosya eşitlemeden önce bir deneme çalıştırması yapın. Kısayol olarak silme bayrakları eklemeyin veya tüm sistem dizinlerini kopyalamayın. Yeni uygulamayı kontrol edip yazmalar için hangi konumun yetkili olduğunu belirleyene kadar eski hizmeti kurtarılabilir tutun.
DNS değiştirin, sonra her iki adres ailesini de gözlemleyin
Hizmet için gereken kayıtları güncelleyin ve mevcut çözümleyici önbelleklerini hesaba katın. Yetkili yanıtları ve birkaç normal istemci yolunu kontrol edin. Eskimiş bir AAAA kaydı etkin kalırsa, IPv6 istemcileri eski sunucuya ulaşmaya devam ederken IPv4 istemcileri yeni sunucuya ulaşabilir.
Yeni hizmette oturum açmayı, okumaları, yazmaları, yüklemeleri, arka plan işlerini ve harici geri çağrıları test edin. Geçiş sırasında aynı uygulamanın iki bağımsız yazılabilir kopyasını çalıştırmaktan kaçının. Hâlâ eski hedefe ulaşan trafiği ele almak için net bir kural bulundurun.
Geri almayı bir DNS kararı olduğu kadar bir veri kararı da yapın
Geri almayı tetikleyen arıza koşullarını ve geçişi kimin kontrol ettiğini tanımlayın. Yeni yazmalar hedefe ulaştıktan sonra yalnızca DNS geri almak yeterli değildir: daha eski bir kopyaya dönmeden önce bu veriyi korumalı veya uzlaştırmalısınız.
Kaynağı ve yedekleri uygun bir kurtarma süresi boyunca saklayın. Eski erişimi kaldırın ve kaynakları yalnızca hedef, yedekler, yenileme ve izleme kontrol edildikten sonra devre dışı bırakın. Saklama ve silme, genel bir sabit saat sayısını değil gerçek hizmet politikasını izlemelidir.