Docker : Swarm झुंड2023/09/04 |
एकाधिक 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 } systemctl restart docker |
[3] | प्रबंधक नोड पर Swarm क्लस्टर कॉन्फ़िगर करें। |
root@node01:~# docker swarm init Swarm initialized: current node (p8b0irmy3elmj1vrdsonfiv40) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-2lxb5xwdxogw3esn78wahhcw8sj3p47wyan0xlla0vy288ofxb-ew6kbqs3qnj2p2nmqm2hdoa80 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-2lxb5xwdxogw3esn78wahhcw8sj3p47wyan0xlla0vy288ofxb-ew6kbqs3qnj2p2nmqm2hdoa80 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 p8b0irmy3elmj1vrdsonfiv40 * node01.srv.world Ready Active Leader 20.10.12 pda4o1jnkcka35rup801abljf node02.srv.world Ready Active 20.10.12 bqwt9t82vklehlyrlos7neueq node03.srv.world Ready Active 20.10.12 |
[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;"] docker build -t nginx-server:latest . |
[7] | प्रबंधक नोड पर सेवा कॉन्फ़िगर करें। सेवा को कॉन्फ़िगर करने में सफल होने के बाद, यह सामान्य रूप से काम करता है यह सत्यापित करने के लिए प्रबंधक नोड होस्टनाम या आईपी पते तक पहुंचें। वर्कर नोड्स तक पहुंच अनुरोध निम्नानुसार राउंड-रॉबिन के साथ लोड-संतुलित हैं। |
root@node01:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx-server latest 396adbbc737d About a minute ago 160MB ubuntu latest 7e0aa2d69a15 2 weeks ago 72.7MB # 2 प्रतिकृतियों के साथ एक सेवा बनाएँ root@node01:~# docker service create --name swarm_cluster --replicas=2 -p 80:80 nginx-server:latest vnj5f8bzgqctnpbo7e21vhx7a 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 vnj5f8bzgqct swarm_cluster replicated 2/2 nginx-server:latest *:80->80/tcp # सेवा का निरीक्षण करें root@node01:~# docker service inspect swarm_cluster --pretty ID: vnj5f8bzgqctnpbo7e21vhx7a 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 i8kqhuro1i0a swarm_cluster.1 nginx-server:latest node02.srv.world Running Running about a minute ago mp2run84lhsi swarm_cluster.2 nginx-server:latest node01.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 node01 root@node01:~# curl node01.srv.world Nginx on node02 root@node01:~# curl node01.srv.world Nginx on node01 |
[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 i8kqhuro1i0a swarm_cluster.1 nginx-server:latest node02.srv.world Running Running 2 minutes ago mp2run84lhsi swarm_cluster.2 nginx-server:latest node01.srv.world Running Running 2 minutes ago avioamhacach swarm_cluster.3 nginx-server:latest node03.srv.world Running Running 14 seconds ago # पहुंच सत्यापित करें 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 node01 |
Sponsored Link |
|