Docker Swarm Nedir?
Docker Swarm, Docker konteynerlerinin dağıtık bir sistemde bir araya getirilmesi için kullanılan bir orkestrasyon aracıdır. Docker Swarm, birden fazla Docker host’unu bir araya getirerek tek bir sanal sistem gibi çalışmasını sağlar. Kullanıcılar, burada uygulama bileşenlerini basit bir şekilde yönetebilir, dağıtabilir ve ölçeklendirebilir. Docker Swarm, yüksek erişilebilirlik, yük dengelemesi ve otomatik yeniden başlatma gibi özellikler sunarak, mikro hizmet mimarisinin yönetimini kolaylaştırır.
Docker Stack Nedir?
Docker stack, birçok servisi bir arada yönetmek amacıyla gruplandırılmış bir uygulamadır. Her bir stack, Docker Compose dosyası (genellikle `docker-compose.yml` olarak adlandırılır) ile tanımlanır. Bu dosya, uygulamanın hangi servislerden oluştuğunu, bu servislerin nasıl yapılandırıldığını ve hangi bağımlılıkların bulunduğunu içerir. Docker stack kullanarak, tüm uygulama bileşenleri tek bir komut ile dağıtılabilir.
Docker Stack Deploy Nasıl Yapılır?
Docker stack deploy işlemi, bir Compose dosyasını kullanarak bir uygulamayı Deploy etmek için kullanılır. Bu işlem aşağıda adımlar halinde açıklanmaktadır:
1. Docker Swarm Modunu Aktifleştirme: Docker Swarm modunu kullanabilmek için, ilk olarak Docker daemon’unu Swarm modunda çalışacak şekilde başlatmak gerekmektedir. Bunu yapmak için aşağıdaki komut kullanılır:
“`
docker swarm init
“`
Bu komut çalıştıktan sonra, mevcut host, bir Swarm yöneticisi olarak atanır. Eğer birden fazla node eklemek istenirse, komut çalıştırılınca ekrana gelen `join` komutları kullanılabilir.
2. Compose Dosyasının Oluşturulması: Docker stack deploy etmek için bir `docker-compose.yml` dosyasının oluşturulması gerekmektedir. Aşağıda basit bir örneği bulunmaktadır:
“`yaml
version: ‘3.8’
services:
web:
image: nginx
ports:
– “80:80”
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
“`
Bu örnek dosya, bir `nginx` servisi ve bir `mysql` veritabanı servisi içermektedir.
3. Stack Deploy Etme: Compose dosyası hazırlandıktan sonra, `docker stack deploy` komutu ile uygulama dağıtımı yapılır. Aşağıdaki komut kullanılarak stack uygulanabilir:
“`
docker stack deploy -c docker-compose.yml my_stack
“`
Burada `-c` bayrağı, hangi Compose dosyasının kullanılacağını belirtir ve `my_stack` ise oluşturulacak stack’e verilen isimdir. Je stack adı, harf ve rakamlardan oluşmalı, boşluk olmamalıdır.
Stack Durumunu Kontrol Etme
Deployment tamamlandıktan sonra, oluşturulan stack’in durumunu kontrol etmek mümkündür. Bu işlem için aşağıdaki komut kullanılabilir:
“`
docker stack services my_stack
“`
Bu komut, belirtilen stack içindeki servislerin durumunu, ne kadarının çalıştığını ve hangi portların kullanıldığını gösterir.
Servislerin Ölçeklenmesi
Docker stack ile dağıtılmış servisler, ihtiyaç duyulursa ölçeklendirilebilir. Örneğin, `web` servisi için 3 kopya oluşturmak için aşağıdaki komut kullanılabilir:
“`
docker service scale my_stack_web=3
“`
Güncelleme ve Yönetim
Deployment sonrasında, uygulamanın hatasız çalıştığından emin olmak ve yapılması gereken güncellemeleri hızlıca gerçekleştirmek için Docker stack üzerinde bazı yönetim işlemleri yapılabilir. Eğer Compose dosyasını güncelleyip uygulamak istenirse, aynı `docker stack deploy` komutu tekrar kullanılmalı; sadece yeni `docker-compose.yml` dosyası verilmelidir. Bu şekilde, önceki sürüm ile yeni sürüm arasında geçiş yapılabilir.
Log Kontrolü
Deployment’da oluşabilecek hataları veya uyarıları görmek için log kontrolü de oldukça önemlidir. Her bir servisin logları, aşağıdaki komut ile takip edilebilir:
“`
docker service logs my_stack_web
“`
Swarm Çıkış ve Temizleme
Swarm modundan çıkmak için aşağıdaki komut kullanılabilir:
“`
docker swarm leave –force
“`
Bu komut, mevcut node’un Swarm’dan çıkmasını sağlar. Eğer birden çok node varsa ve bu sistemin tamamen kaldırılması isteniyorsa, tüm node’ların sırayla çıkarılması gerekmektedir.
Docker stack deploy ile uygulama dağıtımı yapmak, bu süreci sadeleştirir ve geliştiriciye büyük bir kolaylık sağlar. Docker Swarm, konteynerlerinizi kolayca yönetmenizi sağlayarak, verimliliği artırır ve uygulama performansını optimize eder. Bu yöntem, özellikle mikro hizmet mimarisi kullanan uygulamalarda idame ve ölçeklendirme işlemlerini son derece kolay hale getirir.