Docker Swarm Stack

Docker Swarm, Stack

Docker tarafından sunulan bir konteyner yönetim ve orkestrasyon aracıdır. Swarm, birden fazla Docker konteynerını yönetmek ve düzenlemek için kullanılır. Swarm, Docker konteynerlarına yüksek kullanılabilirlik, yük dengeleme, çoğaltma ve yeniden başlatma yetenekleri ekler.
Swarm master ve worker adı verilen makinelerin oluşturduğu bir ağdır "cluster"
raft consensus group ,internal distributed state store :masterların birbirine bağlı olduğu anlık makine durumlarını gösteren saklayan yapı.

docker swarm enable etmek için aşağıdaki komutu kullanıyoruz. ip döner.


>    docker swarm init

master nodu belirmek için aşağıdaki kodu kulanıyoruz.

-- listen-addr     node gelen istekleri dinlemek için


>    docker swarm init --advertise-addr ip_adresi -- listen-addr ip_adresi


yeni bir master node belirtmek istediğimizde container'a bağlanıp aşağıdaki kodu çalıştırıyoruz.


>    docker swarm join-token manager


yeni bir bir worker eklemek istiyorsak aşaıdaki kodu çalıştırıcağız.


>    docker swarm join-token worker


swarm altında docker containerları görmek için artık service komutuyla ayağa kaldıracağız.

replicas 1 : birden fazla kurmasını istiyorsak .

>    docker service create --name s_nginx --replicas 1 nginx

veya 

>    docker service create --name s_nginx -p 80:80 --replicas 3 nginx


altındaki çalışan container durumunu gösterir.


>    docker service ps s_nginx


eşitlik algoritması oldugu için 2. makine varsa  2. makinede kuracaktır.


>docker service scale s_nginx=2


servisleri kaldırmak için kullanılır.


>    docker service rm s_nginx


 node ile ilgili bilgilerini görmek için kullanılır


>    docker node


worker olan bir node manager olarak güncellemek için aşağıdaki kodu kullanılır.


>    docker node promote node_ismi


node durdurup başlatmak ve sonlandırmak istediğimizde kulnacağımız komutlar.

active    aktifleştirir

pause    durdurur

drain    sonlandırır

>    docker node update avability pause node_ismi


Docker Stack

Docker stack aslında docker swarm’ın production tarafında daha yönetilebilir bir şekilde işlemesi için ,bir konfigürasyon dosyası üzerinden kurgulandığı ve yönetildiği bir yapıdır. Ya da başka bir tanımlama ile docker compose dosyası ile docker swarmın tek elden yönetilmesini sağlamaktır.

yml dosyasında deploy için parametreler girilmiştir.

yml dosyamızı kaydettikten sonra, dosyamızın bulundugu dizine giderek aşağıdaki komutu çalıştırıyoruz ve stack servislerimiz ayağa kalkıyor.

>    docker stack deploy -c docker-compose.yml s_wordpress


docker-compose.yml dosya içeriği:

version: '3.1'
services:
s_wordpress:
image: wordpress
ports:
- 80:80
environment:
WORDPRESS_DB_HOST: s_db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: 12345
WORDPRESS_DB_NAME: wordpress_db
volumes:
- C:\docker_stack_wordpress\wordpress_data:/var/www/html

restart: always

deploy:
replicas: 1 # 2 ikitane replicae oluştur
restart_policy: #yeniden başlatma kuralı
max_attempts: 3 # 3 kere dene max
condition: on-failure # hata oldugunda dene
placement:
constraints:
- node.role == manager
s_db:
image: mysql:5.7
environment:
MYSQL_DATABASE: wordpress_db
MYSQL_USER: root
MYSQL_PASSWORD: 12345
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- C:\docker_stack_wordpress\mysql_data:/var/lib/mysql
ports:
- 3307:3306

deploy:
replicas: 1
restart_policy: #yeniden başlatma kuralı
condition: on-failure # hata oldugunda dene
placement:
constraints:
- node.role == manager

Related Posts

Docker Swarm Stack
4/ 5
Oleh