Bu maqolada dasturlash muhiti uchun qanday qilib tez va qulay Docker Swarm klasterini yaratishni ko'rsatib o'taman. 

Klaster yaratish

Klaster to'g'ri ishlashi uchun virtual mashinalarda quyidagi portlar ochiq bo'lishi kerak. 

  • Menejer node`lar uchun: 2376/tcp, 2377/tcp, 7946/tcp, 7946/udp, 4789/udp.
  • Ishchi node`lar uchun: 2376/tcp, 7946/tcp, 7946/udp, 4789/udp. 

Agar firewall sozlanmagan bo'lsa, portlar ochiq bo'ladi va alohida ochish shart emas.

 

Men virtual mashinalarni Hyper-V gipervizorida, multipass vositasi yordamida yarataman. VM yaratish bu darslikdan tashqari mavzu bo'lganligi sababli, qisqa ma'lumotlar bilan ko'rsatib o'tiladi.

1. Menejer node uchun VM yaratamiz va master deb nomlaymiz. Buning uchun PowerShell-da quyidagi buyruqni bajaramiz:

> multipass launch --name master

Buyruq muvofaqqiyatli bajarilgan bol'sa, quyidagi ma'lumotni console-da kuzatishingiz mumkin

2. Ishchi node uchun 2 ta VM yarating va worker1, worker2 deb nomlang. Buning uchun PowerShell-da quyidagi buyruqni bajaring:

> multipass launch --name worker1

Huddi shu buyruqni worker2 uchun ham bajaring.

 

Natijani tekshirish uchun yaratilgan VM-lar ro'yhatini console-ga chiqaramiz va u taxminan quyidagi ko'rinishga ega bo'ladi:

 

Docker-ni o'rnatish

Docker-ni o'rnatishni master VM dan boshlaymiz. Buning uchun master VM o'ting:

> multipass shell master

 

Docker manbasini o'rnating

Docker Engine-ni yangi mashinaga birinchi marta o'rnatishdan oldin siz Docker manbasini o'rnatishingiz kerak. Shundan so'ng siz Docker-ni manbadan o'rnatishingiz va yangilashingiz mumkin.

 

1. Apt paketi indeksini yangilang va zarur bo'lgan paketlarni o'rnating:

$ sudo apt-get update
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

 

2. Rasmiy Docker GPG kalitini qo'shing:

$ sudo mkdir -m 0755 -p /etc/apt/keyrings

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


3. Manbani sozlash uchun quyidagi buyruqdan foydalaning:

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

Docker Engine-ni o'rnating

 

1. Apt paketi indeksini yangilang

$ sudo apt-get update

 

2. Docker Engine, containerd va Docker Compose-ni o'rnating

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

3. Docker Engine muvaffaqiyatli o'rnatilganiga ishonch hosil qiling

$ sudo docker run hello-world

Hammasi muvaffaqiyatli o'tgan bo'lsa, taxminan quyidagi ma'lumotni ko'rishingiz mumkin:

Huddi shu tartibda docker'ni qolgan 2 ta ishchi VM larda ham o'rnating.

 

 

Swarm-ni sozlash

Swarm'ni sozlash uchun menejer node'ga ega bo'lgan virtual mashinaga o'ting va quyidagi buyruqni bajaring:

$ docker swarm init

Agar VMda 2 ta yoki undan ortiq IP manzilga ega bo'lsa, taxminan quyidagi xatoni ko'rishingiz mumkin:

Bunday xolatda siz IP manzillardan birini tanlab swarm-ni ishga tushirishingiz kerak. Buning uchun quyidagi buyruqni bajaring:

$ sudo docker swarm init  --advertise-addr <VM IP manizilidan bir>

Agar buyruq muvaffaqiyatli bajarilsa, javob sifatida siz quyidagi ma'lumotni olasiz:

Yangi yaratilgan klasterga ishchi node-larni biriktirish kerak bo'ladi. Buning uchun ischi node-ga o'ting va yuqorida javob tariqasidagi buyruqni bajaring. Natijada taxminan qyuidagi ma'lumotga ega bo'lasiz:

Agar barcha node-larda swarm muvaffaqiyatli sozlangan bo'lsa, node-lar ro'xatini consol-ga chiqaring va u taxminan quyidagicha bo'ladi:

 

Bizni klasterimiz tayyor va endi unda xizmat va stack-larni ishga tushirsak bo'ladi.