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.