होस्ट किए गए टारगेट का रेफ़रंस

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

एनवायरमेंट वैरिएबल की सीमाएं

होस्ट किए गए टारगेट, एनवायरमेंट वैरिएबल के साइज़ और संख्या को सीमित करते हैं जिसे होस्ट किए गए टारगेट रनटाइम एनवायरमेंट में सेट किया जा सकता है.

  • 1,000: एक एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा लंबाई.
  • 100: एनवायरमेंट के ज़्यादा से ज़्यादा ऐसे वैरिएबल जो सेट किए जा सकते हैं.

एनवायरमेंट वैरिएबल सेट करने के बारे में जानकारी के लिए, यहां देखें मेनिफ़ेस्ट फ़ाइल.

ऐप्लिकेशन के रनटाइम में सेट किए गए एनवायरमेंट वैरिएबल

होस्ट किए गए टारगेट ऐप्लिकेशन को डिप्लॉय करते समय, यहां दिए गए एनवायरमेंट वैरिएबल सेट होते हैं और रनटाइम के दौरान आपके ऐप्लिकेशन में उपलब्ध होती हैं:

  • APIGEE_ENVIRONMENT - वह एनवायरमेंट जहां होस्ट किया गया टारगेट प्रॉक्सी डिप्लॉय किया जाता है.
  • APIGEE_ORGANIZATION - वह संगठन जहां होस्ट किया गया टारगेट प्रॉक्सी डिप्लॉय किया गया है.
  • PORT - वह पोर्ट जहां होस्ट किया गया टारगेट ऐप्लिकेशन सुनना ज़रूरी है.

सिस्टम के संसाधन का बंटवारा

होस्ट किए गए हर टारगेट के इंस्टेंस को नीचे दिए गए संसाधन मिलते हैं:

  • 256 एमबी मेमोरी
  • 1.2 गीगाहर्ट्ज़ सीपीयू

स्केलिंग:

इस सेक्शन में बताया गया है कि Edge खाते के टाइप के आधार पर, होस्ट किए गए टारगेट ऐप्लिकेशन की संख्या कैसे बढ़ाई जाती है हैं.
  • Apigee Edge का ट्रायल वर्शन, हर प्रॉक्सी के लिए एक होस्ट किए गए टारगेट इंस्टेंस तक सीमित है.
  • पैसे चुकाकर लिए जाने वाले Apigee Edge खातों को, अनुरोध की दर, जवाब मिलने में लगने वाले समय, और हर प्रॉक्सी पर अन्य ऐप्लिकेशन मेट्रिक होती हैं.
  • होस्ट किए गए टारगेट ऐप्लिकेशन, कोई गतिविधि न होने पर, Apigee Edge स्केल के पेड और ट्रायल वर्शन, दोनों पर डिप्लॉय किए जाते हैं और उन्हें शून्य कर दिया जाता है. इस स्थिति में, कुछ समय के लिए जवाब मिलने में ज़्यादा समय लग सकता है. इन्हें भी देखें आम समस्याएं

मेनिफ़ेस्ट फ़ाइल

होस्ट किए गए ऐप्लिकेशन को बनाने और डिप्लॉय करने के लिए, Edge की संसाधन/होस्ट डायरेक्ट्री में app.yaml नाम की मेनिफ़ेस्ट फ़ाइल. इस फ़ाइल में होस्ट किए गए लक्ष्य ऐप्लिकेशन बनाने और लागू करने के लिए ज़रूरी जानकारी शामिल है.

मैनफ़िएस्ट फ़ाइल सिंटैक्स

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

मेनिफ़ेस्ट फ़ाइल के एलिमेंट

app.yaml मेनिफ़ेस्ट फ़ाइल में ये एलिमेंट होते हैं:

  • रनटाइम - (ज़रूरी है) उस ऐप्लिकेशन का टाइप बताता है जिसे डिप्लॉय किया जा रहा है. आपको node तय करना होगा.
  • runtimeVersion - (ज़रूरी नहीं) रनटाइम का वह वर्शन जो इस्तेमाल करता है. डिफ़ॉल्ट: Node.js LTS (v10.x). Node के लिए Docker आधिकारिक रिपॉज़िटरी देखें देखें.
  • कमांड - (ज़रूरी नहीं) इसका इस्तेमाल करके, निर्देश देने के लिए दूसरे निर्देश का इस्तेमाल किया जा सकता है. डिफ़ॉल्ट निर्देश का इस्तेमाल किया गया है. डिफ़ॉल्ट: Node.js=npm
  • orgs - (ज़रूरी नहीं) कमांड लाइन आर्ग्युमेंट की कलेक्शन ऐप्लिकेशन (स्टैंडर्ड YAML अरे सिंटैक्स में बताया गया है). आम तौर पर, इन्हें डिफ़ॉल्ट कमांड में जोड़ा जाता है. डिफ़ॉल्ट तौर पर, यह शुरू करें होता है. उदाहरण के लिए, डिफ़ॉल्ट रूप से Node.js ऐप्लिकेशन को npm start.
  • env - (ज़रूरी नहीं) एनवायरमेंट वैरिएबल (नाम/वैल्यू पेयर) का कलेक्शन का इस्तेमाल करें. ये वैरिएबल आपकी डिप्लॉय किए गए होस्ट किए गए टारगेट ऐप्लिकेशन.
    • name - वैरिएबल का नाम.
    • मान | valueRef - आपके पास दो विकल्प हैं. आपके पास लिटरल वैल्यू सेट करने का विकल्प है या कुंजी वैल्यू वाले मैप में स्टोर की गई वैल्यू का रेफ़रंस दें. कुंजी मान वाले मैप में यह ज़रूरी है आपके Edge एनवायरमेंट में पहले से मौजूद है. Key Value Maps के साथ काम करना देखें
      • अगर value का इस्तेमाल किया जाता है, तो वैरिएबल name और लिटरल value तय करें. उदाहरण के लिए:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • अगर valueRef का इस्तेमाल किया जाता है, इसके बाद, आपको उस की वैल्यू मैप (केवीएम) का नाम और एक कुंजी देनी होगी जिसे आपने पहले Edge में बनाया था. उदाहरण के लिए:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    मेनिफ़ेस्ट फ़ाइलों के उदाहरण

    इस सेक्शन में Node.js के लिए उदाहरण के तौर पर मेनिफ़ेस्ट फ़ाइलें शामिल हैं का इस्तेमाल करें. होस्ट किए गए टारगेट ऐप्लिकेशन को डिप्लॉय करने के लिए, मेनिफ़ेस्ट फ़ाइल की ज़रूरत होती है. साथ ही, यह फ़ाइल मौजूद होनी चाहिए apiproxy/resources/hosted डायरेक्ट्री में और फ़ाइल का नाम app.yaml होना चाहिए.

    Node.js ऐप्लिकेशन के लिए app.yaml (मेनिफ़ेस्ट) फ़ाइलों के उदाहरण नीचे दिए गए हैं.

    लिटरल एनवायरमेंट वैरिएबल के बारे में बताने वाला उदाहरण:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    स्टार्ट कमांड, कमांड लाइन आर्ग्युमेंट, और एक एनवायरमेंट वैरिएबल का उदाहरण.

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    की वैल्यू मैप (केवीएम) रेफ़रंस के बारे में बताने वाला उदाहरण:

    केवीएम ऐक्सेस के बारे में ज़्यादा जानने के लिए, मेनिफ़ेस्ट फ़ाइल देखें.

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    GitHub पर होस्ट किए गए टारगेट ऐप्लिकेशन का सैंपल

    Apigee, होस्ट किए गए टारगेट ऐप्लिकेशन के साथ GitHub पर सैंपल प्रॉक्सी उपलब्ध कराता है Node.js में इस रेपो का क्लोन बनाएं और README के निर्देशों का पालन करके, कोई भी प्रॉक्सी डिप्लॉय कर सकता है.

    ज़रूरी शर्तें

    सैंपल डिप्लॉय करने के लिए, आपके सिस्टम पर दो टूल इंस्टॉल होने चाहिए:

    • apigeetool -- एक कमांड लाइन टूल का इस्तेमाल करके एज प्रॉक्सी को डिप्लॉय किया जा सकता है.
    • get_token - apigeetool के लिए ज़रूरी अनुमति देने वाला टोकन पाने के लिए एक कमांड-लाइन टूल.

    अगर आपको स्थानीय तौर पर सैंपल की जांच करनी है, तो आपके पास Node.js इंस्टॉल होना चाहिए.

    सैंपल रेपो की जानकारी लेना

    1. ब्राउज़र में, https://github.com/apigee/api-platform-samples पर जाएं.
    2. क्लोन या डाउनलोड करें पर क्लिक करें और रेपो को अपने लोकल सिस्टम तक पाएं. इसके लिए, आपका पसंदीदा तरीका.
    3. cd से <your install dr>/api-platform-सैंपल/doc-सैंपल/होस्ट-टारगेट
    4. रेपो डाउनलोड हो जाने के बाद, किसी भी सैंपल डायरेक्ट्री को कॉपी करें और Edge पर सैंपल प्रॉक्सी डिप्लॉय करने के लिए, निर्देश README. डिप्लॉयमेंट कमांड नीचे दी गई है. Simply अपने Apigee खाते के लिए, दिए गए पैरामीटर को किसी पैरामीटर से बदलें:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    उदाहरण: ऐप्लिकेशन का सैंपल चलाना

    सैंपल डेटा स्टोर करने की जगह का क्लोन बनाएं

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    ऐप्लिकेशन का स्थानीय तौर पर परीक्षण करें

    यह लोकल टेस्ट करने के लिए, आपके पास Node.js इंस्टॉल होना चाहिए.

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    आउटपुट का उदाहरण:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    प्रॉक्सी को डिप्लॉय करें

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    डिप्लॉयमेंट की जांच करना

    डिप्लॉयमेंट को पूरा होने में कुछ मिनट लग सकते हैं. अगर आपको डिप्लॉयमेंट से जुड़ी कोई गड़बड़ी मिलती है, तो लागू करें लागू करें निर्देश को फिर से डिप्लॉय करें.

    curl http://myorg-test.apigee.net/node-hosted-hello

    आउटपुट का उदाहरण:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    आम समस्याएं

    • नेटवर्क का इंतज़ार का समय - अब जब Node.js ऐप्लिकेशन काम नहीं करता है एमपी के जेवीएम में, अब एमपी और उनके डिप्लॉयमेंट के बीच नेटवर्क छलांग है. बिलकुल हालांकि, इसकी कीमत काफ़ी ज़्यादा होती है, लेकिन शुरुआती बेंचमार्क के मुताबिक, यह वाजिब कीमत के बराबर होता है
    • एपीआई के धीमे रिस्पॉन्स - आपके ऐप्लिकेशन को चलाने वाला इंफ़्रास्ट्रक्चर ज़रूरत के हिसाब से अपने-आप बदल जाता है. इसका यह अर्थ है कि आपका ऐप्लिकेशन वास्तव में शून्य इंस्टेंस और अगर ऐसा है, तो अगले एपीआई अनुरोध में आम तौर पर एपीआई अनुरोध इसलिए भेजा जाता है, क्योंकि इन्फ़्रास्ट्रक्चर, अनुरोध.
    • डिप्लॉयमेंट में गड़बड़ी - अगर होस्ट किए गए टारगेट प्रॉक्सी, प्रॉक्सी को फिर से डिप्लॉय करने की कोशिश करें. कुछ मामलों में, डिप्लॉयमेंट की समयसीमा खत्म हो सकती है और अगर फिर से डिप्लॉय किया जाता है, तो समस्या अपने-आप हल हो जाएगी.