Docker Swarm’a Giriş

Docker swarm bir container orkestrasyon ürünüdür.

Daha önce bahsettiğimiz docker container yapılarını tek bir merkezden kontrol etmek için kullanılır.

Özelliklerine bir bakalım;

Docker Engine ile entegre cluster yönetimi: docker 1.12 sürümü sonrasında docker ile birlikte gelen (in-built) bir özelliktir.

Servis model ortamları (Declarative service model): Uygulamalarınızı gruplayarak ortamlarınızı birbirinden yalıtabilirsiniz. Örneğin Queue, db servisleri v.s. gibi back-end, nginx, php gibi servislerinizi farklı ortamlara koyabilirsiniz ve erişimleri siz yönetirsiniz.

Ölçekleme(Scaling): Oluşturduğunuz uygulama grupları içerisinde servisinizi ölçeklendirebilirsiniz. Servisiniz ne kadar container üzerinde çalışmasını isterseniz ayarlayabilirsiniz.

Sürekli durum kontrolü (Desired state reconciliation) : Servisinizin kaç container’da çalışmasını istemişseniz durumunu sürekli kontrol eder, çalışamaz duruma gelen containerın yerine yenisini kaldırır.

Dahili DNS (Service discovery): Herbir servis başka bir servise bağlanırken (dahili gelen DNS rolü ile) servis ismi ile bağlanabilir.

Yük dengeleme (Load balancing): Yine dahili gelen yük dengeleme mantığı ile birden fazla containerda ayağa kalkan servisleri arkada containerlara dengeli olarak dağıtır.

Güvenlik: Swarm ortamında bulunan her host birbiri ile TLS ile haberleşir. Varsayılan olarak kendi sertifikası oluşturur. İsterseniz herhangi bir CA’den aldığınız sertifikayıda kullanabilirsiniz.

Kolaylaşan periyodik güncellemeler: Güncellemelerinizi sınırlandırabilirsiniz. Herhangi bir güncelleme yapacağınız zaman servis kesintisi olmadan containerları sıra ile güncelleyebilirsiniz, herhangi bir fail durumunda rollback yapabilirsiniz.

Docker swarm nodeları iki farklı modeda çalışır;

manager : Docker swarm’ı yönetme yeteniğe sahiptir, swarm’a ait metadaları okuyabililir ve değiştirebilir.

worker : genelde servisleri koşturmakla yükümlü olan, işi yapan arkadaşlardır. Manager hangi servisin çalışacağını söyler, worker da çalıştırır.

Manager node varsayılan olarak worker rolünede sahiptir.

Yukarıdaki şekilde görüleceği gibi her manager kendi arasında konuşabilir fakat workerlar sadece manager ile konuşabilir.

 

Peki servicler arka planda nasıl konumlanır ona bakalım:

 

Şekilde görüldüğü gibi bir nginx servisi oluşturulmuş ve 3 container üzerinde çalışması istenmiştir. İlgili servis cluster mantığı gereği 3 workera 1’er task atayarak containerları ayağa kaldırmıştır.

Swarm servisleri iki farklı modda çalışır:

Global service : Role bağımsız her nodeda bu servis çalışır, replication parametresi verilemez. Genelde domainde her nodeda çalışmasını istediğimiz agentlar için kullanılır.

Replicated service : service kaç adet containerda çalışacağına siz karar verirsiniz.

Written by 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.