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
:
- Klaster (Swarm): Vahid məntiqi birliyə birləşdirilmiş Docker-hostlar qrupu.
- Managerlər (Managers): Klasteri idarə edən və tapşırıqları işçi düyünlər arasında paylayan düyünlər.
- İşçi düyünlər (Workers): Tapşırıqları yerinə yetirən (konteynerləri işə salan) düyünlər.
- 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ı.
- 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ı
- docker
swarm
init: Yeni Swarm klasterini başlatmaq. - docker
swarm
join: Düyünü mövcud klasterə qoşmaq. - docker
node
ls: Klasterdəki düyünləri görmək. - docker
service
create: Yeni servis yaratmaq. - docker
service
ls: Aktiv servisləri görmək. - docker
service
scale: Servisi genişləndirmək. - 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:
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:
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:
docker node ls
docker node ls
komandasının nəticə nümunəsi
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:
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:
docker service ls
docker service ls
əmrinə nümunə çıxışı
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:
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:
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:
- 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.
- 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
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:
docker stack deploy -c docker-compose.yml mystack
Stack-ə baxış
Yerləşdirilmiş stack-lərə baxış:
docker stack ls
Stack-dəki xidmətlərə baxış
docker stack services mystack
GO TO FULL VERSION