खोज…


परिचय

एक झुंड डोकर इंजन (या नोड्स ) की एक संख्या है जो सामूहिक रूप से सेवाओं को तैनात करता है । झुंड का उपयोग कई भौतिक, आभासी या क्लाउड मशीनों में प्रसंस्करण वितरित करने के लिए किया जाता है।

वाक्य - विन्यास

टिप्पणियों

झुंड मोड निम्नलिखित विशेषताएं लागू करता है:

  • क्लस्टर प्रबंधन डॉकर इंजन के साथ एकीकृत
  • विकेंद्रीकृत डिजाइन
  • घोषणा सेवा मॉडल
  • स्केलिंग
  • वांछित राज्य सामंजस्य
  • मल्टी-होस्ट नेटवर्किंग
  • सेवा खोज
  • भार संतुलन
  • डिफ़ॉल्ट रूप से सुरक्षित डिजाइन
  • रोलिंग अद्यतन

झुंड यात्रा के संबंध में अधिक आधिकारिक डॉकटर प्रलेखन के लिए: झुंड मोड अवलोकन


झुंड मोड सीएलआई कमांड

प्रलेखन के लिए कमांड विवरण पर क्लिक करें

एक झुंड शुरू करो

docker swarm init [OPTIONS]

एक नोड और / या प्रबंधक के रूप में एक झुंड में शामिल हों

docker swarm join [OPTIONS] HOST:PORT

एक नई सेवा बनाएँ

docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]

एक या अधिक सेवाओं पर विस्तृत जानकारी प्रदर्शित करें

docker service inspect [OPTIONS] SERVICE [SERVICE...]

सेवाओं की सूची दें

docker service ls [OPTIONS]

एक या अधिक सेवाएँ निकालें

docker service rm SERVICE [SERVICE...]

स्केल एक या कई प्रतिकृति सेवाएँ

docker service scale SERVICE=REPLICAS [SERVICE=REPLICAS...]

एक या अधिक सेवाओं के कार्यों को सूचीबद्ध करें

docker service ps [OPTIONS] SERVICE [SERVICE...]

एक सेवा का अद्यतन करें

docker service update [OPTIONS] SERVICE

डॉकटर-मशीन और वर्चुअलबॉक्स का उपयोग करके लिनक्स पर एक झुंड बनाएं

# Create the nodes
# In a real world scenario we would use at least 3 managers to cover the fail of one manager.
docker-machine create -d virtualbox manager
docker-machine create -d virtualbox worker1

# Create the swarm
# It is possible to define a port for the *advertise-addr* and *listen-addr*, if none is defined the default port 2377 will be used.
docker-machine ssh manager \
    docker swarm init \
    --advertise-addr $(docker-machine ip manager)
    --listen-addr $(docker-machine ip manager)

# Extract the Tokens for joining the Swarm
# There are 2 different Tokens for joining the swarm.
MANAGER_TOKEN=$(docker-machine ssh manager docker swarm join-token manager --quiet)
WORKER_TOKEN=$(docker-machine ssh manager docker swarm join-token worker --quiet)


# Join a worker node with the worker token
docker-machine ssh worker1 \
    docker swarm join \
    --token $WORKER_TOKEN \
    --listen-addr $(docker-machine ip worker1) \
    $(docker-machine ip manager):2377



कार्यकर्ता और प्रबंधक को टोकन में शामिल करें

जब एक झुंड में नए नोड्स के प्रावधान को स्वचालित करते हैं, तो आपको यह जानना होगा कि झुंड के लिए सही जुड़ाव टोकन के साथ-साथ प्रबंधक के विज्ञापित पते के लिए क्या है। आप मौजूदा प्रबंधक नोड में से किसी पर निम्न आदेशों को चलाकर इसका पता लगा सकते हैं:

# grab the ipaddress:port of the manager (second last line minus the whitespace)
export MANAGER_ADDRESS=$(docker swarm join-token worker | tail -n 2 |  tr -d '[[:space:]]')

# grab the manager and worker token
export MANAGER_TOKEN=$(docker swarm join-token manager -q)
export WORKER_TOKEN=$(docker swarm join-token worker -q)

-Q विकल्प केवल टोकन को आउटपुट करता है। इस विकल्प के बिना आपको झुंड के पंजीकरण के लिए पूरी कमांड मिलती है।

फिर नए प्रावधान वाले नोड्स पर, आप झुंड का उपयोग करके शामिल हो सकते हैं।

docker swarm join --token $WORKER_TOKEN $MANAGER_ADDRESS

नमस्ते विश्व अनुप्रयोग

आमतौर पर आप एक प्रतिकृति और ऑर्केस्ट्रेटेड एप्लिकेशन बनाने के लिए सेवाओं का ढेर बनाना चाहते हैं।

एक विशिष्ट आधुनिक वेब एप्लिकेशन में एक डेटाबेस, एपीआई, फ्रंटेंड और रिवर्स प्रॉक्सी शामिल हैं।

हठ

डेटाबेस को दृढ़ता की आवश्यकता होती है, इसलिए हमें कुछ फाइल सिस्टम की आवश्यकता होती है जो एक झुंड में सभी नोड्स में साझा किया जाता है। यह NAS, NFS सर्वर, GFS2 या कुछ और हो सकता है। इसे स्थापित करना यहां दायरे से बाहर है। वर्तमान में डॉकर में शामिल नहीं है और एक झुंड में दृढ़ता का प्रबंधन नहीं करता है। यह उदाहरण मानता है कि वहाँ /nfs/ साझा स्थान सभी नोड्स पर आरोहित है।

नेटवर्क

एक दूसरे के साथ संवाद करने में सक्षम होने के लिए, एक झुंड में सेवाओं को एक ही नेटवर्क पर होना चाहिए।

एक आईपी रेंज (यहां 10.0.9.0/24 ) और नेटवर्क नाम ( hello-network ) चुनें और एक कमांड चलाएं:

docker network create \
  --driver overlay \
  --subnet 10.0.9.0/24 \
  --opt encrypted \
  hello-network

डेटाबेस

पहली सेवा जो हमें चाहिए वह एक डेटाबेस है। एक उदाहरण के रूप में postgresql का उपयोग करते हैं। nfs/postgres में डेटाबेस के लिए एक फ़ोल्डर बनाएँ और इसे चलाएं:

docker service create --replicas 1 --name hello-db \
       --network hello-network -e PGDATA=/var/lib/postgresql/data \
       --mount type=bind,src=/nfs/postgres,dst=/var/lib/postgresql/data \
       kiasaki/alpine-postgres:9.5

सूचना है कि हम का उपयोग किया है --network hello-network और --mount विकल्प।

एपीआई

एपीआई बनाना इस उदाहरण के दायरे से बाहर है, तो आइए दिखाते हैं कि आपके पास username/hello-api तहत एपीआई छवि है।

docker service create --replicas 1 --name hello-api \
       --network hello-network \
       -e NODE_ENV=production -e PORT=80 -e POSTGRESQL_HOST=hello-db \
       username/hello-api

ध्यान दें कि हमने अपनी डेटाबेस सेवा का एक नाम दिया है। डॉकर झुंड में एक एम्बेडेड राउंड-रॉबिन डीएनएस सर्वर है, इसलिए एपीआई अपने DNS नाम का उपयोग करके डेटाबेस से कनेक्ट करने में सक्षम होगा।

प्रॉक्सी को उलट दें

आइए हमारे एपीआई की बाहरी दुनिया की सेवा करने के लिए नेग्नेक्स सेवा बनाएं। किसी साझा स्थान में nginx config फ़ाइलों को बनाएँ और इसे चलाएं:

docker service create --replicas 1 --name hello-load-balancer \
       --network hello-network \
       --mount type=bind,src=/nfs/nginx/nginx.conf,dst=/etc/nginx/nginx.conf \
       -p 80:80 \
       nginx:1.10-alpine

ध्यान दें कि हमने पोर्ट को प्रकाशित करने के लिए -p विकल्प का उपयोग किया है। यह पोर्ट झुंड में किसी भी नोड के लिए उपलब्ध होगा।

नोड हिमस्खलन

झुंड मोड नोड उपलब्धता:

  • सक्रिय का मतलब है कि अनुसूचक नोड को कार्य सौंप सकता है।
  • ठहराव का अर्थ है कि शेड्यूलर नोड को नए कार्य असाइन नहीं करता है, लेकिन मौजूदा कार्य चल रहे हैं।
  • नाली का मतलब है कि शेड्यूलर नोड को नए कार्य आवंटित नहीं करता है। शेड्यूलर किसी भी मौजूदा कार्य को बंद कर देता है और उपलब्ध नोड पर शेड्यूल करता है।

मोड उपलब्धता बदलने के लिए:

#Following commands can be used on swarm manager(s)
docker node update --availability drain node-1
#to verify:
docker node ls

झुंड नोड्स को बढ़ावा देना या उन्हें बढ़ावा देना

नोड या नोड के सेट को बढ़ावा देने के लिए, docker node promote प्रबंधक नोड से docker node promote :

docker node promote node-3 node-2

Node node-3 promoted to a manager in the swarm.
Node node-2 promoted to a manager in the swarm.

नोड या नोड के सेट को डिमोट करने के लिए, docker node demote मैनेजर से docker node demote चलाएं:

docker node demote node-3 node-2

Manager node-3 demoted in the swarm.
Manager node-2 demoted in the swarm.

झुंड छोड़ना

कार्यकर्ता नोड:

#Run the following on the worker node to leave the swarm.

docker swarm leave
Node left the swarm.

यदि नोड में प्रबंधक की भूमिका है, तो आपको प्रबंधकों के कोरम को बनाए रखने के बारे में एक चेतावनी मिलेगी। आप प्रबंधक नोड पर छोड़ने के लिए --force का उपयोग कर सकते हैं:

#Manager Node

docker swarm leave --force
Node left the swarm.

झुंड छोड़ दिया नोड्स अभी भी docker node ls आउटपुट में दिखाई देंगे।

सूची से नोड हटाने के लिए:

docker node rm node-2

node-2


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow