आपको Apigee Edge दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
एनवायरमेंट वैरिएबल की सीमाएं
होस्ट किए गए टारगेट, उन एनवायरमेंट वैरिएबल के साइज़ और संख्या को सीमित करते हैं जिन्हें होस्ट किए गए टारगेट के रनटाइम एनवायरमेंट में सेट किया जा सकता है.
- 1,000: एक एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा लंबाई.
- 100: एनवायरमेंट के ज़्यादा से ज़्यादा ऐसे वैरिएबल जो सेट किए जा सकते हैं.
एनवायरमेंट वैरिएबल को सेट करने के बारे में जानकारी पाने के लिए, मेनिफ़ेस्ट फ़ाइल देखें.
ऐप्लिकेशन के रनटाइम में सेट किए गए एनवायरमेंट वैरिएबल
होस्ट किए गए टारगेट ऐप्लिकेशन को डिप्लॉय करने पर, ये एनवायरमेंट वैरिएबल सेट हो जाते हैं और रनटाइम के दौरान आपके ऐप्लिकेशन के लिए उपलब्ध होते हैं:
APIGEE_ENVIRONMENT
- वह एनवायरमेंट जहां होस्ट किया गया टारगेट प्रॉक्सी डिप्लॉय किया गया है.APIGEE_ORGANIZATION
- वह संगठन जहां होस्ट किया गया टारगेट प्रॉक्सी डिप्लॉय किया गया है.PORT
- वह पोर्ट जहां होस्ट किए गए टारगेट ऐप्लिकेशन को सुनना चाहिए.
सिस्टम के संसाधनों का बंटवारा
होस्ट किए गए हर टारगेट के इंस्टेंस को नीचे दिए गए संसाधन मिलते हैं:
- 256 एमबी मेमोरी
- 1.2 गीगाहर्ट्ज़ सीपीयू
स्केलिंग:
इस सेक्शन में बताया गया है कि होस्ट किए गए टारगेट ऐप्लिकेशन की संख्या कैसे बढ़ाई जाती है. यह इस बात पर निर्भर करता है कि आपके एज खाते किस तरह के हैं.- 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). अन्य विकल्पों के लिए नोड के लिए Docker आधिकारिक रिपॉज़िटरी देखें.
- कमांड - (ज़रूरी नहीं) इससे आपको अपने ऐप्लिकेशन को शुरू करने के लिए इस्तेमाल किए गए डिफ़ॉल्ट निर्देश के अलावा, कोई दूसरा निर्देश चलाने की सुविधा मिलती है. डिफ़ॉल्ट:
Node.js=npm
- orgs - (ज़रूरी नहीं) ऐप्लिकेशन को पास करने के लिए कमांड लाइन आर्ग्युमेंट की कलेक्शन (स्टैंडर्ड YAML अरे सिंटैक्स में बताया गया है). आम तौर पर, इन्हें डिफ़ॉल्ट निर्देश में जोड़ा जाता है.
डिफ़ॉल्ट तौर पर, यह start होता है. उदाहरण के लिए, डिफ़ॉल्ट रूप से Node.js ऐप्लिकेशन को कमांड
npm start
पास किया जाएगा. - env - (ज़रूरी नहीं) होस्ट किए गए टारगेट रनटाइम एनवायरमेंट में सेट किए जाने वाले एनवायरमेंट वैरिएबल (नाम/वैल्यू पेयर) का कलेक्शन. ये वैरिएबल, डिप्लॉय किए गए होस्ट किए गए टारगेट ऐप्लिकेशन के लिए उपलब्ध हैं.
- name - वैरिएबल का नाम.
- value | valueRef - आपके पास दो विकल्प हैं. आपके पास लिटरल वैल्यू सेट करने का विकल्प है. इसके अलावा, की वैल्यू मैप में सेव की गई वैल्यू का रेफ़रंस भी दिया जा सकता है. कुंजी की वैल्यू वाला मैप,
आपके Edge में पहले से मौजूद होना चाहिए. मुख्य वैल्यू वाले मैप के साथ काम करना देखें
- value का इस्तेमाल करने पर, आपको एक वैरिएबल
name
और एक लिटरलvalue
बताना होगा. उदाहरण के लिए:runtime: node env: - name: NODE_ENV value: production
- valueRef का इस्तेमाल करने पर,
आपको उस कीवर्ड वैल्यू मैप (KVM) का नाम और की देना होगा जिसे आपने पहले Edge में बनाया था.
उदाहरण के लिए:
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
- value का इस्तेमाल करने पर, आपको एक वैरिएबल
मेनिफ़ेस्ट फ़ाइलों के उदाहरण
इस सेक्शन में, Node.js ऐप्लिकेशन के लिए मेनिफ़ेस्ट फ़ाइलों के उदाहरण दिए गए हैं. Hosted Target ऐप्लिकेशन को डिप्लॉय करने के लिए, मेनिफ़ेस्ट फ़ाइल की ज़रूरत होती है. यह फ़ाइल, apiproxy/resources/hosted
डायरेक्ट्री में मौजूद होनी चाहिए और फ़ाइल का नाम app.yaml
होना चाहिए.
Node.js ऐप्लिकेशन के लिए, app.yaml
(मेनिफ़ेस्ट) फ़ाइलों के उदाहरण यहां दिए गए हैं.
लिटरल एनवायरमेंट वैरिएबल के बारे में बताने वाला उदाहरण:
runtime: node env: - name: NODE_ENV value: production
start कमांड, कमांड-लाइन आर्ग्युमेंट, और एनवायरमेंट वैरिएबल का उदाहरण.
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 -- Edge प्रॉक्सी को डिप्लॉय करने के लिए कमांड-लाइन टूल.
- get_token - apigeetool के लिए ज़रूरी अनुमति टोकन पाने के लिए कमांड-लाइन टूल.
अगर आपको सैंपल की जांच स्थानीय तौर पर करनी है, तो आपके पास Node.js भी इंस्टॉल होना चाहिए.
सैंपल रेपो की जानकारी लेना
- ब्राउज़र में, https://github.com/apigee/api-platform-samples पर जाएं.
- क्लोन करें या डाउनलोड करें पर क्लिक करें और अपने पसंदीदा तरीके से रेपो को अपने लोकल सिस्टम पर खींचें.
- cd को <your install dr>/api-platform-अलग-अलग मैसेज/doc-सैंपल/होस्ट-टारगेट पर
- रेपो डाउनलोड हो जाने के बाद, किसी भी सैंपल डायरेक्ट्री को कॉपी करें और Edge पर सैंपल प्रॉक्सी डिप्लॉय करने के लिए, README के निर्देशों का पालन करें. डिप्लॉयमेंट कमांड नीचे दी गई है. अपने Apigee खाते के लिए, इसमें दिए गए पैरामीटर को किसी पैरामीटर से बदलें:
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!"
आम समस्याएं
- नेटवर्क का इंतज़ार करना - अब नोड.js ऐप्लिकेशन, एमपी के जेवीएम में नहीं चल रहा है. इसलिए, अब एमपी और डिप्लॉयमेंट के बीच नेटवर्क अलग-अलग है. बेशक इसके लिए कीमत चुकानी पड़ती है, लेकिन शुरुआती मानदंडों से पता चलता है कि यह कीमत काफ़ी अच्छी है
- एपीआई के जवाब देर से मिलना - आपके ऐप्लिकेशन को चलाने वाला इन्फ़्रास्ट्रक्चर, ज़रूरत के हिसाब से अपने-आप स्केल होता है. इसका मतलब है कि आपके ऐप्लिकेशन को, शून्य इंस्टेंस तक स्केल किया जा सकता है और ऐसा होता है, तो सामान्य एपीआई अनुरोधों के मुकाबले अगले एपीआई अनुरोध में थोड़ा ज़्यादा समय लगेगा, क्योंकि अनुरोधों को प्रोसेस करने के लिए, इन्फ़्रास्ट्रक्चर, इंस्टेंस को स्की करने की कोशिश कर रहा है.
- डिप्लॉयमेंट से जुड़ी गड़बड़ी - अगर होस्ट किए गए टारगेट प्रॉक्सी को डिप्लॉय करते समय आपको कोई गड़बड़ी मिलती है, तो प्रॉक्सी को फिर से डिप्लॉय करें. कुछ मामलों में, डिप्लॉयमेंट में समय लग सकता है और फिर से डिप्लॉय करने पर, समस्या अपने-आप ठीक हो जाएगी.