Docker Swarm Nedir?

Sayfayı kopyala
💡 Özet (TL;DR):
- Docker Swarm Nedir?: Birden fazla fiziksel veya sanal makineyi tek bir sanal Docker sunucusu (küme/cluster) haline getiren, Docker ile yerleşik (built-in) gelen hafif bir konteyner orkestrasyon aracıdır.
- Temel Yapı: Swarm kümeleri, yönetimsel kararları alan Manager düğümleri (node) ve iş yüklerini çalıştıran Worker düğümlerinden oluşur.
- Raft Konsensusu: Sistemin hata toleranslı çalışabilmesi ve veri tutarlılığını (quorum) koruyabilmesi için Manager düğüm sayısının her zaman tek sayıda (en az 3) olması kritik bir gereksinimdir.
"Docker Nedir?" yazımda "Docker'ı öğrendikten sonraki adım Docker Swarm öğrenmek olacaktır" demiştim. Bu yazıda kısaca Docker Swarm'dan bahsetmek istiyorum.
Eğer Docker adını ilk defa duyuyorsanız veya daha detaylı bilgi edinmek istiyorsanız öncelikle Docker Nedir? başlıklı yazımı okumanızı önerir ederim.
Konteyner Orkestrasyonu: Docker Swarm vs. Kubernetes
| Özellik | Docker Swarm | Kubernetes (K8s) |
|---|---|---|
| Kurulum & Yapılandırma | Son derece kolay (Dahili swarm init) | Oldukça karmaşık ve uzmanlık gerektirir |
| Öğrenme Eğrisi | Düşük (Standart Docker CLI komutları) | Yüksek (Çok sayıda yeni kavram ve YAML yapısı) |
| Ölçeklenebilirlik | Küçük ve orta ölçekli projeler için ideal | Dev ölçekli, çoklu bulut (multi-cloud) yapılar için standart |
| Dahili Yük Dengeleyici | Evet (Ingress routing mesh entegredir) | Evet (Ingress Controller yapılandırılması gerekir) |
Docker Swarm Nedir?
Docker Swarm, fiziksel veya sanal sunucuların bir küme (cluster) halinde Docker uygulamalarını çalıştırabildikleri sunucu havuzuna verilen isimdir. Makineleri bir küme haline getirdikten sonra, konteynerlerinizi sadece tek bir makinede değil, bu makine kümesinin tamamı üzerinde ölçekleyerek çalıştırabilirsiniz.
Swarm'ın sağladıkları tabii ki bu kadarla sınırlı değil:
- Hangi konteynerin hangi makinede çalışacağını yönetir.
- Hangi konteynerden kaç kopya (replica) çalışacağını belirler.
- Makinelerden biri çöktüğünde, onun üzerinde çalışan konteynerlerin diğer aktif makinelerde tekrar ayağa kaldırılmasını (self-healing) sağlar.
Siz kararlarınızı Swarm'a bildirdiğinizde, o arka plandaki tüm karmaşık süreci sizin yerinize yönetecektir.
Docker Swarm Ne İçin Kullanılır?
Docker Swarm bir konteyner orkestrasyon aracıdır. "Orkestrasyon" kelimesi ilk duyulduğunda yabancı gelse de; farklı boyutlardaki enstrümanların ve sanatçıların uyum içinde, kusursuz bir performans göstermesini sağlayan bir orkestra şefini hayal ettiğinizde Swarm'ın işlevini daha rahat anlayabilirsiniz.
Docker Swarm size şu temel avantajları sağlar:
- Yüksek Kullanılabilirlik (High Availability): Sunucularınızdan veya konteynerlerinizden biri çökerse, yerini hemen başka bir düğümdeki kopya devralır.
- Yük Dağılımı (Load Balancing): Gelen ağ trafiği, kümedeki düğümler arasında uyumlu bir şekilde otomatik olarak dağıtılır.
Docker Swarm Kurulumu İçin Neye İhtiyacım Var?
Swarm kümesindeki makinelerin (node) temel olarak iki rolü vardır: Manager (Yönetici) ve Worker (İşçi).
Bir Swarm kümesi oluşturmak için en az bir adet Manager düğümüne ihtiyacınız vardır. Ancak tek bir Manager sadece test amaçlı kabul edilebilir; çünkü tek Manager'lı bir sistem yüksek kullanılabilirlik özelliğine sahip değildir. O tek düğüm çöktüğünde küme sahipsiz kalır; mevcut görevler çalışmaya devam etse de yeni düğüm eklenemez veya ölçekleme yapılamaz. Gerçek bir hata toleransı için kümede en az 3 Manager düğümü olmalıdır.
Peki, neden 2 değil de en az 3 yönetici düğümü gereklidir?
RAFT Konsensusu Nedir?
Dağıtık sistemlerdeki en temel sorun konsensusa (fikir birliğine) varmaktır. Konsensus, birden çok sunucunun kümenin durumu hakkında mutabık olmasıdır. Konsensus algoritmaları, sunucuların çoğunluğunun (Quorum = N/2 + 1) ulaşılabilir durumda olmasına dayanır. Eğer çoğunluk sağlanamazsa sistem kilitlenir; böylece yanlış veya tutarsız kararların alınması engellenir.
Anlaşılmayı kolaylaştırmak için örnek bir senaryo oluşturalım:
3 Manager düğümünüzün olduğunu ve lider düğümün düştüğünü varsayalım. O andaki küme durumuna "A" diyelim. Diğer iki manager çalışmaya devam etti, yeni görevler başlattı ve durumu "B" olarak güncelledi. Çöken sunucu daha sonra ayağa kalktığında eski "A" durumunda olacaktır. Ancak diğer iki sunucu "B" durumunda birleştiği için çoğunluk (2 > 1) "B" kararına katılır ve çöken sunucu da kendini bu karara göre günceller.
Peki ya sadece 2 yöneticimiz olsaydı? Biri çöktüğünde geriye 1 düğüm kalacaktı. Tek başına kalan düğüm çoğunluğu sağlayamadığı için (1 / 2 + 1 = 2 düğüm gerekir) küme durumunda değişiklik yapamazdı. Bu nedenle hata toleranslı dağıtık bir yapı kurmak için en az 3 Manager düğümüne ihtiyaç duyarız.
Manager Sayısı Kuralları
- Manager düğümlerinin sayısı her zaman tek olmalıdır: 4 Manager ile 3 Manager hata toleransı açısından aynı güçtedir (ikisi de en fazla 1 çökme tolere edebilir). Ancak 5 Manager'a çıkıldığında sistem aynı anda 2 düğümün çökmesini tolere edebilir.
- Formül: $N$ sayıda yöneticiden oluşan bir Swarm, en fazla $(N-1)/2$ adet yöneticinin çökmesini tolere edebilir.
- Öneri: Docker, koordinasyon gecikmelerini önlemek adına bir Swarm kümesinde en fazla 7 adet Manager düğümü olmasını tavsiye eder.
Docker Swarm Nasıl Kurulur?
Docker Swarm kurulumu oldukça kolaydır. İlgili makinelere Docker kurduktan sonra birinde Swarm'ı başlatır ve diğer düğümleri ona eklersiniz.
Lider Manager düğümünüzde şu komutu çalıştırarak Swarm modunu aktif hale getirin:
docker swarm init --advertise-addr <MANAGER-IP>
Bu komutu çalıştırdıktan sonra terminalde, diğer düğümleri (Worker veya Manager olarak) bu swarm'a eklemek için kullanmanız gereken docker swarm join komutunu ve token bilgisini çıktı olarak verecektir.
İlgili komutu kopyalayıp Worker makinelerin terminaline yapıştırdığınızda o makineler de kümenize katılmış olur.
💡 Deneme Ortamı İçin: Yerel makinenizde test etmek için (Multipass, Vagrant veya VirtualBox ile oluşturacağınız) 3 sanal makine kullanabilirsiniz. Eskiden bu iş için kullanılan Docker Machine aracı artık resmi olarak kullanımdan kaldırılmıştır (deprecated).
Docker Swarm hakkında genel bilgi edindik ve kümemizi kurduk. Swarm yönetimi için oldukça pratik bir web arayüzü sunan Portainer kurulumunu ise bir başka yazıya bırakıyorum.
Bu Yazıda Yapılan Değişiklikler
- 21.06.2026: Kullanımdan kaldırılan (deprecated) Docker Machine aracı yerine güncel sanallaştırma alternatifleri (Multipass, Vagrant) önerildi. Çok sayıdaki yazım ve imla hataları (kitlenir -> kilitlenir, Doker -> Docker, kararlarıızı -> kararlarınızı vb.) düzeltildi. Docker Swarm vs. Kubernetes karşılaştırma tablosu ve özet bloğu eklendi.
- 11.05.2022: Yazı özeti düzenlendi.
