CodeGym /Kurslar /Docker SELF /Docker Swarm-a giriş

Docker Swarm-a giriş

Docker SELF
Səviyyə , Dərs
Mövcuddur

6.1 Əsas konsepsiyalar Docker Swarm

Docker Swarm — bu, Docker-ə daxil olan konteynerlərin orkestrasiya sistemidir ki, Docker hostlarından ibarət klasteri yaratmağa, idarə etməyə və genişləndirməyə imkan yaradır. Swarm, bir qrup Docker-hostunu, konteynerləri işə salmaq və yükləri düyünlər arasında paylamaq üçün vahid məntiqi hosta çevirir. Bu mühazirədə biz Docker Swarm-ın əsaslarını, onun arxitekturasını, əsas komponentlərini və klasteri idarə etməyə dair əsas komandaları müzakirə edəcəyik.

Əsas konsepsiyalar Docker Swarm:

  1. Klaster (Swarm): Vahid məntiqi birliyə birləşdirilmiş Docker-hostlar qrupu.
  2. Managerlər (Managers): Klasteri idarə edən və tapşırıqları işçi düyünlər arasında paylayan düyünlər.
  3. İşçi düyünlər (Workers): Tapşırıqları yerinə yetirən (konteynerləri işə salan) düyünlər.
  4. Servislər (Services): Hansi konteynerlərin işə salınacağını və necə genişləndirilməli olduğunu müəyyənləşdirən tətbiqlərin məntiqi təqdimatı.
  5. Tapşırıqlar (Tasks): Servislərin nümunələri olan tək konteynerlər.

Arxitektura Docker Swarm

Docker Swarm managerlərlə və işçi düyünlərlə olan arxitekturadan istifadə edir klasteri idarə etmək üçün. Managerlər klasterin vəziyyətini idarə edir və tapşırıqları paylayır, işçi düyünlər isə bu tapşırıqları yerinə yetirir.

Managerlər:

  • Klasterin vəziyyətini idarə edir.
  • Tapşırıqları işçi düyünlər arasında paylayır.
  • Yüksək mövcudluq və dayanıqlılıq təmin edir.

İşçi düyünlər:

  • Managerlərin müəyyən etdiyi tapşırıqları yerinə yetirir.
  • Managerlərdən alınan təlimatlar əsasında konteynerləri işə salır.

Əsas Docker Swarm komandaları

  1. docker swarm init: Yeni Swarm klasterini başlatmaq.
  2. docker swarm join: Düyünü mövcud klasterə qoşmaq.
  3. docker node ls: Klasterdəki düyünləri görmək.
  4. docker service create: Yeni servis yaratmaq.
  5. docker service ls: Aktiv servisləri görmək.
  6. docker service scale: Servisi genişləndirmək.
  7. docker service rm: Servisi silmək.

6.2 Docker Swarm klasterinin yaradılması

Docker Swarm klasterinin yaradılması və idarə olunması

Addım 1: Klasterin inizializasiyası

Birinci hostda (menecer) aşağıdakı komandanı işlədin:

Terminal


docker swarm init --advertise-addr 
    
   

Bu əmr yeni bir Swarm klasterini inizializasiya edir və işçi node-ları qoşmaq üçün komanda göstərəcək.

Addım 2: İşçi node-ların qoşulması

Digər hostlarda docker swarm init tərəfindən göstərilən komandanı işlədin ki, onlar klasterə qoşulsunlar:

Terminal


docker swarm join --token 
    
    
     :2377 
    
   

Addım 3: Node-lara baxış

Klasterdə bütün node-ları görmək üçün aşağıdakı komandanı istifadə edin:

Terminal


docker node ls 

docker node ls komandasının nəticə nümunəsi

Terminal


ID                                    HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
qwertyuiop12345    manager-node        Ready               Active                        Leader
asdfghjkl67890          worker-node1        Ready               Active              
zxcvbnm09876           worker-node2        Ready               Active              

6.3 Docker Swarm İdarəetmə

Docker Swarm xidmətlərinin idarə edilməsi

1. Xidmətin yaradılması

Bütün düyünlərdə işləyəcək bir xidmət yaradın:

Terminal


docker service create --name my_web --replicas 3 -p 8080:80 nginx  

Bu nümunədə, my_web adlı bir xidmət yaradılır. Bu xidmət 3 Nginx instansiyasını işə salır və konteynerin 80 portunu hostun 8080 portuna çıxarır.

2. Xidmətlərin görüntülənməsi

Klasterdə işləyən bütün xidmətləri göstər:

Terminal


docker service ls 

docker service ls əmrinə nümunə çıxışı

Terminal


ID                     NAME         MODE           REPLICAS     IMAGE
ab12345       my_web   replicated        3/3              nginx:latest

3. Xidmətin miqyasının artırılması

Xidmətin instansiya (replika) sayını dəyişdirmək üçün docker service scale əmri istifadə edin:

Terminal


docker service scale my_web=5

İndi my_web xidməti 5 instansiyaya sahib olacaq.

4. Xidmətin yenilənməsi

Xidməti yeni image versiyası ilə yeniləmək üçün docker service update əmri istifadə edin:

Terminal


docker service update --image nginx:latest my_web 

Yüksək əlçatanlıq təmin edilməsi

Docker Swarm yüksək əlçatanlığı təmin edir, belə ki, tapşırıqlar bir neçə düyün arasında paylanır və nasazlıq zamanı konteynerlər avtomatik olaraq bərpa olunur. Yüksək əlçatanlıq üçün aşağıdakılar tövsiyə edilir:

  1. Bir neçə menecer istifadə edin: Kvorum problemlərinin qarşısını almaq üçün cüt olmayan sayda menecerə (məsələn, 3 və ya 5) sahib olmaq tövsiyə edilir.
  2. Xidmət replika sayını artırın: Hər bir xidmət üçün bir neçə replika təyin edin ki, nasazlıq zamanı davamlılıq təmin edilsin.

Faydalı məlumat! Kvorum, bir hərəkətin (məsələn, məlumatların yazılması və ya liderin seçilməsi) etibarlı sayılması üçün razılaşmalı və ya təsdiq etməli olan düyünlərin əksəriyyətidir. Məsələn, 5 düyünlü bir klasterdə kvorum 3 düyün olacaqdır.

6.4 Docker Compose üçün Docker Swarm konfiqurasiya nümunəsi

Docker Compose, Docker Swarm ilə çox konteynerli tətbiqlərin idarə edilməsini asanlaşdırmaq üçün istifadə oluna bilər.

docker-compose.yml faylı nümunəsi

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080 -8090:80"
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: example
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure 
    networks:
      - my_overlay_network
        
networks:
  my_overlay_network:
    driver: overlay
    

Docker Compose-in Swarm-da işə salınması

Docker Swarm-da stack yerləşdirmək üçün bu əmrdən istifadə edin:

Terminal


docker stack deploy -c docker-compose.yml mystack 

Stack-ə baxış

Yerləşdirilmiş stack-lərə baxış:

Terminal


docker stack ls 

Stack-dəki xidmətlərə baxış

Terminal

    
docker stack services mystack 
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION