[{"data":1,"prerenderedAt":568},["ShallowReactive",2],{"post-\u002Ftr\u002Fdocker-swarm-nedir":3},{"page":4,"translation":402,"nav":418,"related":545,"random":559},{"id":5,"title":6,"body":7,"categories":400,"category":402,"date":403,"description":404,"draft":405,"extension":406,"image":407,"kind":402,"lang":82,"meta":408,"navigation":409,"path":410,"readingTime":411,"seo":412,"slug":161,"stem":413,"tags":414,"translationKey":161,"type":401,"updated":416,"__hash__":417},"postsTr\u002Ftr\u002Fdocker-swarm-nedir.md","Docker Swarm Nedir?",{"type":8,"value":9,"toc":388},"minimark",[10,55,58,67,70,75,156,158,162,165,168,179,182,184,188,191,194,208,210,214,223,229,232,234,238,245,248,255,262,266,286,288,292,295,298,341,348,351,364,371,376,384],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,31,45],"ul",{},[25,26,27,30],"li",{},[18,28,29],{},"Docker Swarm Nedir?:"," Birden fazla fiziksel veya sanal makineyi tek bir sanal Docker sunucusu (küme\u002Fcluster) haline getiren, Docker ile yerleşik (built-in) gelen hafif bir konteyner orkestrasyon aracıdır.",[25,32,33,36,37,40,41,44],{},[18,34,35],{},"Temel Yapı:"," Swarm kümeleri, yönetimsel kararları alan ",[18,38,39],{},"Manager"," düğümleri (node) ve iş yüklerini çalıştıran ",[18,42,43],{},"Worker"," düğümlerinden oluşur.",[25,46,47,50,51,54],{},[18,48,49],{},"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 ",[18,52,53],{},"tek sayıda"," (en az 3) olması kritik bir gereksinimdir.",[14,56,57],{},"\"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.",[14,59,60,61,66],{},"Eğer Docker adını ilk defa duyuyorsanız veya daha detaylı bilgi edinmek istiyorsanız öncelikle ",[62,63,65],"a",{"href":64},"\u002Ftr\u002Fdocker-nedir","Docker Nedir?"," başlıklı yazımı okumanızı önerir ederim.",[68,69],"hr",{},[71,72,74],"h3",{"id":73},"konteyner-orkestrasyonu-docker-swarm-vs-kubernetes","Konteyner Orkestrasyonu: Docker Swarm vs. Kubernetes",[76,77,78,95],"table",{},[79,80,81],"thead",{},[82,83,84,89,92],"tr",{},[85,86,88],"th",{"align":87},"left","Özellik",[85,90,91],{"align":87},"Docker Swarm",[85,93,94],{"align":87},"Kubernetes (K8s)",[96,97,98,117,130,143],"tbody",{},[82,99,100,106,114],{},[101,102,103],"td",{"align":87},[18,104,105],{},"Kurulum & Yapılandırma",[101,107,108,109,113],{"align":87},"Son derece kolay (Dahili ",[110,111,112],"code",{},"swarm init",")",[101,115,116],{"align":87},"Oldukça karmaşık ve uzmanlık gerektirir",[82,118,119,124,127],{},[101,120,121],{"align":87},[18,122,123],{},"Öğrenme Eğrisi",[101,125,126],{"align":87},"Düşük (Standart Docker CLI komutları)",[101,128,129],{"align":87},"Yüksek (Çok sayıda yeni kavram ve YAML yapısı)",[82,131,132,137,140],{},[101,133,134],{"align":87},[18,135,136],{},"Ölçeklenebilirlik",[101,138,139],{"align":87},"Küçük ve orta ölçekli projeler için ideal",[101,141,142],{"align":87},"Dev ölçekli, çoklu bulut (multi-cloud) yapılar için standart",[82,144,145,150,153],{},[101,146,147],{"align":87},[18,148,149],{},"Dahili Yük Dengeleyici",[101,151,152],{"align":87},"Evet (Ingress routing mesh entegredir)",[101,154,155],{"align":87},"Evet (Ingress Controller yapılandırılması gerekir)",[68,157],{},[159,160,6],"h2",{"id":161},"docker-swarm-nedir",[14,163,164],{},"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.",[14,166,167],{},"Swarm'ın sağladıkları tabii ki bu kadarla sınırlı değil:",[22,169,170,173,176],{},[25,171,172],{},"Hangi konteynerin hangi makinede çalışacağını yönetir.",[25,174,175],{},"Hangi konteynerden kaç kopya (replica) çalışacağını belirler.",[25,177,178],{},"Makinelerden biri çöktüğünde, onun üzerinde çalışan konteynerlerin diğer aktif makinelerde tekrar ayağa kaldırılmasını (self-healing) sağlar.",[14,180,181],{},"Siz kararlarınızı Swarm'a bildirdiğinizde, o arka plandaki tüm karmaşık süreci sizin yerinize yönetecektir.",[68,183],{},[159,185,187],{"id":186},"docker-swarm-ne-i̇çin-kullanılır","Docker Swarm Ne İçin Kullanılır?",[14,189,190],{},"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.",[14,192,193],{},"Docker Swarm size şu temel avantajları sağlar:",[22,195,196,202],{},[25,197,198,201],{},[18,199,200],{},"Yüksek Kullanılabilirlik (High Availability):"," Sunucularınızdan veya konteynerlerinizden biri çökerse, yerini hemen başka bir düğümdeki kopya devralır.",[25,203,204,207],{},[18,205,206],{},"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.",[68,209],{},[159,211,213],{"id":212},"docker-swarm-kurulumu-i̇çin-neye-i̇htiyacım-var","Docker Swarm Kurulumu İçin Neye İhtiyacım Var?",[14,215,216,217,219,220,222],{},"Swarm kümesindeki makinelerin (node) temel olarak iki rolü vardır: ",[18,218,39],{}," (Yönetici) ve ",[18,221,43],{}," (İşçi).",[14,224,225,226,228],{},"Bir Swarm kümesi oluşturmak için en az bir adet ",[18,227,39],{}," 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.",[14,230,231],{},"Peki, neden 2 değil de en az 3 yönetici düğümü gereklidir?",[68,233],{},[159,235,237],{"id":236},"raft-konsensusu-nedir","RAFT Konsensusu Nedir?",[14,239,240,241,244],{},"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 (",[110,242,243],{},"Quorum = N\u002F2 + 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.",[14,246,247],{},"Anlaşılmayı kolaylaştırmak için örnek bir senaryo oluşturalım:",[14,249,250,251,254],{},"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 (",[110,252,253],{},"2 > 1",") \"B\" kararına katılır ve çöken sunucu da kendini bu karara göre günceller.",[14,256,257,258,261],{},"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 (",[110,259,260],{},"1 \u002F 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.",[71,263,265],{"id":264},"manager-sayısı-kuralları","Manager Sayısı Kuralları",[22,267,268,274,280],{},[25,269,270,273],{},[18,271,272],{},"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.",[25,275,276,279],{},[18,277,278],{},"Formül:"," $N$ sayıda yöneticiden oluşan bir Swarm, en fazla $(N-1)\u002F2$ adet yöneticinin çökmesini tolere edebilir.",[25,281,282,285],{},[18,283,284],{},"Öneri:"," Docker, koordinasyon gecikmelerini önlemek adına bir Swarm kümesinde en fazla 7 adet Manager düğümü olmasını tavsiye eder.",[68,287],{},[159,289,291],{"id":290},"docker-swarm-nasıl-kurulur","Docker Swarm Nasıl Kurulur?",[14,293,294],{},"Docker Swarm kurulumu oldukça kolaydır. İlgili makinelere Docker kurduktan sonra birinde Swarm'ı başlatır ve diğer düğümleri ona eklersiniz.",[14,296,297],{},"Lider Manager düğümünüzde şu komutu çalıştırarak Swarm modunu aktif hale getirin:",[299,300,305],"pre",{"className":301,"code":302,"language":303,"meta":304,"style":304},"language-bash shiki shiki-themes github-light github-dark","docker swarm init --advertise-addr \u003CMANAGER-IP>\n","bash","",[110,306,307],{"__ignoreMap":304},[308,309,312,316,320,323,327,331,334,338],"span",{"class":310,"line":311},"line",1,[308,313,315],{"class":314},"sScJk","docker",[308,317,319],{"class":318},"sZZnC"," swarm",[308,321,322],{"class":318}," init",[308,324,326],{"class":325},"sj4cs"," --advertise-addr",[308,328,330],{"class":329},"szBVR"," \u003C",[308,332,333],{"class":318},"MANAGER-I",[308,335,337],{"class":336},"sVt8B","P",[308,339,340],{"class":329},">\n",[14,342,343,344,347],{},"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 ",[110,345,346],{},"docker swarm join"," komutunu ve token bilgisini çıktı olarak verecektir.",[14,349,350],{},"İlgili komutu kopyalayıp Worker makinelerin terminaline yapıştırdığınızda o makineler de kümenize katılmış olur.",[11,352,353],{},[14,354,16,355,358,359,363],{},[18,356,357],{},"Deneme Ortamı İçin:","\nYerel 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 ",[360,361,362],"em",{},"Docker Machine"," aracı artık resmi olarak kullanımdan kaldırılmıştır (deprecated).",[14,365,366,367,370],{},"Docker Swarm hakkında genel bilgi edindik ve kümemizi kurduk. Swarm yönetimi için oldukça pratik bir web arayüzü sunan ",[18,368,369],{},"Portainer"," kurulumunu ise bir başka yazıya bırakıyorum.",[372,373,375],"h5",{"id":374},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,377,378,381],{},[25,379,380],{},"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.",[25,382,383],{},"11.05.2022: Yazı özeti düzenlendi.",[385,386,387],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":304,"searchDepth":389,"depth":389,"links":390},2,[391,393,394,395,396,399],{"id":73,"depth":392,"text":74},3,{"id":161,"depth":389,"text":6},{"id":186,"depth":389,"text":187},{"id":212,"depth":389,"text":213},{"id":236,"depth":389,"text":237,"children":397},[398],{"id":264,"depth":392,"text":265},{"id":290,"depth":389,"text":291},[401],"technical",null,"2021-01-19","Docker Swarm nedir? Konteyner orkestrasyonunun temelleri, Raft konsensusu, yönetici (manager) düğüm kuralları ve Kubernetes ile karşılaştırması.",false,"md","\u002Fimages\u002Fhero\u002Fdocker-swarm.avif",{},true,"\u002Ftr\u002Fdocker-swarm-nedir",5,{"title":6,"description":404},"tr\u002Fdocker-swarm-nedir",[315,415],"devops","2026-06-21","zKYPV2hHJ2tX2Re2TEedAZbb23OxtOvB_hyV6UhR5Ok",{"prev":419,"next":422,"others":425,"lucky":542,"readingTime":411},{"path":420,"title":421},"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı",{"path":423,"title":424},"\u002Ftr\u002Frestful-api-bilesenleri","RESTful API Bileşenleri",[426,429,432,435,438,441,444,447,450,453,456,459,462,465,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,511,514,517,520,523,526,529,530,533,536,539],{"path":427,"title":428},"\u002Ftr\u002Fsingleton-tasarim-deseni-nedir","Singleton Tasarım Deseni Nedir?",{"path":430,"title":431},"\u002Ftr\u002Fbuilder-tasarim-deseni-nedir","Builder Tasarım Deseni Nedir?",{"path":433,"title":434},"\u002Ftr\u002Fes6-nedir-ecmascript-2015-nedir","ES6 Nedir? ECMAScript 2015 Nedir?",{"path":436,"title":437},"\u002Ftr\u002Frabbitmq-nedir","RabbitMQ Nedir?",{"path":439,"title":440},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",{"path":442,"title":443},"\u002Ftr\u002Fmerhaba-tailwind-css","Merhaba Tailwind CSS",{"path":445,"title":446},"\u002Ftr\u002Frest-api-guvenligi-nasil-saglanir","REST Api Güvenliği Nasıl Sağlanır?",{"path":448,"title":449},"\u002Ftr\u002Ftailwind-css-nerede-kullanilir-tailwind-css-nerede-kullanilmaz","Tailwind CSS Nerede Kullanılır? Tailwind CSS Nerede Kullanılmaz?",{"path":451,"title":452},"\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir","ES12 Nedir? ECMAScript 2021 Nedir?",{"path":454,"title":455},"\u002Ftr\u002Fyeni-tema-honeywind","Yeni WordPress Temam Honeywind: Tailwind CSS ve Minimalizm",{"path":457,"title":458},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":460,"title":461},"\u002Ftr\u002Fmerhaba-phalcon-framework","Merhaba Phalcon Framework",{"path":463,"title":464},"\u002Ftr\u002Fstate-tasarim-deseni-nedir","State Tasarım Deseni Nedir?",{"path":423,"title":424},{"path":467,"title":468},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":470,"title":471},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"path":473,"title":474},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":476,"title":477},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-factory-method-nedir","Factory Method Tasarım Deseni Nedir?",{"path":479,"title":480},"\u002Ftr\u002Frest-api-uri-yapisi-nasil-olmali","REST API URI Yapısı Nasıl Olmalı?",{"path":482,"title":483},"\u002Ftr\u002Fubuntu-guncellemesi-sonrasi-cyberpanele-ulasilamama-sorunlarini-giderme","Ubuntu Güncellemesi Sonrası CyberPanel'e Ulaşılamama Sorunlarını Giderme",{"path":485,"title":486},"\u002Ftr\u002Fdigital-oceanda-vps-kurulumu","DigitalOcean'da VPS (Droplet) Kurulumu: Adım Adım Rehber",{"path":488,"title":489},"\u002Ftr\u002Ftemplate-method-tasarim-deseni-nedir","Template Method Tasarım Deseni Nedir?",{"path":491,"title":492},"\u002Ftr\u002Fdocker-ile-redis-kurulumu","Docker ile Redis Kurulumu",{"path":494,"title":495},"\u002Ftr\u002Fwebpack-nedir","Webpack Nedir? Modern JavaScript Paketleyici Ekosistemi",{"path":497,"title":498},"\u002Ftr\u002Fchain-of-responsibility-deseni-nedir","Chain of Responsibility Deseni Nedir?",{"path":500,"title":501},"\u002Ftr\u002Fdocker-ile-mongodb-kurulumu","Docker ile MongoDB Kurulumu",{"path":503,"title":504},"\u002Ftr\u002Fgo-slice-veri-tipi","Go Veri Tipleri: Slice",{"path":506,"title":507},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":509,"title":510},"\u002Ftr\u002Fjavascriptde-moduller","JavaScript'te Modüller",{"path":512,"title":513},"\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir","ES11 Nedir? ECMAScript 2020 Nedir?",{"path":515,"title":516},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":518,"title":519},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",{"path":521,"title":522},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",{"path":524,"title":525},"\u002Ftr\u002Fcodeserver-nedir-codeserver-nasil-kurulur","Code-Server Nedir? Bulutta VS Code Geliştirme Ortamı Kurulumu",{"path":527,"title":528},"\u002Ftr\u002Fobserver-tasarim-deseni-nedir","Observer Tasarım Deseni Nedir?",{"path":420,"title":421},{"path":531,"title":532},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":534,"title":535},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-abstract-factory-nedir","Abstract Factory Tasarım Deseni Nedir?",{"path":537,"title":538},"\u002Ftr\u002Fgraylog-nedir-docker-ile-nasil-kurulur","Graylog Nedir? Docker Compose ile Adım Adım Kurulum Rehberi",{"path":540,"title":541},"\u002Ftr\u002Fgo-veri-tipleri-string-integer-float-complex-boolean-ve-array","Go Veri Tipleri - String, Integer, Float, Complex, Boolean ve Array",{"path":543,"title":544},"\u002Ftr\u002Fvue-3-hakkinda-bilmeniz-gerekenler-yenilikler","Vue 3 Hakkında Bilmeniz Gerekenler ve Yenilikler",[546,548,552,556],{"path":491,"title":492,"date":547},"2021-03-09",{"path":549,"title":550,"date":551},"\u002Ftr\u002Fdocker-ile-mariadb-kurulumu","Docker ile MariaDB Kurulumu","2021-03-01",{"path":553,"title":554,"date":555},"\u002Ftr\u002Fdocker-ile-litespeed-enterprise-kurulumu","Docker ile LiteSpeed Enterprise Kurulumu","2021-02-21",{"path":557,"title":558,"date":555},"\u002Ftr\u002Fdocker-ve-portainer-kurulumu","Docker ve Portainer Kurulumu",[560,562,566],{"path":451,"title":452,"date":561},"2021-10-18",{"path":563,"title":564,"date":565},"\u002Ftr\u002Fdecorator-tasarim-deseni-nedir","Decorator Tasarım Deseni Nedir?","2021-09-12",{"path":531,"title":532,"date":567},"2021-08-02",1782142088135]