Docker Swarm Nedir?
Docker Swarm, Docker ortamında birden fazla sunucunun (node) birleşerek bir dizi hizmeti (service) yönetmesini sağlayan bir clustering (kümelendirme) çözümüdür. Swarm, yüksek erişilebilirlik, ölçeklenebilirlik ve yük dengeleme gibi avantajlar sunar. Birden fazla Docker motorunu bir araya getirerek, hem hizmetlerin dağıtımını hem de yönetimini kolaylaştırır. Swarm içerisinde topolojiyi belirlemek için servis keşfi mekanizmaları kullanılır.
Servis Keşfi Tanımı
Servis keşfi, bir sistemin mevcut hizmetleri, bileşenleri ve bunlar arasındaki ilişkileri otomatik olarak tanımasını sağlayan bir süreçtir. Mikro hizmet mimarisi ile geliştirilen uygulamalarda, hizmetler dinamik olarak oluşturulabilir, güncellenebilir veya kaldırılabilir. Bu nedenle, hizmetlerin daima diğer hizmetler tarafından erişilebilir olması kritik öneme sahiptir. Docker Swarm, dahili bir DNS tabanlı keşif mekanizması sunarak, hizmetlerin birbirine kolayca ulaşmasını sağlar.
Swarm Kümesi Oluşturma
Docker Swarm üzerinde servis keşfinin çalışabilmesi için öncelikle bir Swarm kümesi oluşturmak gereklidir. Swarm kümesi, bir lider düğüm ve bir veya daha fazla işçi düğümünden oluşur. Aşağıdaki adımlar, bir Swarm kümesinin nasıl oluşturulacağını göstermektedir:
1. Docker Kurulumu:
– Tüm düğümlere Docker kurulumu yapılmalıdır. Gerekli yapılandırmalar tamamlandıktan sonra, Docker servislerini kullanmaya hazır hale gelir.
2. Swarm Başlatma:
– Swarm yöneticisi (leader) olarak atanacak düğümde terminal açılır ve aşağıdaki komutla Swarm başlatılır:
“`bash
docker swarm init
“`
3. Düğüm Eklemek:
– Diğer düğümleri (worker) küme içerisine eklemek için, yönetici düğüm üzerine verilecek birleşim token’i kullanılır. Yönetici düğümden şu komut çalıştırılır:
“`bash
docker swarm join-token worker
“`
4. Kontrol:
– Ekleme işlemi tamamlandıktan sonra, mevcut düğümlerin durumunu kontrol etmek için aşağıdaki komut kullanılır:
“`bash
docker node ls
“`
Servis Oluşturmak
Swarm içerisinde servis oluşturmak için `docker service create` komutu kullanılır. Bu komut, belirlenen bir imaja dayalı olarak bir servisi başlatır. Servis oluşturulduğunda, Docker otomatik olarak gerekli olan keşif bilgilerinin yapılandırılmasını sağlar. Örneğin:
“`bash
docker service create –name web-app –replicas 3 nginx
“`
Bu komut, ‘web-app’ adında 3 örneği (replica) olan bir Nginx servisi oluşturur.
Servislerinin Erişimi
Swarm, servislerin birbirine kolayca ulaşabilmesi için dahili bir DNS sistemi kullanır. Oluşturulan her hizmet, bir DNS adı ile otomatik olarak kaydedilir. Örneğin, yukarıdaki ‘web-app’ hizmetine sahip yük dengeleyici diğer hizmetlerle aşağıdaki gibi etkileşimde bulunabilir:
“`bash
curl http://web-app:80
“`
Güncelleme ve Yükseltme
Docker Swarm, hizmetlerin güncellenmesi için de uygun bir yöntem sunar. Bir hizmeti güncellerken, yeni bir görüntü (image) belirlemek mümkündür:
“`bash
docker service update –image new-nginx web-app
“`
Bu komut, ‘web-app’ hizmetini yeni bir Nginx görüntüsü ile günceller. Swarm, otomatik olarak yeni sürümü başlatır ve yavaş bir geçiş ile eski sürümü devre dışı bırakır.
Servislerin İzlenmesi
Docker Swarm, oluşturulan ve yönetilen servislerin durumunu izlemek için çeşitli araçlar ve komutlar sunar. `docker service ls` komutu, mevcut servislerin listesini gösterirken, `docker service ps
Hata Yönetimi
Swarm, hizmetlerin sürekli çalışmasının sağlanması için otomatik hata yönetimi özellikleri sunar. Bir görev (task) başarısız olduğunda, Swarm bu durumu algılar ve otomatik olarak görevi yeniler. Bu sayede, yüksek erişilebilirlik sağlanır.
Sonuç
Docker Swarm, uygulamaların daha kolay yönetilmesi ve ölçeklenebilmesi için etkili bir servis keşfi mekanizması sunar. Kullanıcılar, oluşturulan hizmetler arasında hızlı ve güvenilir bir bağlantı kurarak, mikro hizmet mimarisinin avantajlarından yararlanabilir. Swarm’ın yerleşik DNS çözümlemesi, servislere erişimin yanı sıra, hizmet güncellemeleri ve hata yönetimi ile kullanıcı deneyimini geliştirir. Docker Swarm, dinamik olarak değişen bir ortamda hizmetlerin etkin bir şekilde yönetilmesine olanak tanır.