AWS EC2'den DigitalOcean'a Canlı Bir Uygulamayı Kesinti Olmadan Taşıma — Eksiksiz Kılavuz
Bu kılavuzda, çalışan uygulamanızı AWS EC2'den DigitalOcean'a nasıl taşıyacağınızı öğreneceksiniz.

AWS EC2'den DigitalOcean'a Canlı Bir Uygulamayı Kesinti Olmadan Taşıma — Eksiksiz Kılavuz

AWS EC2'den DigitalOcean'a çalışan bir uygulamayı hizmet kesintisi olmadan ve en düşük maliyetle taşımanın eksiksiz bir kılavuzu.
0 Hisse senetleri
0
0
0
0

AWS EC2'den DigitalOcean'a çalışan bir uygulamayı nasıl taşırım? — Adımlara genel bakış

Bu adım adım ve teknik kılavuzda, nasıl yapılacağını açıklıyoruz. AWS EC2'den DigitalOcean'a Canlı Bir Uygulamayı Nasıl Taşıyabilirsiniz? Minimum kesinti süresiyle ve güvenlik ile ağ hususlarını koruyarak aktarım gerçekleştirin.

  • Kaynakların ilk değerlendirmesi ve envanteri (EC2, EBS, RDS, S3, ELB, Güvenlik Grupları, IAM)
  • DigitalOcean'da hedef mimarinin tasarlanması (Droplet, VPC, Volumes, Spaces, Load Balancer, Managed DB)
  • Veri aktarımı (dosyalar, S3 → Spaces, Veritabanı → Yönetilen Veritabanı veya replika)
  • Uygulama dağıtımı (geri yükleme, konteynerleştirme veya App Platform/Kubernetes kullanarak)
  • Minimum kesinti süresiyle geçiş (çoğaltma, kayan IP, DNS TTL)
  • AWS temizliği ve son inceleme, güvenlik önlemleri ve izleme

1. Birinci Aşama — Değerlendirme ve Hazırlık

Kaynak kataloglama

İlgili tüm kaynakların eksiksiz bir listesini yapın: EC2 örnekleri, EBS birimleri ve anlık görüntüler, güvenlik grupları, yük dengeleyiciler, IAM rolleri/politikaları ve S3, RDS, ElastiCache ve CloudFront gibi diğer bağımlı hizmetler.

Uygulama türünü belirleyin. Gerekli: Uygulama durum bilgisi içeriyor mu (örneğin veritabanı ile), durum bilgisi içermiyor mu (örneğin ön uç), konteynerleştirilmiş mi yoksa GPU/işleme gerektiriyor mu?

İşlevsel ve konum ihtiyaçlarının belirlenmesi

Ağ gecikmesi, GPU gereksinimleri, maksimum IOPS ve çıkış bant genişliği gibi parametreleri belirtin.

Alım satım veya oyun için düşük ping'e ihtiyacınız varsa, son kullanıcılarınıza yakın bir konum seçin. DigitalOcean'ın da farklı bölgeleri var; size en yakın DigitalOcean veri merkezini kontrol edin.

2. DigitalOcean'da hedef mimarinin tasarlanması

Önerilen bileşenler

Mimari proje aşağıdaki unsurları içermektedir:

  • Damlacık Uygulamalar ve hizmetler için (VPS)
  • Yönetilen Veritabanları (Postgres / MySQL) çoğaltma ve yedekleme işlemlerinin karmaşıklığını ortadan kaldırmak için.
  • Uzaylar (S3 uyumlu) S3'ten nesne aktarımı için
  • Blok Depolama Birimleri Büyük veri ve kalıcılık için
  • Yük Dengeleyici Ve Yüzer IP Kesintisiz geçiş için
  • VPC Ağ izolasyonu ve erişim kontrolü için güvenlik duvarı.
  • GPU'lara ihtiyacınız varsa GPU sunucuları veya özel işlem sunucuları kullanın.

Damla Boyutu ve Türünün Seçimi

İşlemciye bağımlı uygulamalar için işlemci optimizasyonlu droplet'ler, bellek yoğun uygulamalar için ise yüksek RAM'li droplet'ler veya yönetilen hizmetler kullanın.

Alım satım veya oyun oynamak için, uygun bir konumda düşük ping ve özel ağ kaynaklarına sahip özel bir VPS önerilir.

3. Dosyaları ve nesneleri aktarın (S3 → Alanlar / EBS → Birim)

S3 → Alan Aktarımı

S3'ten Spaces'e nesne aktarmak için, S3 ile uyumlu araçlar kullanın, örneğin: rclone Veya s3cmd Kullanmak.

rclone config
rclone sync s3:my-bucket spaces:my-space --progress

Ayrıca AWS CLI ile dışa aktarabilir ve ardından DOCTL veya S3CMD ile yükleyebilirsiniz.

Sunucu dosya aktarımı (EBS → Droplet)

Büyük hacimli ve statik içerikler için rsync Senkronizasyon için şunu kullanın:

rsync -azP --delete -e "ssh -i /path/to/key.pem" ubuntu@ec2-ip:/var/www/ /home/ubuntu/www/

Bir anlık görüntüye ihtiyacınız varsa, öncelikle EBS'den bir anlık görüntü alın, içeriğini sıkıştırın ve ardından Droplet'e aktarın.

4. Veritabanı geçişi (RDS → Yönetilen veritabanı veya kendi sunucunuzda barındırılan veritabanı)

Veritabanı türüne göre seçenekler

MySQL/MariaDB:

Kesinti süresini en aza indirmek için DigitalOcean'da bir kopya oluşturun ve ardından geçiş işlemini gerçekleştirin. RDS kullanıyorsanız:

  1. DigitalOcean'da Yönetilen Bir Veritabanı Oluşturun.
  2. RDS'den harici bir kopya oluşturun veya mysqldump kullanın.
mysqldump -u user -p --single-transaction --quick --lock-tables=false dbname > dump.sql
mysql -h do-managed-host -u user -p dbname < dump.sql

PostgreSQL: Neredeyse sıfır kesinlik durumunda mantıksal çoğaltma (pg_dump/pg_restore) veya akışlı çoğaltma önerilir.

pg_dump -Fc -h aws-rds-host -U user dbname > db.dump
pg_restore -d dbname -h do-host -U user db.dump

Kesintisiz çözüm (MySQL örneği)

Genel süreç:

  1. AWS'de ikili günlük kaydını etkinleştirin.
  2. DigitalOcean üzerinde bir MySQL replika sunucusu oluşturun ve bunu AWS üzerindeki ana sunucuya bağımlı (slave) olarak bağlayın.
  3. Senkronizasyon tamamlandıktan sonra, uygulamayı kopyaya yükleyin ve etkinleştirin.

5. Uygulama Dağıtımı — Seçenekler ve Komutlar

Yöntem 1 — Konteynerleştirme ve Kayıt Sistemi

Docker/Kubernetes ile konteynerleştirme, AMI'ye bağımlı kalmadan geçiş yapmanın en iyi yoludur. CI'da imajı oluşturun ve Docker Hub veya GitLab Registry'ye gönderin.

DigitalOcean'da, Docker Compose ile Yönetilen Kubernetes veya droplet'ler kullanabilirsiniz.

docker-compose pull
docker-compose up -d --remove-orphans

Yöntem 2 — Geleneksel Onarım

Geleneksel yöntemde, paketleri kurarsınız, kodu rsync ile aktarırsınız ve servisi systemd veya PM2 gibi bir işlem yöneticisiyle çalıştırırsınız.

npm install --production
pm2 start app.js --name myapp

Uygulama Platformu ve Yönetilen Hizmetlerin Kullanımı

DigitalOcean App Platform, CI/CD, otomatik ölçeklendirme ve otomatik SSL sağlayabilir ve düşük seviyeli bir sunucuyu yönetmek istemiyorsanız web uygulamaları için uygundur.

6. Ağ, Güvenlik ve Kesintisiz Geçiş

Yüzer IP ve Yük Dengeleyici

Kesintisiz geçiş için DigitalOcean'da bir Yük Dengeleyici kurabilir ve kullanabilirsiniz. Yüzer IP Ya da farklı bir hedef kitle kullanın.

Strateji mavi-yeşil Genellikle şu adımları içerir:

  1. DO'da yeşil bir ortam oluşturmak ve uygulamayı tamamen yayınlamak.
  2. Sağlık kontrolleri
  3. Yük dengeleyicide kayan IP adresini değiştirmek veya hedef grubu değiştirmek

DNS TTL azaltımı Yayılımı hızlandırmak için ön geçiş yapmayı (örneğin TTL=300s veya daha az) unutmayın.

Güvenlik duvarı ve güvenlik

DigitalOcean hesabınıza bir SSH anahtarı ekleyin ve parola ile giriş yapmayı devre dışı bırakın:

Edit /etc/ssh/sshd_config: PermitRootLogin no, PasswordAuthentication no

UFW'yi temel erişim yönetimi için kullanın:

sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable

DigitalOcean'da bulut güvenlik duvarını kullanın ve AWS'deki güvenlik gruplarına benzer kurallar uygulayın. Kurulum başarısız2ban Ayrıca Certbot ile SSL kullanılması veya Yük Dengeleyici tarafından yönetilen bir sertifika kullanılması da önerilir.

7. Operasyonel İpuçları ve Komut Dosyaları

doctl Örnekleri

DO CLI kurulumu ve kimlik doğrulaması:

doctl auth init --access-token <TOKEN>

Damlacık oluşturma örneği:

doctl compute droplet create my-droplet --size s-2vcpu-4gb --image ubuntu-22-04-x64 --region nyc3 --ssh-keys <KEY_ID> --vpc-uuid <VPC_ID> --wait
doctl compute cdn create --origin my-space.nyc3.digitaloceanspaces.com ...

artımlı senkronizasyon için rsync

rsync -azP --delete -e "ssh -i ~/.ssh/do_key" /var/www/ user@do-ip:/var/www/

8. Geçiş Sonrası — Test ve Optimizasyon

Performans değerlendirmesi ve izleme

Prometheus/Grafana veya New Relic gibi araçlarla logları, gecikmeyi ve veri aktarım hızını inceleyin. ab veya siege gibi araçlarla yük testi yapın ve IOPS ile ağ bant genişliğini kontrol etmek çok önemlidir.

Yedekleme ve Felaket Kurtarma

Droplet'ler ve Yönetilen Veritabanları için anlık görüntüleri ve otomatik yedeklemeleri etkinleştirin ve geri yükleme planını test edin.

9. Maliyet ve kaynak yönetimi ipuçları

AWS (EC2 + EBS + RDS + S3) ve DO kombinasyonu (Droplet'ler + Birimler + Yönetilen Veritabanı + Alanlar) arasındaki maliyetleri karşılaştırın.

Uygulamanız geniş bir ağ gerektiriyorsa, CDN ve BGP/Anycast kullanımı küresel gecikmeyi azaltabilir.

10. Sık karşılaşılan sorunlar ve çözümler

  • Veritabanı sürümü farkı → Mantıksal dökümler kullanılarak, hazırlık ortamında uyumluluk testi ve geçiş işlemleri.
  • Büyük dosyalar ve yavaş aktarımlar → tar+gzip sıkıştırma, rsync ile devam ettirme ve içerik dağıtımı için Spaces kullanımı.
  • Geçiş sonrasında SSL ve CORS hataları → Sertifika zincirini ve Nginx/Yük Dengeleyici ayarlarını kontrol edin.

11. Yük Dengeleyici ve Yukarı Akış Droplet'leri için Örnek Nginx Yapılandırması

upstream app {
    server 10.0.0.5:3000;
    server 10.0.0.6:3000;
}
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://app;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

12. Güvenlik ipuçları ve en iyi uygulamalara uyum

  • Kullanımı SSH Anahtarları ve aktivasyon 2FA bulut hesaplarında
  • IAM erişimini ve API anahtarlarını kısıtlama
  • Güvenlik açığı taramaları ve yama yönetimi gerçekleştirme
  • Gerekiyorsa DDoS korumasını ve WAF'ı etkinleştirin.

Çözüm

Canlı bir uygulamayı AWS EC2'den DigitalOcean'a taşımak zorlu bir süreçtir, ancak dikkatli envanter yönetimi, veritabanı replikasyonu ve geçiş için Floating IP veya Yük Dengeleyici kullanımı gibi doğru planlama ile kesinti süresini en aza indirebilir ve Droplet'lerden, Spaces'lerden ve Yönetilen Veritabanlarından faydalanabilirsiniz.

Ekip, özellikle GPU'lar, özel işlem veya oyun VPS'leri, CDN'ler ve karmaşık ağ çözümleri gerektiren senaryolar için altyapı tasarımı ve uygulamasına yardımcı olmaya hazırdır.

Sıkça Sorulan Sorular

Ayrıca Şunları da Beğenebilirsiniz

CentOS 6/7'ye IBSng nasıl kurulur

CentOS 6/7'de IBSng Kurulum Eğitimi Bu makalede, centOS 6/7'de IBSng kurulum eğitimi size yardımcı olmak için sağlanmıştır…

Sunucu nasıl kurulur?

Giriş Hazır sunucu kiralamak veya satın almak, özellikle küçük şirketler için güvenli bir tercihtir. Ancak,…