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

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

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

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

  • 1000: किसी एक एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा लंबाई.
  • 100: सेट किए जा सकने वाले एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा संख्या.

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

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

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

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

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

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

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

स्केलिंग:

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

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

होस्ट किए गए ऐप्लिकेशन को बनाने और डिप्लॉय करने के लिए, Edge रनटाइम की जानकारी इकट्ठा करता है. इसके लिए, वह resources/hosted डायरेक्ट्री में 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 मेनिफ़ेस्ट फ़ाइल में ये एलिमेंट शामिल होते हैं:

  • runtime - (ज़रूरी है) इससे पता चलता है कि किस तरह का ऐप्लिकेशन डिप्लॉय किया जा रहा है. आपको node एट्रिब्यूट की वैल्यू देनी होगी.
  • runtimeVersion - (वैकल्पिक) रनटाइम का वह वर्शन जिसे आपका ऐप्लिकेशन इस्तेमाल करता है. डिफ़ॉल्ट: Node.js LTS (v10.x). अन्य विकल्पों के लिए, Node के लिए Docker की आधिकारिक रिपॉज़िटरी देखें.
  • command - (ज़रूरी नहीं) इसकी मदद से, ऐप्लिकेशन शुरू करने के लिए इस्तेमाल की जाने वाली डिफ़ॉल्ट कमांड के अलावा, कोई दूसरी कमांड तय की जा सकती है. डिफ़ॉल्ट: Node.js=npm
  • args - (ज़रूरी नहीं) ऐप्लिकेशन को पास किए जाने वाले कमांड लाइन आर्ग्युमेंट की ऐरे (स्टैंडर्ड YAML ऐरे सिंटैक्स में बताई गई है). आम तौर पर, इन्हें डिफ़ॉल्ट कमांड में जोड़ा जाता है. डिफ़ॉल्ट रूप से, यह start पर सेट होता है. उदाहरण के लिए, डिफ़ॉल्ट रूप से Node.js ऐप्लिकेशन को npm start कमांड पास की जाएगी.
  • env - (ज़रूरी नहीं) होस्ट किए गए टारगेट के रनटाइम एनवायरमेंट में सेट करने के लिए, एनवायरमेंट वैरिएबल (नाम/वैल्यू पेयर) का एक कलेक्शन. ये वैरिएबल, आपके डिप्लॉय किए गए Hosted Targets ऐप्लिकेशन के लिए उपलब्ध हैं.
    • name - वैरिएबल का नाम.
    • value | valueRef - आपके पास दो विकल्प हैं. आपके पास लिटरल वैल्यू सेट करने का विकल्प होता है. इसके अलावा, मुख्य वैल्यू मैप में सेव की गई वैल्यू को भी रेफ़रंस किया जा सकता है. आपके Edge एनवायरमेंट में, Key Value Map पहले से मौजूद होना चाहिए. की-वैल्यू मैप के साथ काम करना लेख पढ़ें
      • 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


    केवीएम के रेफ़रंस के बारे में बताने वाले उदाहरण:

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

    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 -- यह Edge प्रॉक्सी को डिप्लॉय करने के लिए, कमांड लाइन टूल है.
    • get_token - यह एक कमांड लाइन टूल है. इसका इस्तेमाल, apigeetool के लिए ज़रूरी अनुमति वाला टोकन पाने के लिए किया जाता है.

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

    सैंपल रेपो पाना

    1. किसी ब्राउज़र में, https://github.com/apigee/api-platform-samples पर जाएं.
    2. क्लोन या डाउनलोड करें पर क्लिक करें और अपनी पसंद के तरीके का इस्तेमाल करके, repo को अपने लोकल सिस्टम पर पुल करें.
    3. cd to <your install dir>/api-platform-samples/doc-samples/hosted-targets
    4. रिपो डाउनलोड हो जाने के बाद, किसी भी सैंपल डायरेक्ट्री पर cd किया जा सकता है. इसके बाद, Edge पर सैंपल प्रॉक्सी डिप्लॉय करने के लिए, README फ़ाइल में दिए गए निर्देशों का पालन करें. डप्लॉय करने की कमांड यहां दिखाई गई है. यहां दिए गए पैरामीटर को अपने 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 ऐप्लिकेशन, MP के JVM में नहीं चलता है. इसलिए, अब MP और डिप्लॉयमेंट के बीच नेटवर्क हॉप होता है. ज़रूर इसके लिए आपको कुछ शुल्क देना होगा, लेकिन शुरुआती बेंचमार्क के हिसाब से यह शुल्क बहुत कम है
    • एपीआई के जवाब मिलने में देरी होना - आपके ऐप्लिकेशन को चलाने वाला इन्फ़्रास्ट्रक्चर, ज़रूरत के हिसाब से अपने-आप स्केल हो जाता है. इसका मतलब है कि आपके ऐप्लिकेशन को शून्य इंस्टेंस तक कम किया जा सकता है. अगर ऐसा होता है, तो अगले एपीआई अनुरोध में, सामान्य एपीआई अनुरोधों की तुलना में थोड़ा ज़्यादा समय लगेगा. ऐसा इसलिए, क्योंकि बुनियादी ढांचा अनुरोधों को प्रोसेस करने के लिए इंस्टेंस शुरू कर रहा है.
    • डिप्लॉयमेंट से जुड़ी गड़बड़ी - अगर आपको होस्ट किए गए टारगेट की प्रॉक्सी को डिप्लॉय करते समय, डिप्लॉयमेंट से जुड़ी गड़बड़ी मिलती है, तो प्रॉक्सी को फिर से डिप्लॉय करने की कोशिश करें. कुछ मामलों में, डिप्लॉयमेंट का समय खत्म हो सकता है. ऐसे में, फिर से डिप्लॉय करने पर समस्या अपने-आप ठीक हो जाएगी.