Blogchevron_rightSunucu Yönetimichevron_rightDocker Swarm: Gelişmiş Servis Dağıtımı ve Güncelleme

Docker Swarm: Gelişmiş Servis Dağıtımı ve Güncelleme

S
Serversium
calendar_today27 Mayıs 2026
schedule5 dk okuma
Docker Swarm: Gelişmiş Servis Dağıtımı ve Güncelleme

Docker Swarm Üzerinde Gelişmiş Servis Dağıtımı ve Güncelleme

Docker Swarm, container orkestrasyonunun en güçlü araçlarından biridir ve modern mikrohizmet mimarilerinin temelini oluşturur. 2024 itibarıyla, kurumsal uygulamaların %67'si container tabanlı dağıtım kullanırken, bu oranın %45'i Docker Swarm veya Kubernetes tercih etmektedir. Bu kılavuzda, Docker Swarm üzerinde sunucu altyapısı üzerinde gelişmiş servis dağıtımı ve güncelleme stratejilerini detaylı olarak ele alacağız.

Docker Swarm Mimarisi ve Temel Kavramlar

Docker Swarm, Docker'ın native orkestrasyon çözümüdür ve Manager-Worker mimarisi üzerine inşa edilmiştir. Manager node'lar küme yönetimini üstlenirken, Worker node'lar container'ları çalıştırır.

Swarm Modu Etkinleştirme

Docker Swarm kullanmaya başlamak için öncelikle swarm modunu etkinleştirmeniz gerekir. Aşağıdaki komutla yeni bir swarm cluster oluşturabilirsiniz:

docker swarm init --advertise-addr <MANAGER_IP>

Manager node'lar, Raft consensus algorithm kullanarak küme durumunu tutarlı şekilde yönetir. Bu, üç veya daha fazla manager node önerildiği anlamına gelir; çünkü çoğunluk olmadan küme çalışmaya devam edemez.

Node Türleri ve Rolleri

Docker Swarm'da iki temel node türü bulunur:

  • Manager Node: Swarm yönetimi, servis oluşturma ve scheduling işlemlerinden sorumludur.
  • Worker Node: Servislerin çalıştığı ve container'ları barındıran node'lardır.

Yüksek kullanılabilirlik için minimum 3 manager node önerilir. Manager node sayısı arttıkça, kümenin dayanıklılığı artar ancak consensus süresi uzar.

Gelişmiş Servis Dağıtım Stratejileri

Docker Swarm'da servis dağıtımı, tek komutla basitçe yapılabileceği gibi, karmaşık yapılandırma dosyaları ile de gerçekleştirilebilir. İşte en yaygın kullanılan dağıtım yöntemleri:

1. Replica Sayısı ile Dağıtım

Temel replica tabanlı dağıtım, belirli sayıda container'ın çalışmasını garanti eder:

docker service create \
  --name web-servisi \
  --replicas 3 \
  -p 80:80 \
  nginx:latest

Bu komut, nginx imajından 3 replica oluşturur ve yük dengeleme otomatik olarak aktif hale gelir.

2. Global Servisler

Global servisler, her worker node üzerinde tam olarak bir container çalıştırır:

docker service create \
  --name log-collector \
  --mode global \
  -v /var/log:/var/log \
  fluent/fluentd:latest

Bu yapılandırma, özellikle log toplama ve izleme araçları için idealdir.

3. Deploy Specifikasyonu ile YAML Dosyası

Karmaşık yapılandırmalar için docker-compose.yml formatını kullanabilirsiniz:

version: '3.8'
services:
  api:
    image: myapi:latest
    deploy:
      replicas: 5
      update_config:
        parallelism: 2
        delay: 10s
        failure_action: rollback
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
    environment:
      - NODE_ENV=production
    secrets:
      - db_password

Bu YAML dosyası, güncelleme stratejisi, restart politikası ve secret yönetimini tek bir yapılandırmada birleştirir.

Rolling Update Mekanizması

Docker Swarm'ın en güçlü özelliklerinden biri olan rolling update, sıfır kesinti ile uygulama güncellemeleri yapmanızı sağlar.

Update Config Parametreleri

Rolling update davranışını kontrol eden kritik parametreler:

ParametreAçıklamaÖnerilen Değer
parallelismAynı anda güncellenen container sayısı1-2
delayGüncellemeler arası bekleme süresi10-30s
failure_actionHata durumunda yapılacak işlempause/rollback/continue
monitorGüncelleme başarısı kontrol süresi5s-30s

Örnek Rolling Update Uygulaması

docker service update \
  --image myapi:v2.0.0 \
  --update-parallelism 2 \
  --update-delay 15s \
  --update-failure-action rollback \
  --update-monitor 10s \
  --update-max-failure-ratio 0.3 \
  myapi-servisi

Bu komut, servisi v2.0.0 sürümüne günceller. Her seferinde 2 container güncellenecek, 15 saniye beklenecek ve %30'dan fazla hata durumunda otomatik rollback yapılacaktır.

Manual Rollback İşlemi

Güncelleme sırasında bir sorun oluşursa, anında önceki sürüme dönebilirsiniz:

docker service rollback myapi-servisi

Rollback işlemi de tıpkı güncelleme gibi rolling update olarak gerçekleşir, yani kesinti yaşanmaz.

Health Check Yapılandırması

Container sağlığını izlemek, servis güvenilirliği için kritik öneme sahiptir. Docker, container içi health check mekanizması sunar.

HEALTHCHECK Direktifi

Dockerfile'da health check tanımlama:

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm ci --only=production

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1

CMD ["node", "server.js"]

Health check parametreleri:

  • --interval: Kontroller arası süre (varsayılan: 30s)
  • --timeout: Timeout süresi (varsayılan: 30s)
  • --start-period: Başlangıç bekleme süresi (varsayılan: 0s)
  • --retries: Başarısız sayısı (varsayılan: 3)

Service Health Yönetimi

Swarm'da servis düzeyinde health durumunu kontrol edebilirsiniz:

docker service ls --filter "health=healthy"
docker inspect --format='{{.Status.Health}}' <container_id>

Health check başarısız olan container'lar otomatik olarak yeniden başlatılır veya devre dışı bırakılır.

Secret Yönetimi ve Güvenlik

Docker Swarm, hassas verilerin (şifreler, API anahtarları, sertifikalar) güvenli yöetimini sağlar. Secrets, Raft encrypted store'da saklanır ve sadece yetkili container'lara iletilir.

Secret Oluşturma

echo "mysecretpassword" | docker secret create db_password -
docker secret create ssl_certificate /path/to/cert.pem

Secret Kullanımı

Secret'leri servisinizde kullanmak için:

docker service create \
  --name db-servisi \
  --secret db_password \
  --secret ssl_certificate \
  postgres:latest

Container içinde secret'ler /run/secrets/ dizininde erişilebilir durumdadır.

Güvenlik açısından, üretim ortamlarında veri merkezi seçimi ve secret yönetimi birlikte değerlendirilmelidir. SSL sertifikaları için NGINX SSL sertifika yönetimi rehberimizi inceleyebilirsiniz.

Networking ve Servis Keşfi

Docker Swarm, otomatik servis keşfi ve yük dengeleme sunar. Her servis, kendi sanal IP'si üzerinden erişilebilir durumdadır.

Overlay Network

Swarm modunda varsayılan olarak kullanılan overlay network, birden fazla host üzerinde container'ların birbiriyle iletişimini sağlar:

docker network create --driver overlay --attachable my-overlay-network

Overlay network, VXLAN teknolojisi kullanarak izole edilmiş bir ağ katmanı oluşturur.

Servisler Arası İletişim

Servis isimleri DNS ile otomatik olarak çözümlenir:

# web-servisi, db-servisi'ne bu şekilde erişir
# db-servisi:5432
docker service create \
  --name web-servisi \
  --network my-overlay-network \
  --env DB_HOST=db-servisi \
  mywebapp:latest

Swarm, DNS tabanlı yük dengeleme yaparak istekleri replica'lar arasında dağıtır.

Yük Dengeleme ve Dış Erişim

Ingress Mesh Routing

Docker Swarm, dış trafiği servislere dağıtmak için ingress mesh routing kullanır. Bir portu publish ettiğinizde, bu port tüm node'larda erişilebilir hale gelir:

docker service create \
  --name web-servisi \
  -p 8080:80 \
  --replicas 4 \
  nginx:latest

Bu yapılandırmada, hangi node'a istek atarsanız atın, istek uygun replica'ya yönlendirilir.

Harici Yük Dengeleyici Entegrasyonu

Büyük ölçekli dağıtımlarda, harici yük dengeleyici kullanmanız önerilir. Nginx veya HAProxy ile Docker Swarm entegrasyonu için SSL sertifika yönetimi rehberimizi inceleyebilirsiniz.

Yüksek Kullanılabilirlik ve Ölçeklendirme

Swarm'da yüksek kullanılabilirlik, replica sayısı ve dağıtım stratejileri ile sağlanır.

Otomatik Ölçeklendirme

Docker Swarm native olarak otomatik ölçeklendirme sunmaz, ancak harici araçlarla veya script'lerle gerçekleştirilebilir:

# CPU kullanımına göre replica sayısını ayarlama
#!/bin/bash
while true; do
  CPU=$(docker stats --no-stream --format "{{.CPUPerc}}" | head -1 | sed 's/%//')
  if (( $(echo "$CPU > 80" | bc -l) )); then
    docker service scale web-servisi=10
  elif (( $(echo "$CPU < 30" | bc -l) )); then
    docker service scale web-servisi=3
  fi
  sleep 60
done

Bu basit script, CPU kullanımına göre replica sayısını dinamik olarak ayarlar.

Update Strategy Türleri

StratejiAçıklamaKullanım Senaryosu
rollingVarsayılan. Sırayla güncelleme yapar.Genel kullanım
duplicateYeni replica'ları ekleyerek günceller.Mavi-yeşil deployment
delayedBelirli aralıklarla günceller.Test ortamları

Bu stratejileri uygulamak için deploy bölümünde update_strategy parametresini kullanabilirsiniz.

İzleme ve Troubleshooting

Swarm cluster'ınızı izlemek ve sorunları teşhis etmek için çeşitli araçlar mevcuttur.

Temel İzleme Komutları

# Servis durumunu izleme
docker service ls
docker service ps <servis_adı>

# Servis detayları
docker service inspect <servis_adı>

# Container logs
docker service logs -f <servis_adı>

# Kaynak kullanımı
docker stats $(docker ps --filter=mode=replicated -q)

Daemon Log Analizi

Swarm sorunlarını teşhis etmek için daemon log'larını inceleyin:

journalctl -u docker -f --since "1 hour ago"
# veya
docker info | grep -i swarm

Ağ sorunları için ağ optimiz

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward