Docker Swarm. Klaster yaratish
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.