डॉकर के साथ लोड संतुलन

वेब एप्लिकेशन चलाते समय, आप आमतौर पर मल्टीथ्रेडिंग या जटिल वेब लूप का उपयोग करने के लिए अपने सॉफ़्टवेयर को परिवर्तित किए बिना अपने संसाधनों का अधिकतम उपयोग करना चाहते हैं। हालाँकि, डॉकर आपको सर्वर संसाधनों का अधिकतम लाभ उठाने के लिए आंतरिक रूप से आपके आवेदन को संतुलित करने का एक सरल तरीका प्रदान करता है। यह लेख आपको दिखाएगा कि CentOS पर Docker का उपयोग करके अपने वेब एप्लिकेशन को संतुलित करने के लिए Nginx का उपयोग कैसे करें।

चरण 1: एक साधारण एप्लिकेशन बनाएं

हम इस सरल अनुप्रयोग के निर्माण के लिए जंग का उपयोग करेंगे। मान लें कि आपके पास जंग स्थापित है, चलाएं cargo new webapp –bin। सफलता मिलने पर, आप एक निर्देशिका देखेंगे webapp। अंदर webapp, आपको एक फ़ाइल दिखाई देगी, जिसका नाम है Cargo.toml। निम्नलिखित पंक्तियों को इसमें संलग्न करें:

[dependencies.iron]
version = "*"

अगला, src/main.rsफ़ाइल के अंदर , सब कुछ हटा दें और इसे निम्नलिखित के साथ आबाद करें:

extern crate iron;

use iron::prelude::*;
use iron::status;

fn main() {
    Iron::new(|_: &mut Request| {
        Ok(Response::with((status::Ok, "Hello Vultr :)")))
    }).http("0.0.0.0:3000").unwrap();
}

नोट: आवेदन के भीतर आईपी को न बदलें। यह कॉन्फ़िगर किया गया है ताकि डॉकर आपके आवेदन को सुन सके।

एक बार जब आप समाप्त कर लें, तो निष्पादित करके एप्लिकेशन को संकलित करें cargo build –release। आपके सर्वर के आधार पर, इसमें कुछ मिनट लग सकते हैं। यदि कोई त्रुटि नहीं है, तो इन चरणों का पालन करके आवेदन का परीक्षण करें:

  • भागो target/release/webapp
  • http://0.0.0.0:3000/अपने ब्राउज़र में नेविगेट करें । 0.0.0.0अपने सर्वर के आईपी पते से बदलें ।

यदि सब कुछ ठीक से काम करता है, तो आप पृष्ठ पर "हैलो वल्चर :)" देखेंगे।

चरण 2: डॉकटर कंटेनर बनाएं

एक बनाएँ Dockerfileऔर इसे निम्नलिखित के साथ आबाद करें:

FROM centos:latest
MAINTAINER User <user@localhost>
RUN yum update -y
COPY ./webapp/target/release/webapp /opt/
EXPOSE 3000
WORKDIR /opt
CMD ./webapp

फ़ाइल सहेजें। फिर नामक एक फाइल बनाएं deploy.shऔर उसे निम्नलिखित के साथ पॉप्युलेट करें:

DEFAULT_PORT=45710
APP_PORT=3000
DEPLOY=5
NAME="webapp"
docker build -t webapp:example . 

for ((i=0; i<DEPLOY; i++)); do
        docker kill $NAME$i ; docker rm $NAME$i
        docker run --name $NAME$i -p 127.0.0.1:$(((i * 1000) + DEFAULT_PORT)):$APP_PORT -d webapp:example
done

जब आप इस स्क्रिप्ट को चलाते हैं, तो यह छवि का निर्माण करेगा और आपके द्वारा निर्धारित राशि के आधार पर कंटेनर को तैनात करेगा (डिफ़ॉल्ट 5 है)। यदि कंटेनर मौजूद है, तो यह फिर से तैनात होने से पहले इसे मार देगा और रजिस्ट्री से हटा देगा।

चरण 3: Nginx कॉन्फ़िगर करें

अब, Nginx कॉन्फ़िगरेशन फ़ाइल बनाएं और इसे निम्न के साथ पॉप्युलेट करें:

upstream application {
    server localhost:45710;
    server localhost:46710;
    server localhost:47710;
    server localhost:48710;
    server localhost:49710;
}

server {
    listen 0.0.0.0:80;    
    location / {
    expires 1w;
        proxy_pass http://application;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

0.0.0.0अपने सर्वर के आईपी पते से बदलें ।

करने के द्वारा Nginx को पुनरारंभ करें systemctl restart nginx। किसी भी त्रुटि का समाधान करें, फिर अगले चरण पर जाएं।

चरण 4: आवेदन को लागू करें

आवेदन को चलाकर तैनात करें bash ./deploy.sh

आप के साथ अपने आवेदन की स्थिति की जाँच कर सकते हैं docker ps- वहाँ 5 छवियों कि साथ शुरू बनाया जाएगा webapp। अब, http://0.0.0.0:3000/अपने ब्राउज़र में नेविगेट करें , आपको फिर से "हैलो, वल्चर :)" संदेश दिखाई देगा।

तो, क्या फर्क पड़ता है, बिल्कुल?

यदि आप लोड बैलेंसर कॉन्फ़िगरेशन के खिलाफ एक बेंचमार्क परीक्षण चलाते हैं, तो आप देखेंगे कि आपके सर्वर संसाधनों का अधिक उपयोग किया जा रहा है, जो आप चाहते हैं, खासकर यदि आपका आवेदन नोड जैसी भाषाओं में बनाया गया है जहां यह सामान्य रूप से एकल थ्रेडेड होगा। यदि आपको कभी भी अपने एप्लिकेशन को अपग्रेड करने की आवश्यकता होती है, तो आप ऐसा कर सकते हैं और deploy.shछवि को फिर से बनाने और अपने कंटेनरों को तैनात करने के लिए फिर से चलाएँ ।

एक टिप्पणी छोड़ें

डेबियन पर सेटअप NFS शेयर

डेबियन पर सेटअप NFS शेयर

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

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

LiteCart PHP, jQuery और HTML में लिखा गया एक स्वतंत्र और ओपन सोर्स शॉपिंग कार्ट प्लेटफॉर्म है। यह ई-कॉमर्स सॉफ्टवेअर का उपयोग करने के लिए एक सरल, हल���का और आसान है

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

एक अलग प्रणाली का उपयोग? माटोमो (पूर्व में पिविक) एक ओपन सोर्स एनालिटिक्स प्लेटफॉर्म है, जो गूगल एनालिटिक्स का एक खुला विकल्प है। Matomo स्रोत को होस्ट किया गया है

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

एक अलग प्रणाली का उपयोग? परिचय CyberPanel बाजार पर पहला नियंत्रण पैनल है जो दोनों खुला स्रोत है और OpenLiteSpeed ​​का उपयोग करता है। क्या थी?

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

परिचय यह आलेख बताएगा कि विंडोज सर्वर 2012 पर गारस मोड सर्वर को कैसे डाउनलोड और इंस्टॉल किया जाए। यह गाइड गहराई में होने के लिए बनाया गया है।

Linux पर एक TeamTalk Server सेटअप करें

Linux पर एक TeamTalk Server सेटअप करें

टीमटॉक एक कॉन्फ्रेंसिंग प्रणाली है जो उपयोगकर्ताओं को उच्च-गुणवत्ता वाले ऑडियो / वीडियो वार्तालाप, टेक्स्ट चैट, स्थानांतरण फ़ाइलें और स्क्रीन साझा करने की अनुमति देती है। यह मैं

CentOS पर FFmpeg कैसे स्थापित करें

CentOS पर FFmpeg कैसे स्थापित करें

FFmpeg ऑडियो और वीडियो रिकॉर्ड करने, कन्वर्ट करने और स्ट्रीम करने के लिए एक लोकप्रिय ओपन सोर्स समाधान है, जो सभी प्रकार की ऑनलाइन स्ट्रीमिंग सेवाओं में व्यापक रूप से उपयोग किया जाता है। मैं

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

एलयूकेएस (लिनक्स यूनिफाइड की सेटअप) लिनक्स के लिए उपलब्ध विभिन्न डिस्क एन्क्रिप्शन प्रारूपों में से एक है जो प्लेटफॉर्म एग्नॉस्टिक है। यह ट्यूटोरियल आपको बुद्धि प्रदान करेगा

अपने Vultr VPS को कैसे एक्सेस करें

अपने Vultr VPS को कैसे एक्सेस करें

Vultr अपने VPS को कॉन्फ़िगर करने, स्थापित करने और उपयोग करने के लिए कई अलग-अलग तरीके प्रदान करता है। क्रेडेंशियल एक्सेस करें आपके VPS के लिए डिफ़ॉल्ट एक्सेस क्रेडेंशियल ar

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

अक्टूबर एक खुला स्रोत सामग्री प्रबंधन प्रणाली है जो लारवेल PHP फ्रेमवर्क पर आधारित है। एक सुरुचिपूर्ण इंटरफ़ेस और एक संक्षिप्त मॉड्यूलर वास्तुकला के साथ