Ubuntu 24.04
Sponsored Link

Docker : Swarm झुंड2024/06/13

 

एकाधिक Docker नोड्स के साथ Docker क्लस्टर बनाने के लिए Docker Swarm को कॉन्फ़िगर करें।

इस उदाहरण पर, Swarm क्लस्टर को 3 Docker नोड्स के साथ निम्नानुसार कॉन्फ़िगर करें।
Swarm क्लस्टर पर 2 भूमिकाएँ हैं, वे हैं [Manager नोड्स] और [Worker नोड्स]।
यह उदाहरण उन भूमिकाओं को इस प्रकार सेट करना दिखाता है।

 -----------+---------------------------+--------------------------+------------
            |                           |                          |
        eth0|10.0.0.51              eth0|10.0.0.52             eth0|10.0.0.53
 +----------+-----------+   +-----------+----------+   +-----------+----------+
 | [ node01.srv.world ] |   | [ node02.srv.world ] |   | [ node03.srv.world ] |
 |       Manager        |   |        Worker        |   |        Worker        |
 +----------------------+   +----------------------+   +----------------------+

[1]
[2] सभी नोड्स पर live-restore सुविधा अक्षम करें।
(क्योंकि यह Swarm मोड पर live-restore सुविधा का उपयोग नहीं कर सकता है)
root@node01:~#
vi /etc/docker/daemon.json
# नया निर्माण

{
    "live-restore": false
}

root@node01:~#
systemctl restart docker

[3] प्रबंधक नोड पर Swarm क्लस्टर कॉन्फ़िगर करें।
root@node01:~#
docker swarm init

Swarm initialized: current node (qpitbhvhbl3ztnwbhuuon492r) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5lrebm28fiqi22ihg0ueehtjumql9d3skaj3uqevdj56qwy2wg-dv59ktfk632756mi4idp6v2tp 10.0.0.51:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
[4] सभी वर्कर नोड्स पर Swarm क्लस्टर में शामिल हों।
उस कमांड को चलाना ठीक है जो मैनेजर नोड पर swarm init चलाते समय दिखाया गया था।
root@node02:~#
docker swarm join \
--token SWMTKN-1-5lrebm28fiqi22ihg0ueehtjumql9d3skaj3uqevdj56qwy2wg-dv59ktfk632756mi4idp6v2tp 10.0.0.51:2377

This node joined a swarm as a worker.
[5] [node ls] कमांड से सत्यापित करें कि वर्कर नोड सामान्य रूप से क्लस्टर में शामिल हो सकते हैं।
root@node01:~#
docker node ls

ID                            HOSTNAME           STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
qpitbhvhbl3ztnwbhuuon492r *   node01.srv.world   Ready     Active         Leader           24.0.7
je4dfokbmb5roj26yvb6ynhcw     node02.srv.world   Ready     Active                          24.0.7
bz7gjckb75rzaz5gm4mwaiyir     node03.srv.world   Ready     Active                          24.0.7
[6] Swarm क्लस्टर बनाने के बाद, Swarm क्लस्टर द्वारा प्रदान की जाने वाली सेवाओं को कॉन्फ़िगर करें।
उदाहरण के लिए, Swarm सेवा को कॉन्फ़िगर करने के लिए एक Nginx कंटेनर बनाएं।
आम तौर पर, सभी नोड्स पर रजिस्ट्री पर एक कंटेनर छवि का उपयोग किया जाता है, लेकिन इस उदाहरण पर, Swarm क्लस्टर के लिए सेटिंग्स और एक्सेस को सत्यापित करने के लिए प्रत्येक नोड पर कंटेनर छवियां बनाएं।
root@node01:~#
vi Dockerfile
FROM ubuntu
MAINTAINER ServerWorld <admin@srv.world>

RUN apt-get update
RUN apt-get -y install nginx
RUN echo "Nginx on node01" > /var/www/html/index.html

EXPOSE 80
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

root@node01:~#
docker build -t nginx-server:latest .

[7] प्रबंधक नोड पर सेवा कॉन्फ़िगर करें।
सेवा को कॉन्फ़िगर करने में सफल होने के बाद, यह सामान्य रूप से काम करता है यह सत्यापित करने के लिए प्रबंधक नोड होस्टनाम या आईपी पते तक पहुंचें। वर्कर नोड्स तक पहुंच अनुरोध निम्नानुसार राउंड-रॉबिन के साथ लोड-संतुलित हैं।
root@node01:~#
docker images

REPOSITORY                  TAG           IMAGE ID       CREATED          SIZE
nginx-server                latest        c9fc449433be   59 seconds ago   123MB
dlp.srv.world:5000/ubuntu   my-registry   17c0145030df   13 days ago      76.2MB

# 2 प्रतिकृतियों के साथ एक सेवा बनाएँ

root@node01:~#
docker service create --name swarm_cluster --replicas=2 -p 80:80 nginx-server:latest

versions of the image.

v4z6papfefidlhkpp5mampz3t
overall progress: 2 out of 2 tasks
1/2: running
2/2: running
verify: Service converged

# सेवा सूची दिखाएँ

root@node01:~#
docker service ls

ID             NAME            MODE         REPLICAS   IMAGE                 PORTS
v4z6papfefid   swarm_cluster   replicated   2/2        nginx-server:latest   *:80->80/tcp

# सेवा का निरीक्षण करें

root@node01:~#
docker service inspect swarm_cluster --pretty


ID:             v4z6papfefidlhkpp5mampz3t
Name:           swarm_cluster
Service Mode:   Replicated
 Replicas:      2
Placement:
UpdateConfig:
 Parallelism:   1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Parallelism:   1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:
 Image:         nginx-server:latest
 Init:          false
Resources:
Endpoint Mode:  vip
Ports:
 PublishedPort = 80
  Protocol = tcp
  TargetPort = 80
  PublishMode = ingress

# सेवा स्थिति दिखाएँ

root@node01:~#
docker service ps swarm_cluster

ID             NAME              IMAGE                 NODE               DESIRED STATE   CURRENT STATE                ERROR     PORTS
41l5x91uu7w0   swarm_cluster.1   nginx-server:latest   node03.srv.world   Running         Running about a minute ago            
mvpi4lftdcg5   swarm_cluster.2   nginx-server:latest   node02.srv.world   Running         Running about a minute ago            

# सत्यापित करें कि यह सामान्य रूप से काम करता है

root@node01:~#
curl node01.srv.world

Nginx on node02
root@node01:~#
curl node01.srv.world

Nginx on node03
root@node01:~#
curl node01.srv.world

Nginx on node02
root@node01:~#
curl node01.srv.world

Nginx on node03
[8] यदि आप प्रतिकृतियों की संख्या बदलना चाहते हैं, तो निम्नानुसार कॉन्फ़िगर करें।
# प्रतिकृतियों को 3 में बदलें

root@node01:~#
docker service scale swarm_cluster=3

swarm_cluster scaled to 3
overall progress: 3 out of 3 tasks
1/3: running
2/3: running
3/3: running
verify: Service converged
root@node01:~#
docker service ps swarm_cluster

ID             NAME              IMAGE                 NODE               DESIRED STATE   CURRENT STATE            ERROR     PORTS
41l5x91uu7w0   swarm_cluster.1   nginx-server:latest   node03.srv.world   Running         Running 4 minutes ago
mvpi4lftdcg5   swarm_cluster.2   nginx-server:latest   node02.srv.world   Running         Running 4 minutes ago
zirr3725j2y7   swarm_cluster.3   nginx-server:latest   node01.srv.world   Running         Running 39 seconds ago

# पहुंच सत्यापित करें

root@node01:~#
curl node01.srv.world

Nginx on node01
root@node01:~#
curl node01.srv.world

Nginx on node02
root@node01:~#
curl node01.srv.world

Nginx on node03
मिलान सामग्री