Geliştirme iş akışınızı kapsayıcı hale getiriyorsanız, Docker'ın sürüm kontrolü için en iyi seçeneklerden biri olduğunu kabul edeceksiniz. Ancak Docker Swarm, Docker'ın karmaşık uygulamaları düzenlemek için kullanılan özelliklerinden biridir.
Docker Swarm çalışma mekanizmasını ilk başta kırmak zor olabilir. Ama merak etmeyin, bu yazıda onu parçalayacağız. Peki Docker Swarm nedir? Neden kullanalım? Ve nasıl çalışır?
Docker Swarm Nedir ve Nasıl Çalışır?
Docker Swarm, belirli görevleri sunmak için bir küme olarak ağa bağlı bir grup Docker ana bilgisayarını (bilgisayar) ifade eder. Bu kümedeki her Docker ana bilgisayarı, çalışan düğüm olarak da adlandırılan bir düğümdür.
Görevlerin verimli bir şekilde dağıtılmasını sağlamak için bir yönetici düğümüne ihtiyacınız vardır. İdeal olarak, bir Docker Swarm modu başlatma, yönetici düğümü ile başlar ve sonraki düğümler işçi olur.
Operatör olarak, yalnızca talimatları çalışanlara ileten yönetici düğümü ile etkileşime geçmeniz gerekir. Değişmez bir şekilde, çalışan düğümler, yönetici düğümden görev tahsisi alır ve bunları buna göre yürütür.
Bununla birlikte, yönetici düğümü ayrıca görev yürütmeye (bir çalışan olarak) katılabilir veya yönetimle doğrudan yüzleşebilir. durumunu değiştirerek yöneticide görev zamanlamasını önleyebilirsiniz. aktif ile boşaltmak. Ancak bu ikili işlevi atama kararınız birkaç faktöre bağlı olabilir. Esasen, bunu yapmadan önce birkaç rolü üstlenmek için yeterli kaynağa sahip olduğundan emin olmak istersiniz.
Düğümler başarısız olur. Böylece yönetici düğümü, her çalışan düğümün durumunu aktif olarak izler ve görevi başarısız bir düğümden diğerine yeniden planlamak için hataya dayanıklı bir mekanizmayı etkinleştirir.
Ama ya yönetici düğümü de çökerse? İlginç bir şekilde, sürü çalışmaya devam ediyor. Tek sorun, artık kümeyi kontrol etmek için yönetici düğümü ile iletişim kuramayacak olmanızdır.
Bunu önlemek için yaygın olarak kullanılan güvenli yaklaşım, yönetici rolünü birçok düğüme atamaktır (Docker, küme başına en fazla yedi tane önerir). Daha sonra bunlardan birincil yönetici düğümünü seçebilirsiniz. Birincil yönetici çöktüğünde, yedek yöneticilerden biri rolü üstlenir.
Ancak, bir kümede düğümler arasında rol değiştirme veya durum bakımı konusunda endişelenmenize gerek yoktur. Docker SwarmKit'te yerleşik olan raft konsensüs algoritması (hataya dayanıklı bir yöntem) bununla ilgilenir.
Neden Docker Swarm'ı Kullanmalısınız?
Docker Swarm, yüksek ölçeklenebilirlik beklentileri olan karmaşık uygulamaları dağıtmak için kullanışlıdır. Birincil kullanım durumlarından biri, mikro hizmetleri merkezi olmayan hale getirmektir. Daha sonra her mikro hizmet, diğer çalışan düğümlerdekilerle benzer bir kapsayıcıyı paylaşır.
Docker Swarm'ı kullanmanın bir başka nedeni de, birden çok ana bilgisayarın bir kümede aynı anda görevleri çalıştırmasıdır. Bu, yalnızca bir Docker motorunda birden çok kapsayıcı çalıştırmanıza izin veren Docker Compose'un aksine.
Docker Swarm'ın bu ölçeklenebilir özelliği, uygulamaların sıfır gecikmeyle tutarlı bir şekilde kullanılabilir olmasını sağlar. Hatta bu, istemenizin sebeplerinden biridir. diğer sanallaştırma araçları yerine Docker'ı seçin.
Ve dahası ne? Docker Swarm, bir kapsayıcının arızalandığında durduğu tekli Docker Kapsayıcılarının aksine, biri arızalandığında görevleri mevcut çalışan düğümler arasında otomatik olarak yeniden dağıtır.
Docker Swarm ayrıca her durumun bir yedeğini tutar. Böylece yeni sürü konfigürasyonlarını her zaman eskisinin durumuna geri döndürebilirsiniz. Bir önceki sürüdeki yönetici düğümünün başarısız olduğunu söyleyin; daha fazla yönetici düğümü ile yeni bir küme başlatabilir ve öncekinin yapılandırmasını uyarlamak için onu geri alabilirsiniz.
Yönetici düğümü ile çalışan düğümler arasındaki etkileşimin güvenli olduğunu belirtmek de önemlidir.
Docker'ın birçok alternatifi var, ve en yakınlarından biri Kubernetes. Ancak Docker Swarm'ın kullanımı kolaydır ve daha otomatiktir. Örneğin, Kubernetes gibi diğer bazı düzenleme araçlarında yükü manuel olarak dengelemeniz gerekebilirken, Docker Swarm, DevOps için hayatı kolaylaştıran otomatik yük dengeleme özelliğine sahiptir.
Docker Sürü Mimarisi
Docker Swarm mimarisi, hizmetler, düğümler ve görevler etrafında döner. Ancak, yığının başarılı bir şekilde çalıştırılmasında her birinin oynayacağı bir rol vardır.
Hizmetler
Docker Swarm hizmeti, bir sürüdeki tüm kapsayıcıları çalıştıran Docker görüntüsünün yapılandırmasını detaylandırır. Bir kümedeki görevler hakkında bilgi içerir. Örneğin, bir hizmet bir Dockerized SQL sunucu kurulumu.
Bir hizmeti çalıştırdığınızda, yönetici düğümünü yapılandırmalarıyla eşitlemeye zorlar. Yönetici düğümü daha sonra hizmette belirtilen ayarlara göre kalan çalışan düğümleri çalıştırır.
Docker Swarm'daki hizmetler global veya çoğaltılabilir.
Aralarındaki fark, global hizmetler bir kümedeki tüm düğümler için yalnızca bir görev tanımlarken, çoğaltılan hizmetler düğüm başına görev sayısını belirtir.
düğümler
Docker Swarm'daki bir düğüm, Docker motoru olarak da bilinen tüm Docker çalışma zamanının bir örneğidir. Sürü düğümleri fiziksel veya sanal makineler olabilir. Bunu, benzer süreçleri (konteynerler) çalıştıran bir bilgisayar ağı olarak düşünün.
Tipik olarak, düğümler, gerçek hayattaki uygulamalarda Docker motorunu çalıştıran birkaç bilgisayar ve sunucuya yayılır. Daha önce de belirtildiği gibi, bir düğüm, role bağlı olarak bir yönetici veya çalışan düğümü olabilir.
Yönetici düğümü, sürü kalp atışını dinler ve yönetici düğümü tarafından kendilerine atanan görevleri yürüten çalışan düğümleri kontrol eder. Daha önce belirtildiği gibi, bir sürüde birden fazla yönetici düğümünüz olabilir. Ancak ideal olarak, çok fazla yönetici düğümü eklemek sürü performansını düşürebileceğinden, sayıyı yedinin altında tutmaya çalışın.
Görevler
Bir görev, bir Docker Swarm'daki her bir düğüme atanan işi tanımlar. Arka planda, Docker Swarm'da görev zamanlaması, bir orkestratör görevler oluşturduğunda ve bunları her görev için bir kap başlatan bir zamanlayıcıya ilettiğinde başlar.
Yönetici düğümü daha sonra, Docker hizmetinde gerektiği ve belirtildiği gibi görevleri atamak ve düğümlere yeniden atamak için zamanlayıcıyı kullanır.
Docker Swarm vs. Docker Oluşturma: Farklar Nelerdir?
İnsanlar genellikle Docker Compose ve Docker Swarm'ı birbirinin yerine kullanır. Her ikisi de birden çok kapsayıcı çalıştırmayı gerektirse de, bunlar farklıdır.
Docker Compose, tek bir ana bilgisayarda birden çok kapsayıcı çalıştırmanıza izin verirken, Docker Swarm bunları bir kümedeki birkaç Docker motoruna dağıtır.
Uygulamanızdaki her hizmet için ayrı kapsayıcıları döndürmeniz gerektiğinde Docker Compose kullanırsınız. Böylece bir bileşen çöktüğünde diğerlerini etkilemez. Ancak, ana makine başarısız olduğunda, tüm uygulama da çöker.
Ancak Docker Swarm, kümelenmiş düğümlerde birçok kapsayıcı çalıştırmanıza yardımcı olur. Bu nedenle, uygulamanızın her bileşeni birkaç düğümde bulunur. Ve bir uygulama bileşenini işleyen bir düğüm çöktüğünde, sürü, görevini küme içindeki başka bir düğüme tahsis eder ve çalışan görevleri yeniden planlayarak kesinti süresini önler.
Bu nedenle, Docker Compose'da kapalı kalma süreniz olsa da Docker Swarm, uygulamanızın yedekleme sunucuları (işçi düğümleri) yardımıyla çalışmaya devam etmesini sağlar. Ancak Docker 1.13, aşağıdakileri kullanarak Swarm moduna Docker Compose dağıtımını destekler: liman işçisi yığını dağıtma emretmek.
Docker Swarm, Karmaşık Uygulamaları Dağıtmanıza Yardımcı Olur
Konteynerleştirme, sürekli entegrasyon ve sürekli teslim (CI/CD) yazılım tasarımında sanal makineleri geride bıraktı. Bu nedenle, paha biçilmez bir DevOps uzmanı olmak istiyorsanız Docker Swarm mekanizmasının esasını anlamak artı bir beceridir.
Muhtemelen bir Docker kapsayıcısını nasıl döndüreceğinizi veya hatta bir ana bilgisayarda birden çok kapsayıcı için bir Docker Oluşturmayı nasıl çalıştıracağınızı biliyorsunuzdur. Ancak Docker Swarm, karmaşık mimariye sahip uygulamaları dağıtmak için daha kullanışlıdır. Süreçleri birimlere ayırır, çalışma zamanı erişimini iyileştirir ve kesinti olasılığını azaltır ve hatta ortadan kaldırır.