Bir siteyi yeni sunucuya kesintisiz taşımak
TTL'i düşür, kopyala, test et, son farkı eşitle, DNS'i çevir. Ziyaretçilerin hiçbir şey fark etmediği bir taşımanın adımları.
Sunucu taşımalarının çoğu aynı hatayla bozulur: önce DNS çevrilir, sonra her şeyin çalıştığı umulur. Ben sırayı tersine çeviriyorum. Yeni sunucu tamamen hazır ve test edilmiş olmadan hiçbir kayıt değişmiyor.
1. TTL değerini önceden düşür
DNS kayıtları, TTL süresi boyunca ziyaretçilerin bilgisayarlarında ve sağlayıcılarda önbellekte kalır. TTL 24 saatse, değişikliğin herkese ulaşması bir gün sürebilir.
Taşımadan en az bir gün önce ilgili kayıtların TTL değerini 300 saniyeye düşürüyorum. Taşıma günü geldiğinde eski değerin süresi dolmuş oluyor.
2. Dosyaları kopyala
rsync kopyayı tekrar çalıştırdığında sadece değişen dosyaları gönderir. Bu yüzden ilk kopyayı rahatça önceden alabilirsin:
rsync -azP --delete /var/www/site/ deploy@yeni-sunucu:/var/www/site/3. Veritabanını aktar
PostgreSQL için özel format döküm hem küçük hem de geri yüklemesi esnektir:
pg_dump -Fc site_db | ssh deploy@yeni-sunucu "pg_restore --no-owner -d site_db"MySQL kullanıyorsan aynı işi mysqldump --single-transaction ile yaparsın.
4. DNS'e dokunmadan test et
Kendi bilgisayarındaki hosts dosyasına yeni sunucunun adresini yazınca, alan adı sadece senin için yeni sunucuya gider:
203.0.113.24 example.com www.example.comGiriş, form gönderme, ödeme, e-posta. Ne varsa tek tek denerim. SSL sertifikasını da bu aşamada DNS doğrulamasıyla alabilirsin.
5. Son farkı eşitle ve çevir
Kısa bir bakım penceresi açıp yazmayı durdururum, rsync ve veritabanı aktarımını son kez çalıştırırım. Ardından DNS kayıtlarını yeni adrese çeviririm. Düşük TTL sayesinde trafik birkaç dakika içinde yeni sunucuya geçer.
6. Eski sunucuyu hemen kapatma
Eski sunucuyu en az bir hafta açık tutuyorum. Bir şey ters giderse DNS'i geri çevirmek tek adımdır. Her şey yolunda gidince TTL değerini yeniden yükseltip eski sunucuyu kapatıyorum.
Aklında bir proje mi var?
Bir fikir, yarım kalmış bir iş ya da taşınması gereken bir sunucu. Ne olursa yaz, aynı gün dönerim.
İletişime geç
