Edge माइक्रोगेटवे के लिए कार्रवाई और कॉन्फ़िगरेशन रेफ़रंस

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

Edge Microgateway v. 3.3.x

इस विषय में, Edge Microgateway को मैनेज और कॉन्फ़िगर करने का तरीका बताया गया है.

इंटरनेट कनेक्शन होने पर, Edge Microgateway को अपग्रेड करना

इस सेक्शन में, Edge Microgateway के मौजूदा इंस्टॉलेशन को अपग्रेड करने का तरीका बताया गया है. अगर इंटरनेट कनेक्शन के बिना काम किया जा रहा है, तो देखें कि क्या इंटरनेट कनेक्शन के बिना Edge Microgateway इंस्टॉल किया जा सकता है?.

Apigee का सुझाव है कि अपने प्रोडक्शन एनवायरमेंट को अपग्रेड करने से पहले, अपने मौजूदा कॉन्फ़िगरेशन को नए वर्शन के साथ टेस्ट करें.

  1. Edge के सबसे नए वर्शन पर अपग्रेड करने के लिए, यह npm कमांड इस्तेमाल करें:
    npm upgrade edgemicro -g

    Edge Microgateway का कोई खास वर्शन इंस्टॉल करने के लिए, आपको इंस्टॉल करने के निर्देश में वर्शन का नंबर बताना होगा. उदाहरण के लिए, 3.2.3 वर्शन इंस्टॉल करने के लिए, इस कमांड का इस्तेमाल करें:

    npm install edgemicro@3.2.3 -g
  2. वर्शन नंबर देखें। उदाहरण के लिए, अगर आपने 3.2.3 वर्शन इंस्टॉल किया है, तो:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.2.3
        
  3. आखिर में, edgemicro-auth प्रॉक्सी को नए वर्शन पर अपग्रेड करें:
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

कॉन्फ़िगरेशन में बदलाव करना

आपको इन कॉन्फ़िगरेशन फ़ाइलों के बारे में जानना चाहिए:

  • सिस्टम की डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल
  • हाल ही में शुरू किए गए Edge Microgateway इंस्टेंस के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल
  • चल रहे इंस्टेंस के लिए डाइनैमिक कॉन्फ़िगरेशन फ़ाइल

इस सेक्शन में इन फ़ाइलों के बारे में बताया गया है. साथ ही, इनमें बदलाव करने के बारे में जानकारी दी गई है.

सिस्टम की डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल

Edge Microgateway इंस्टॉल करने पर, यहां एक डिफ़ॉल्ट सिस्टम कॉन्फ़िगरेशन फ़ाइल बन जाती है:

prefix/lib/node_modules/edgemicro/config/default.yaml

यहां prefix, npm प्रीफ़िक्स डायरेक्ट्री है. अगर आपको यह डायरेक्ट्री नहीं मिल रही है, तो Edge Microgateway कहां इंस्टॉल किया गया है देखें.

सिस्टम कॉन्फ़िगरेशन फ़ाइल में बदलाव करने पर, आपको Edge माइक्रोगेटवे को फिर से शुरू करना, फिर से कॉन्फ़िगर करना, और रीस्टार्ट करना होगा:

edgemicro init
edgemicro configure [params]
edgemicro start [params]

हाल ही में शुरू किए गए Edge Microgateway इंस्टेंस के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल

edgemicro init को चलाने पर, ऊपर बताई गई सिस्टम कॉन्फ़िगरेशन फ़ाइल default.yaml, ~/.edgemicro डायरेक्ट्री में सेव हो जाती है.

अगर आपने ~/.edgemicro में कॉन्फ़िगरेशन फ़ाइल में बदलाव किया है, तो आपको Edge Microgateway को फिर से कॉन्फ़िगर करना होगा और रीस्टार्ट करना होगा:

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

चल रहे इंस्टेंस के लिए डाइनैमिक कॉन्फ़िगरेशन फ़ाइल

edgemicro configure [params] को चलाने पर, ~/.edgemicro में एक डाइनैमिक कॉन्फ़िगरेशन फ़ाइल बनाई जाती है. फ़ाइल का नाम इस पैटर्न के हिसाब से रखा जाता है: org-env-config.yaml, जहां org और env, आपके Apigee Edge संगठन और एनवायरमेंट के नाम हैं. इस फ़ाइल का इस्तेमाल करके, कॉन्फ़िगरेशन में बदलाव किए जा सकते हैं. इसके बाद, उन्हें बिना किसी रुकावट के रीलोड किया जा सकता है. उदाहरण के लिए, अगर आपने कोई प्लग इन जोड़ा और कॉन्फ़िगर किया है, तो यहां बताए गए तरीके से, कॉन्फ़िगरेशन को फिर से लोड किया जा सकता है. ऐसा करने पर, साइट के बंद रहने का समय नहीं आएगा.

अगर Edge Microgateway चालू है (शून्य डाउनटाइम वाला विकल्प):

  1. Edge Microgateway कॉन्फ़िगरेशन को फिर से लोड करें:
    edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET

    कहां:

    • $ORG आपके Edge संगठन का नाम है. इसके लिए, आपके पास संगठन के एडमिन की अनुमति होनी चाहिए.
    • $ENV आपके संगठन का कोई एनवायरमेंट है, जैसे कि "test" या "prod".
    • $KEY वह पासकोड है जो configure कमांड से पहले मिला था.
    • $SECRET वह पासकोड है जो configure कमांड से पहले मिला था.

    उदाहरण के लिए

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

अगर Edge Microgateway बंद है, तो:

  1. Edge Microgateway को रीस्टार्ट करें:
    edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    कहां:

    • $ORG आपके Edge संगठन का नाम है. इसके लिए, आपके पास संगठन के एडमिन की अनुमति होनी चाहिए.
    • $ENV आपके संगठन का कोई एनवायरमेंट है, जैसे कि "test" या "prod".
    • $KEY वह पासकोड है जो configure कमांड से पहले मिला था.
    • $SECRET वह पासकोड है जो configure कमांड से पहले मिला था.

    उदाहरण के लिए:

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

यहां कॉन्फ़िगरेशन फ़ाइल का उदाहरण दिया गया है. कॉन्फ़िगरेशन फ़ाइल की सेटिंग के बारे में जानने के लिए, Edge Microgateway कॉन्फ़िगरेशन रेफ़रंस देखें.

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

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

कमांड-लाइन इंटरफ़ेस के उन निर्देशों के लिए, एनवायरमेंट वैरिएबल में वैल्यू सेव की जा सकती हैं जिनमें आपके Edge संगठन और एनवायरमेंट के लिए वैल्यू की ज़रूरत होती है. साथ ही, Edge माइक्रोगेटकवे को शुरू करने के लिए ज़रूरी की और सीक्रेट को भी इन एनवायरमेंट वैरिएबल में सेव किया जा सकता है:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

इन वैरिएबल को सेट करना ज़रूरी नहीं है. अगर आपने उन्हें सेट किया है, तो Edge Microgateway को कॉन्फ़िगर और शुरू करने के लिए, कमांड-लाइन इंटरफ़ेस (सीएलआई) का इस्तेमाल करते समय आपको उनकी वैल्यू बताने की ज़रूरत नहीं है.

Edge Microgateway सर्वर पर एसएसएल कॉन्फ़िगर करना

Apigee Edge माइक्रोगेटवे में टीएलएस को कॉन्फ़िगर करने के बारे में जानने के लिए, ये वीडियो देखें:

वीडियो ब्यौरा
एकतरफ़ा नॉर्थबाउंड टीएलएस कॉन्फ़िगर करना Apigee Edge माइक्रोगेटवे में टीएलएस को कॉन्फ़िगर करने के बारे में जानें. इस वीडियो में, टीएलएस और इसकी अहमियत के बारे में खास जानकारी दी गई है. साथ ही, Edge माइक्रोगेटवे में टीएलएस के इस्तेमाल के बारे में बताया गया है. इसके अलावा, नॉर्थबाउंड वन-वे टीएलएस को कॉन्फ़िगर करने का तरीका भी बताया गया है.
दोतरफ़ा नॉर्थबाउंड टीएलएस कॉन्फ़िगर करना यह Apigee Edge माइक्रोगेटवे में TLS को कॉन्फ़िगर करने के बारे में दूसरा वीडियो है. इस वीडियो में, उत्तर की ओर दोतरफ़ा TLS को कॉन्फ़िगर करने का तरीका बताया गया है.
एक-तरफ़ा और दो-तरफ़ा साउथबाउंड टीएलएस कॉन्फ़िगर करना Apigee Edge माइक्रोगेटवे में TLS कॉन्फ़िगर करने के बारे में बताने वाले तीसरे वीडियो में, दक्षिण की ओर एकतरफ़ा और दोतरफ़ा TLS कॉन्फ़िगर करने का तरीका बताया गया है.

एसएसएल का इस्तेमाल करने के लिए, माइक्रोगेटवे सर्वर को कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए, एसएसएल कॉन्फ़िगर करने के बाद, "https" प्रोटोकॉल की मदद से, Edge Microgateway के ज़रिए एपीआई को कॉल किया जा सकता है. जैसे:

https://localhost:8000/myapi

माइक्रोगेटवे सर्वर पर एसएसएल कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. openssl या अपने पसंदीदा तरीके का इस्तेमाल करके, एसएसएल सर्टिफ़िकेट और कुंजी जनरेट करें या पाएं.
  2. Edge Microgateway कॉन्फ़िगरेशन फ़ाइल में edgemicro:ssl एट्रिब्यूट जोड़ें. विकल्पों की पूरी सूची के लिए, नीचे दी गई टेबल देखें. उदाहरण के लिए:
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. Edge Microgateway को रीस्टार्ट करें. कॉन्फ़िगरेशन में बदलाव करना में दिया गया तरीका अपनाएं. यह इस बात पर निर्भर करता है कि आपने किस कॉन्फ़िगरेशन फ़ाइल में बदलाव किया है: डिफ़ॉल्ट फ़ाइल या रनटाइम कॉन्फ़िगरेशन फ़ाइल.

यहां कॉन्फ़िगर की गई एसएसएल के साथ, कॉन्फ़िगरेशन फ़ाइल के edgemicro सेक्शन का उदाहरण दिया गया है:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

यहां उन सभी सर्वर विकल्पों की सूची दी गई है जिनका इस्तेमाल किया जा सकता है:

विकल्प ब्यौरा
key ca.key फ़ाइल का पाथ (PEM फ़ॉर्मैट में).
cert ca.cert फ़ाइल का पाथ (PEM फ़ॉर्मैट में).
pfx pfx फ़ाइल का पाथ, जिसमें PFX फ़ॉर्मैट में क्लाइंट की निजी कुंजी, सर्टिफ़िकेट, और सीए सर्टिफ़िकेट शामिल हैं.
passphrase निजी कुंजी या PFX के लिए लंबा पासवर्ड वाली स्ट्रिंग.
ca PEM फ़ॉर्मैट में, भरोसेमंद सर्टिफ़िकेट की सूची वाली फ़ाइल का पाथ.
ciphers इस्तेमाल किए जाने वाले सिफर की जानकारी देने वाली स्ट्रिंग, जिसे ":" से अलग किया गया है.
rejectUnauthorized अगर यह सही है, तो सर्वर सर्टिफ़िकेट की पुष्टि, दिए गए सीए की सूची के हिसाब से की जाती है. अगर पुष्टि नहीं हो पाती है, तो गड़बड़ी का मैसेज दिखता है.
secureProtocol इस्तेमाल किया जाने वाला एसएसएल तरीका. उदाहरण के लिए, SSLv3_method, एसएसएल को वर्शन 3 पर फ़ोर्स करने के लिए.
servername एसएनआई (सर्वर नेम इंंडिकेशन) TLS एक्सटेंशन के लिए सर्वर का नाम.
requestCert दोतरफ़ा एसएसएल के लिए 'सही'; एकतरफ़ा एसएसएल के लिए 'गलत'

क्लाइंट के एसएसएल/टीएलएस विकल्पों का इस्तेमाल करना

टारगेट एंडपॉइंट से कनेक्ट करते समय, Edge Microgateway को TLS या एसएसएल क्लाइंट के तौर पर कॉन्फ़िगर किया जा सकता है. माइक्रोगेटकवायर की कॉन्फ़िगरेशन फ़ाइल में, SSL/TLS के विकल्प सेट करने के लिए टारगेट एलिमेंट का इस्तेमाल करें. ध्यान दें कि एक से ज़्यादा खास टारगेट तय किए जा सकते हैं. एक से ज़्यादा टारगेट का उदाहरण यहां दिया गया है.

इस उदाहरण में ऐसी सेटिंग दी गई हैं जो सभी होस्ट पर लागू होंगी:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

इस उदाहरण में, सेटिंग सिर्फ़ बताए गए होस्ट पर लागू होती हैं:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

यहां TLS का एक उदाहरण दिया गया है:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

अगर आपको एक से ज़्यादा टारगेट पर TLS/SSL सेटिंग लागू करनी हैं, तो आपको कॉन्फ़िगरेशन में पहले होस्ट को "खाली" के तौर पर बताना होगा. इससे यूनिवर्सल अनुरोध चालू हो जाते हैं. इसके बाद, किसी भी क्रम में खास होस्ट बताएं. इस उदाहरण में, सेटिंग कई खास होस्ट पर लागू की गई हैं:

targets:
 - host:   ## Note that this value must be "empty"
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       passphrase: admin123
       rejectUnauthorized: true
 - host: 'myserver1.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true
 - host: 'myserver2.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true

यहां इस्तेमाल किए जा सकने वाले सभी क्लाइंट विकल्पों की सूची दी गई है:

विकल्प ब्यौरा
pfx pfx फ़ाइल का पाथ, जिसमें PFX फ़ॉर्मैट में क्लाइंट की निजी कुंजी, सर्टिफ़िकेट, और सीए सर्टिफ़िकेट शामिल हैं.
key ca.key फ़ाइल का पाथ (PEM फ़ॉर्मैट में).
passphrase निजी कुंजी या PFX के लिए लंबा पासवर्ड शामिल करने वाली स्ट्रिंग.
cert ca.cert फ़ाइल का पाथ (PEM फ़ॉर्मैट में).
ca PEM फ़ॉर्मैट में, भरोसेमंद सर्टिफ़िकेट की सूची वाली फ़ाइल का पाथ.
ciphers इस्तेमाल किए जाने वाले सिफर की जानकारी देने वाली स्ट्रिंग, जिसे ":" से अलग किया गया है.
rejectUnauthorized अगर यह सही है, तो सर्वर सर्टिफ़िकेट की पुष्टि, दिए गए सीए की सूची के हिसाब से की जाती है. अगर पुष्टि नहीं हो पाती है, तो गड़बड़ी का मैसेज दिखता है.
secureProtocol इस्तेमाल किया जाने वाला एसएसएल तरीका. उदाहरण के लिए, SSLv3_method, एसएसएल को वर्शन 3 पर फ़ोर्स करने के लिए.
servername एसएनआई (सर्वर नेम इंंडिकेशन) TLS एक्सटेंशन के लिए सर्वर का नाम.

edgemicro-auth प्रॉक्सी को पसंद के मुताबिक बनाना

डिफ़ॉल्ट रूप से, Edge Microgateway, OAuth2 की पुष्टि करने के लिए Apigee Edge पर डिप्लॉय की गई प्रॉक्सी का इस्तेमाल करता है. edgemicro configure को पहली बार चलाने पर, यह प्रॉक्सी डिप्लॉय की जाती है. इस प्रॉक्सी के डिफ़ॉल्ट कॉन्फ़िगरेशन को बदला जा सकता है, ताकि JSON वेब टोकन (JWT) में कस्टम दावों के लिए सहायता जोड़ी जा सके, टोकन की समयसीमा कॉन्फ़िगर की जा सके, और रीफ़्रेश टोकन जनरेट किए जा सकें. ज़्यादा जानकारी के लिए, GitHub पर edgemicro-auth पेज देखें.

पुष्टि करने के लिए कस्टम सेवा का इस्तेमाल करना

डिफ़ॉल्ट रूप से, Edge Microgateway, OAuth2 की पुष्टि करने के लिए Apigee Edge पर डिप्लॉय की गई प्रॉक्सी का इस्तेमाल करता है. edgemicro configure को पहली बार चलाने पर, यह प्रॉक्सी डिप्लॉय की जाती है. डिफ़ॉल्ट रूप से, इस प्रॉक्सी का यूआरएल, Edge माइक्रोगेटकवे कॉन्फ़िगरेशन फ़ाइल में इस तरह से बताया गया है:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

अगर आपको पुष्टि करने के लिए अपनी कस्टम सेवा का इस्तेमाल करना है, तो कॉन्फ़िगरेशन फ़ाइल में authUri वैल्यू को अपनी सेवा पर ले जाने के लिए बदलें. उदाहरण के लिए, हो सकता है कि आपके पास ऐसी सेवा हो जो पहचान की पुष्टि करने के लिए, LDAP का इस्तेमाल करती हो.

लॉग फ़ाइलें मैनेज करना

Edge Microgateway, हर अनुरोध और जवाब की जानकारी को लॉग करता है. लॉग फ़ाइलें, डीबग करने और समस्या हल करने के लिए काम की जानकारी देती हैं.

लॉग फ़ाइलें कहां सेव होती हैं

डिफ़ॉल्ट रूप से, लॉग फ़ाइलें /var/tmp में सेव होती हैं.

डिफ़ॉल्ट लॉग फ़ाइल डायरेक्ट्री को बदलने का तरीका

लॉग फ़ाइलों को स्टोर करने वाली डायरेक्ट्री के बारे में, Edge माइक्रोगेटकवे कॉन्फ़िगरेशन फ़ाइल में बताया गया है. कॉन्फ़िगरेशन में बदलाव करना भी देखें.

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

कोई दूसरी लॉग फ़ाइल डायरेक्ट्री तय करने के लिए, dir वैल्यू बदलें.

कंसोल पर लॉग भेजना

लॉगिंग को कॉन्फ़िगर किया जा सकता है, ताकि लॉग की जानकारी, लॉग फ़ाइल के बजाय स्टैंडर्ड आउटपुट पर भेजी जाए. to_console फ़्लैग को इस तरह से 'सही' पर सेट करें:

edgemicro:
  logging:
    to_console: true

इस सेटिंग की मदद से, लॉग स्टैंडर्ड आउट पर भेजे जाएंगे. फ़िलहाल, stdout और लॉग फ़ाइल, दोनों पर लॉग नहीं भेजे जा सकते.

लॉगिंग लेवल सेट करने का तरीका

edgemicro कॉन्फ़िगरेशन में इस्तेमाल करने के लिए, लॉग लेवल तय किया जाता है. लॉग लेवल और उनके ब्यौरे की पूरी सूची के लिए, edgemicro एट्रिब्यूट देखें.

उदाहरण के लिए, यह कॉन्फ़िगरेशन, लॉगिंग लेवल को debug पर सेट करता है:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: debug
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

लॉग इंटरवल बदलने का तरीका

इन इंटरवल को Edge Microgateway की कॉन्फ़िगरेशन फ़ाइल में कॉन्फ़िगर किया जा सकता है. कॉन्फ़िगरेशन में बदलाव करना भी देखें.

कॉन्फ़िगर किए जा सकने वाले एट्रिब्यूट ये हैं:

  • stats_log_interval: (डिफ़ॉल्ट: 60) एपीआई लॉग फ़ाइल में आंकड़ों का रिकॉर्ड लिखे जाने के लिए, सेकंड में इंटरवल.
  • rotate_interval: (डिफ़ॉल्ट: 24) लॉग फ़ाइलों को घुमाने के लिए, घंटों में इंटरवल. उदाहरण के लिए:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

लॉग फ़ाइल की सख्त अनुमतियों को कम करने का तरीका

डिफ़ॉल्ट रूप से, Edge Microgateway, फ़ाइल अनुमति के लेवल को 0600 पर सेट करके, ऐप्लिकेशन लॉग फ़ाइल (api-log.log) जनरेट करता है. अनुमति के इस लेवल से, बाहरी ऐप्लिकेशन या उपयोगकर्ताओं को लॉग फ़ाइल पढ़ने की अनुमति नहीं मिलती. अनुमति के इस सख्त लेवल को कम करने के लिए, logging:disableStrictLogFile को true पर सेट करें. जब इस एट्रिब्यूट की वैल्यू true होती है, तो लॉग फ़ाइल को 0755 पर सेट की गई फ़ाइल अनुमति के साथ बनाया जाता है. अगर false या एट्रिब्यूट की वैल्यू सबमिट नहीं की जाती है, तो अनुमति डिफ़ॉल्ट रूप से 0600 पर सेट हो जाती है.

इसे v3.2.3 में जोड़ा गया है.

उदाहरण के लिए:

edgemicro:
 logging:
   disableStrictLogFile: true

लॉग फ़ाइल को मैनेज करने के सबसे सही तरीके

लॉग फ़ाइल का डेटा समय के साथ इकट्ठा होता जाता है. इसलिए, Apigee का सुझाव है कि आप ये तरीक़े अपनाएं:

  • लॉग फ़ाइलें काफ़ी बड़ी हो सकती हैं. इसलिए, पक्का करें कि लॉग फ़ाइल डायरेक्ट्री में काफ़ी जगह हो. लॉग फ़ाइलें कहां सेव की जाती हैं और लॉग फ़ाइल की डिफ़ॉल्ट डायरेक्ट्री को कैसे बदलें सेक्शन देखें.
  • लॉग फ़ाइलों को हफ़्ते में कम से कम एक बार मिटाएं या किसी अलग संग्रह डायरेक्ट्री में ले जाएं.
  • अगर आपकी नीति के मुताबिक लॉग मिटाने हैं, तो पुराने लॉग हटाने (साफ़ करने) के लिए, सीएलआई कमांड edgemicro log -c का इस्तेमाल किया जा सकता है.

लॉग फ़ाइल को नाम देने का तरीका

हर Edge Microgateway इंस्टेंस, .log एक्सटेंशन वाली लॉग फ़ाइल बनाता है. लॉग फ़ाइलों के लिए नाम रखने का तरीका यह है:

edgemicro-HOST_NAME-INSTANCE_ID-api.log

उदाहरण के लिए:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log

लॉग फ़ाइल के कॉन्टेंट के बारे में जानकारी

इसमें जोड़ा गया: v2.3.3

डिफ़ॉल्ट रूप से, लॉगिंग सेवा, डाउनलोड किए गए प्रॉक्सी, प्रॉडक्ट, और JSON वेब टोकन (JWT) के JSON को शामिल नहीं करती. अगर आपको इन ऑब्जेक्ट को कंसोल पर दिखाना है, तो Edge Microgateway शुरू करते समय कमांड-लाइन फ़्लैग DEBUG=* सेट करें. उदाहरण के लिए:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

"api" लॉग फ़ाइल का कॉन्टेंट

"api" लॉग फ़ाइल में, Edge Microgateway के ज़रिए अनुरोधों और रिस्पॉन्स के फ़्लो के बारे में पूरी जानकारी होती है. "api" लॉग फ़ाइलों के नाम इस तरह से होते हैं:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

Edge Microgateway को किए गए हर अनुरोध के लिए, "api" लॉग फ़ाइल में चार इवेंट कैप्चर किए जाते हैं:

  • क्लाइंट से आने वाला अनुरोध
  • टारगेट को भेजा गया अनुरोध
  • टारगेट से मिलने वाला इनकमिंग रिस्पॉन्स
  • क्लाइंट को भेजा जाने वाला जवाब

इनमें से हर एंट्री को शॉर्टहैंड नोटेशन में दिखाया जाता है, ताकि लॉग फ़ाइलों को ज़्यादा कॉम्पैक्ट बनाया जा सके. यहां चार इवेंट की चार सैंपल एंट्री दी गई हैं. लॉग फ़ाइल में, ये इस तरह दिखते हैं (लाइन नंबर सिर्फ़ दस्तावेज़ में रेफ़रंस के लिए होते हैं, ये लॉग फ़ाइल में नहीं दिखते).

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

आइए, इन पर एक-एक करके नज़र डालते हैं:

1. क्लाइंट से आने वाले अनुरोध का सैंपल:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 - यूनिक्स तारीख का स्टैंप
  • info - लॉगिंग लेवल. यह वैल्यू, लेन-देन के कॉन्टेक्स्ट और edgemicro कॉन्फ़िगरेशन में सेट किए गए लॉगिंग लेवल पर निर्भर करती है. लॉगिंग लेवल सेट करने का तरीका देखें. आंकड़ों के रिकॉर्ड के लिए, लेवल stats पर सेट होता है. आंकड़े, stats_log_interval कॉन्फ़िगरेशन के साथ सेट किए गए नियमित इंटरवल पर रिकॉर्ड किए जाते हैं. लॉग इंटरवल बदलने का तरीका भी देखें.
  • req - इवेंट की पहचान करता है. इस मामले में, क्लाइंट से अनुरोध करें.
  • m - अनुरोध में इस्तेमाल किया गया एचटीटीपी वर्ब.
  • u - यूआरएल का वह हिस्सा जो बेसपाथ के बाद आता है.
  • h - वह होस्ट और पोर्ट नंबर जहां Edge Microgateway सुन रहा है.
  • r - वह रिमोट होस्ट और पोर्ट जहां से क्लाइंट अनुरोध शुरू हुआ.
  • i - अनुरोध आईडी. इवेंट की सभी चार एंट्री में यह आईडी शेयर किया जाएगा. हर अनुरोध को एक यूनीक अनुरोध आईडी असाइन किया जाता है. अनुरोध आईडी के हिसाब से लॉग रिकॉर्ड को जोड़ने से, टारगेट के इंतज़ार का समय जानने में मदद मिल सकती है.
  • d - Edge Microgateway को अनुरोध मिलने के बाद, मिलीसेकंड में बीता समय. ऊपर दिए गए उदाहरण में, अनुरोध 0 के लिए टारगेट का जवाब 7 मिलीसेकंड (लाइन 3) के बाद मिला और जवाब को क्लाइंट को चार मिलीसेकंड (लाइन 4) के बाद भेजा गया. दूसरे शब्दों में, अनुरोध में लगने वाला कुल समय 11 मिलीसेकंड था. इसमें से टारगेट को 7 मिलीसेकंड और Edge Microgateway को 4 मिलीसेकंड लगे.

2. टारगेट को भेजे गए आउटगोइंग अनुरोध का सैंपल:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - यूनिक्स तारीख का स्टैंप
  • info - लॉगिंग लेवल. यह वैल्यू, लेन-देन के कॉन्टेक्स्ट और edgemicro कॉन्फ़िगरेशन में सेट किए गए लॉगिंग लेवल पर निर्भर करती है. लॉगिंग लेवल सेट करने का तरीका देखें. आंकड़ों के रिकॉर्ड के लिए, लेवल stats पर सेट होता है. आंकड़े, stats_log_interval कॉन्फ़िगरेशन के साथ सेट किए गए नियमित इंटरवल पर रिकॉर्ड किए जाते हैं. लॉग इंटरवल बदलने का तरीका भी देखें.
  • treq - इवेंट की पहचान करता है. इस मामले में, टारगेट अनुरोध.
  • m - टारगेट अनुरोध में इस्तेमाल किया गया एचटीटीपी वर्ब.
  • u - यूआरएल का वह हिस्सा जो बेसपाथ के बाद आता है.
  • h - बैकएंड टारगेट का होस्ट और पोर्ट नंबर.
  • i - लॉग एंट्री का आईडी. इवेंट की सभी चार एंट्री में यह आईडी दिखेगा.

3. टारगेट से मिलने वाले इनकमिंग रिस्पॉन्स का सैंपल

1436403888672 info tres s=200, d=7, i=0

1436403888651 - यूनिक्स तारीख का स्टैंप

  • info - लॉगिंग लेवल. यह वैल्यू, लेन-देन के कॉन्टेक्स्ट और edgemicro कॉन्फ़िगरेशन में सेट किए गए लॉगिंग लेवल पर निर्भर करती है. लॉगिंग लेवल सेट करने का तरीका देखें. आंकड़ों के रिकॉर्ड के लिए, लेवल stats पर सेट होता है. आंकड़े, stats_log_interval कॉन्फ़िगरेशन के साथ सेट किए गए नियमित इंटरवल पर रिकॉर्ड किए जाते हैं. लॉग इंटरवल बदलने का तरीका भी देखें.
  • tres - इवेंट की पहचान करता है. इस मामले में, टारगेट रिस्पॉन्स.
  • s - एचटीटीपी रिस्पॉन्स का स्टेटस.
  • d - मिलीसेकंड में अवधि. टारगेट के लिए, एपीआई कॉल में लगने वाला समय.
  • i - लॉग एंट्री का आईडी. इवेंट की सभी चार एंट्री में यह आईडी दिखेगा.

4. क्लाइंट को भेजे जाने वाले जवाब का सैंपल

1436403888676 info res s=200, d=11, i=0

1436403888651 - यूनिक्स तारीख का स्टैंप

  • info - लॉगिंग लेवल. यह वैल्यू, लेन-देन के कॉन्टेक्स्ट और edgemicro कॉन्फ़िगरेशन में सेट किए गए लॉगिंग लेवल पर निर्भर करती है. लॉगिंग लेवल सेट करने का तरीका देखें. आंकड़ों के रिकॉर्ड के लिए, लेवल stats पर सेट होता है. आंकड़े, stats_log_interval कॉन्फ़िगरेशन के साथ सेट किए गए नियमित इंटरवल पर रिकॉर्ड किए जाते हैं. लॉग इंटरवल बदलने का तरीका भी देखें.
  • res - इवेंट की पहचान करता है. इस मामले में, क्लाइंट को जवाब दें.
  • s - एचटीटीपी रिस्पॉन्स का स्टेटस.
  • d - मिलीसेकंड में अवधि. यह एपीआई कॉल में लगने वाला कुल समय होता है. इसमें टारगेट एपीआई और Edge माइक्रोगेटवे में लगने वाला समय भी शामिल होता है.
  • i - लॉग एंट्री का आईडी. इवेंट की सभी चार एंट्री में यह आईडी दिखेगा.

लॉग फ़ाइल शेड्यूल करना

लॉग फ़ाइलों को rotate_interval कॉन्फ़िगरेशन एट्रिब्यूट से तय किए गए इंटरवल पर रोटेट किया जाता है. रोटेशन इंटरवल खत्म होने तक, एक ही लॉग फ़ाइल में एंट्री जोड़ी जाती रहेंगी. हालांकि, हर बार जब Edge Microgateway को फिर से शुरू किया जाता है, तो उसे एक नया यूआईडी मिलता है और इस यूआईडी की मदद से लॉग फ़ाइलों का एक नया सेट बनता है. लॉग फ़ाइल के रखरखाव के सबसे सही तरीके भी देखें.

गड़बड़ी के मैसेज

कुछ लॉग एंट्री में गड़बड़ी के मैसेज होंगे. गड़बड़ियां कहां और क्यों होती हैं, यह जानने के लिए, Edge Microgateway गड़बड़ी का रेफ़रंस देखें.

Edge Microgateway के कॉन्फ़िगरेशन का रेफ़रंस

कॉन्फ़िगरेशन फ़ाइल की जगह

इस सेक्शन में बताए गए कॉन्फ़िगरेशन एट्रिब्यूट, Edge Microgateway की कॉन्फ़िगरेशन फ़ाइल में मौजूद होते हैं. कॉन्फ़िगरेशन में बदलाव करना भी देखें.

edge_config एट्रिब्यूट

इन सेटिंग का इस्तेमाल, Edge Microgateway इंस्टेंस और Apigee Edge के बीच इंटरैक्शन को कॉन्फ़िगर करने के लिए किया जाता है.

  • bootstrap: (डिफ़ॉल्ट: कोई नहीं) यह एक ऐसा यूआरएल है जो Apigee Edge पर चल रही, Edge माइक्रोगेटवे से जुड़ी सेवा पर ले जाता है. Edge Microgateway, Apigee Edge के साथ कम्यूनिकेट करने के लिए, इस सेवा का इस्तेमाल करता है. सार्वजनिक/निजी कुंजी का जोड़ा जनरेट करने के लिए, edgemicro genkeys कमांड का इस्तेमाल करने पर, यह यूआरएल दिखता है. ज़्यादा जानकारी के लिए, Edge माइक्रोगेटक को सेट अप करना और कॉन्फ़िगर करना लेख पढ़ें.
  • jwt_public_key: (डिफ़ॉल्ट: कोई नहीं) यह एक ऐसा यूआरएल है जो Apigee Edge पर डिप्लॉय किए गए Edge माइक्रोगेटवे प्रोक्सी पर ले जाता है. यह प्रॉक्सी, क्लाइंट को हस्ताक्षर किए गए ऐक्सेस टोकन जारी करने के लिए, पुष्टि करने वाले एंडपॉइंट के तौर पर काम करती है. प्रॉक्सी को डिप्लॉय करने के लिए, edgemicro configure कमांड का इस्तेमाल करने पर, यह यूआरएल दिखता है. ज़्यादा जानकारी के लिए, Edge माइक्रोगेटक को सेट अप करना और कॉन्फ़िगर करना लेख पढ़ें.
  • quotaUri: अगर आपको अपने संगठन में डिप्लॉय की गई edgemicro-auth प्रॉक्सी के ज़रिए कोटा मैनेज करने हैं, तो यह कॉन्फ़िगरेशन प्रॉपर्टी सेट करें. अगर यह प्रॉपर्टी सेट नहीं है, तो कोटा एंडपॉइंट डिफ़ॉल्ट रूप से, इंटरनल Edge Microgateway एंडपॉइंट पर सेट हो जाता है.
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

edgemicro एट्रिब्यूट

ये सेटिंग, Edge Microgateway प्रोसेस को कॉन्फ़िगर करती हैं.

  • port: (डिफ़ॉल्ट: 8000) वह पोर्ट नंबर जिस पर Edge Microgateway प्रोसेस सुनती है.
  • max_connections: (डिफ़ॉल्ट: -1) इससे यह तय होता है कि Edge Microgateway पर एक साथ ज़्यादा से ज़्यादा कितने इनकमिंग कनेक्शन हो सकते हैं. अगर इस संख्या से ज़्यादा आइटम डाले जाते हैं, तो यह स्टेटस दिखता है:

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (डिफ़ॉल्ट: -1) कनेक्टिविटी बंद करने से पहले, Edge Microgateway को एक साथ मिलने वाले अनुरोधों की ज़्यादा से ज़्यादा संख्या. इस सेटिंग का मकसद, डिनायल ऑफ़ सर्विस अटैक को रोकना है. आम तौर पर, इसे ज़्यादा से ज़्यादा कनेक्शन की संख्या से ज़्यादा पर सेट करें.
  • लॉगिंग:
    • level: (डिफ़ॉल्ट: गड़बड़ी)
      • info - (सुझाया गया) Edge Microgateway इंस्टेंस से आने वाले सभी अनुरोधों और जवाबों को लॉग करता है.
      • warn - सिर्फ़ चेतावनी वाले मैसेज को लॉग करता है.
      • error - सिर्फ़ गड़बड़ी के मैसेज को लॉग करता है.
      • debug - जानकारी, चेतावनी, और गड़बड़ी के मैसेज के साथ-साथ डीबग मैसेज को लॉग करता है.
      • trace - गड़बड़ियों के साथ-साथ जानकारी, चेतावनी, और गड़बड़ी के मैसेज के लिए, लॉग ट्रेस की जानकारी.
      • none - लॉग फ़ाइल न बनाएं.
    • dir: (डिफ़ॉल्ट: /var/tmp) वह डायरेक्ट्री जहां लॉग फ़ाइलें सेव की जाती हैं.
    • stats_log_interval: (डिफ़ॉल्ट: 60) आंकड़ों का रिकॉर्ड, एपीआई लॉग फ़ाइल में सेकंड में लिखा जाता है.
    • rotate_interval: (डिफ़ॉल्ट: 24) लॉग फ़ाइलों को घुमाने के लिए, घंटों में इंटरवल.
  • प्लग इन: प्लग इन, Edge माइक्रोगेटवे में फ़ंक्शन जोड़ते हैं. प्लगिन बनाने के बारे में जानकारी पाने के लिए, कस्टम प्लगिन बनाना लेख पढ़ें.
  • dir: ./gateway डायरेक्ट्री से ./plugins डायरेक्ट्री तक का रिलेटिव पाथ या ऐब्सलूट पाथ.
  • sequence: अपने Edge Microgateway के इंस्टेंस में जोड़ने के लिए, प्लग इन मॉड्यूल की सूची. मॉड्यूल, यहां बताए गए क्रम में लागू होंगे.
  • debug: Edge Microgateway प्रोसेस में रिमोट डीबगिंग जोड़ता है.
    • port: वह पोर्ट नंबर जिस पर सुनना है. उदाहरण के लिए, अपने IDE डीबगर को इस पोर्ट पर सुनने के लिए सेट करें.
    • args: डीबग करने की प्रोसेस के लिए आर्ग्युमेंट. उदाहरण के लिए: args --nolazy
  • config_change_poll_interval: (डिफ़ॉल्ट: 600 सेकंड) Edge Microgateway, समय-समय पर नया कॉन्फ़िगरेशन लोड करता है और अगर कोई बदलाव होता है, तो रीलोड करता है. पोलिंग की सुविधा, Edge पर किए गए किसी भी बदलाव (प्रॉडक्ट में बदलाव, माइक्रो-गेटवे के बारे में जानकारी देने वाले प्रॉक्सी वगैरह) के साथ-साथ, लोकल कॉन्फ़िगरेशन फ़ाइल में किए गए बदलावों को भी अपडेट करती है.
  • disable_config_poll_interval: (डिफ़ॉल्ट: गलत) बदलावों की अपने-आप होने वाली पोलिंग को बंद करने के लिए, इसे सही पर सेट करें.
  • request_timeout: टारगेट किए गए अनुरोधों के लिए टाइम आउट सेट करता है. टाइम आउट को सेकंड में सेट किया जाता है. टाइम आउट होने पर, Edge Microgateway 504 स्टेटस कोड के साथ जवाब देता है. (v2.4.x में जोड़ा गया)
  • keep_alive_timeout: इस प्रॉपर्टी की मदद से, Edge Microgateway के लिए टाइम आउट (मिलीसेकंड में) सेट किया जा सकता है. (डिफ़ॉल्ट: पांच सेकंड) (v3.0.6 में जोड़ा गया)
  • headers_timeout: इस एट्रिब्यूट की मदद से, एचटीटीपी पार्सर के लिए, एचटीटीपी हेडर मिलने में लगने वाले समय (मिलीसेकंड में) की सीमा तय की जाती है.

    उदाहरण के लिए:

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    अंदरूनी तौर पर, यह पैरामीटर अनुरोधों पर Node.js Server.headersTimeout एट्रिब्यूट सेट करता है. (डिफ़ॉल्ट: edgemicro.keep_alive_timeout के साथ सेट किए गए समय से 5 सेकंड ज़्यादा. यह डिफ़ॉल्ट सेटिंग, लोड बैलेंसर या प्रॉक्सी को गलती से कनेक्शन छोड़ने से रोकती है.) (v3.1.1 में जोड़ा गया)

  • noRuleMatchAction: (स्ट्रिंग) अगर accesscontrol प्लग इन में बताए गए मैच नियम को हल नहीं किया जाता है (मैच नहीं होता है), तो क्या कार्रवाई की जाए (ऐक्सेस की अनुमति दें या अस्वीकार करें). मान्य वैल्यू: ALLOW या DENY डिफ़ॉल्ट: ALLOW (जोड़ा गया: v3.1.7)
  • enableAnalytics: (डिफ़ॉल्ट: true) Analytics प्लग इन को लोड होने से रोकने के लिए, एट्रिब्यूट की वैल्यू को false पर सेट करें. इस मामले में, Apigee Edge के आंकड़ों के लिए कोई कॉल नहीं किया जाएगा. अगर इस एट्रिब्यूट की वैल्यू सही है पर सेट है या इसे सबमिट नहीं किया गया है, तो आंकड़ों का प्लग इन सामान्य तरीके से काम करेगा. ज़्यादा जानकारी के लिए, edgemicro एट्रिब्यूट देखें. (v3.1.8 जोड़ा गया).

    उदाहरण:

    edgemicro
      enableAnalytics=false|true
  • on_target_response_abort: इस एट्रिब्यूट की मदद से, यह कंट्रोल किया जा सकता है कि अगर क्लाइंट (Edge Microgateway) और टारगेट सर्वर के बीच का कनेक्शन समय से पहले बंद हो जाता है, तो Edge Microgateway कैसा व्यवहार करे.
    मान ब्यौरा
    डिफ़ॉल्ट अगर on_target_response_abort की वैल्यू नहीं दी गई है, तो डिफ़ॉल्ट तौर पर रिस्पॉन्स को गड़बड़ी दिखाए बिना छोटा कर दिया जाता है. लॉग फ़ाइलों में, targetResponse aborted और 502 रिस्पॉन्स कोड के साथ चेतावनी वाला मैसेज दिखता है.
    appendErrorToClientResponseBody क्लाइंट को पसंद के मुताबिक गड़बड़ी TargetResponseAborted दिखती है. लॉग फ़ाइलों में, targetResponse aborted और 502 रिस्पॉन्स कोड के साथ चेतावनी वाला मैसेज दिखता है. इसके अलावा, TargetResponseAborted गड़बड़ी को मैसेज Target response ended prematurely. के साथ लॉग किया गया है
    abortClientRequest Edge Microgateway, अनुरोध को रोक देता है और लॉग फ़ाइलों में चेतावनी लिख दी जाती है: TargetResponseAborted अनुरोध के स्टेटस कोड 502 के साथ.

उदाहरण:

edgemicro:
 on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest

हेडर एट्रिब्यूट

इन सेटिंग से यह तय होता है कि कुछ एचटीटीपी हेडर को कैसे माना जाए.

  • x-forwarded-for: (डिफ़ॉल्ट: true) टारगेट को x-forwarded-for हेडर पास होने से रोकने के लिए, इसे false पर सेट करें. ध्यान दें कि अगर अनुरोध में x-forwarded-for हेडर है, तो इसकी वैल्यू Edge Analytics में क्लाइंट-आईपी वैल्यू पर सेट की जाएगी.
  • x-forwarded-host: (डिफ़ॉल्ट: true) टारगेट को x-forwarded-host हेडर भेजने से रोकने के लिए, इसे false पर सेट करें.
  • x-request-id: (डिफ़ॉल्ट: true) टारगेट को x-request-id हेडर पास होने से रोकने के लिए, इसे false पर सेट करें.
  • x-response-time: (डिफ़ॉल्ट: true) x-response-time हेडर को टारगेट पर पास होने से रोकने के लिए, इसे false पर सेट करें.
  • via: (डिफ़ॉल्ट: true) टारगेट को via हेडर भेजने से रोकने के लिए, इसे false पर सेट करें.

oauth एट्रिब्यूट

इन सेटिंग से यह कॉन्फ़िगर होता है कि Edge Microgateway, क्लाइंट की पुष्टि कैसे करता है.

  • allowNoAuthorization: (डिफ़ॉल्ट: गलत) अगर इसे 'सही है' पर सेट किया जाता है, तो एपीआई कॉल को अनुमति वाले हेडर के बिना, Edge माइक्रोगेटवे से पास करने की अनुमति मिलती है. अनुमति हेडर की ज़रूरत पड़ने पर, इसे 'गलत' पर सेट करें (डिफ़ॉल्ट).
  • allowInvalidAuthorization: (डिफ़ॉल्ट: गलत) अगर इसे 'सही' पर सेट किया जाता है, तो अनुमति वाले हेडर में पास किया गया टोकन अमान्य या समयसीमा खत्म होने पर भी, एपीआई कॉल को पास करने की अनुमति दी जाती है. मान्य टोकन की ज़रूरत होने पर, इसे 'गलत है' पर सेट करें (डिफ़ॉल्ट).
  • authorization-header: (डिफ़ॉल्ट: Authorization: Bearer) Edge Microgateway को ऐक्सेस टोकन भेजने के लिए इस्तेमाल किया जाने वाला हेडर. अगर टारगेट को किसी दूसरे मकसद के लिए अनुमति वाले हेडर का इस्तेमाल करना है, तो डिफ़ॉल्ट तौर पर लागू होने वाले हेडर को बदला जा सकता है.
  • api-key-header: (डिफ़ॉल्ट: x-api-key) एज माइक्रोगेटवे को एपीआई पासकोड पास करने के लिए इस्तेमाल किए गए हेडर या क्वेरी पैरामीटर का नाम. एपीआई पासकोड का इस्तेमाल करना लेख भी देखें.
  • keep-authorization-header: (डिफ़ॉल्ट: गलत) अगर इसे 'सही' पर सेट किया जाता है, तो अनुरोध में भेजा गया अनुमति हेडर, टारगेट को भेज दिया जाता है (इसे सेव किया जाता है).
  • allowOAuthOnly -- अगर इसे 'सही' पर सेट किया जाता है, तो हर एपीआई में Authorization हेडर के साथ एक Bearer ऐक्सेस टोकन होना चाहिए. इसकी मदद से, सिर्फ़ OAuth सुरक्षा मॉडल को अनुमति दी जा सकती है. साथ ही, यह पुराने सिस्टम के साथ काम करता रहेगा. (2.4.x में जोड़ा गया)
  • allowAPIKeyOnly -- अगर इसे 'सही' पर सेट किया जाता है, तो हर एपीआई में एपीआई पासकोड के साथ एक x-api-key हेडर (या कस्टम जगह) होना चाहिए. इससे आपको सिर्फ़ एपीआई पासकोड के सुरक्षा मॉडल को अनुमति देने की सुविधा मिलती है. साथ ही, यह सुविधा पिछली वर्शन के साथ काम करती है. (2.4.x में जोड़ा गया)
  • gracePeriod -- इस पैरामीटर की मदद से, सिस्टम घड़ी और JWT अनुमति टोकन में बताए गए, 'इससे पहले नहीं' (nbf) या 'जारी किए जाने का समय' (iat) के बीच थोड़ी सी अंतर की वजह से होने वाली गड़बड़ियों से बचा जा सकता है. इस पैरामीटर को सेकंड में सेट करें, ताकि इस तरह के अंतर की अनुमति दी जा सके. (2.5.7 में जोड़ा गया)

प्लग इन के हिसाब से एट्रिब्यूट

हर प्लग इन के लिए कॉन्फ़िगर किए जा सकने वाले एट्रिब्यूट के बारे में जानने के लिए, प्लग इन का इस्तेमाल करना लेख पढ़ें.

प्रॉक्सी फ़िल्टर करना

यह फ़िल्टर किया जा सकता है कि Edge Microgateway इंस्टेंस किन माइक्रोगेटवे-अवेयर प्रॉक्सी को प्रोसेस करेगा. Edge Microgateway के शुरू होने पर, वह उस संगठन में मौजूद सभी माइक्रोगेटवे-अवेयर प्रॉक्सी को डाउनलोड करता है जिससे वह जुड़ा है. यह तय करने के लिए कि माइक्रोगेटकैन कौनसी प्रॉक्सी प्रोसेस करेगा, यहां दिए गए कॉन्फ़िगरेशन का इस्तेमाल करें. उदाहरण के लिए, इस कॉन्फ़िगरेशन से, माइक्रोगेटक को प्रोसेस करने वाली प्रॉक्सी की संख्या तीन तक सीमित हो जाती है: edgemicro_proxy-1, edgemicro_proxy-2, और edgemicro_proxy-3:

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

प्रॉडक्ट को नाम के हिसाब से फ़िल्टर करना

Edge Microgateway के डाउनलोड और प्रोसेस करने वाले एपीआई प्रॉडक्ट की संख्या को सीमित करने के लिए, यहां दिए गए कॉन्फ़िगरेशन का इस्तेमाल करें. डाउनलोड किए गए प्रॉडक्ट फ़िल्टर करने के लिए, Edge Microgateway *.config.yaml फ़ाइल में मौजूद /products एपीआई में productnamefilter क्वेरी पैरामीटर जोड़ें. उदाहरण के लिए:

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

ध्यान दें कि क्वेरी पैरामीटर की वैल्यू, रेगुलर एक्सप्रेशन फ़ॉर्मैट में होनी चाहिए और उसे कोड में बदला जाना चाहिए. उदाहरण के लिए, रेगुलर एक्सप्रेशन ^[Ee]dgemicro.*$, इन नामों को कैप्चर करता है: "edgemicro-test-1" , "edgemicro_demo", और "Edgemicro_New_Demo". क्वेरी पैरामीटर में इस्तेमाल करने के लिए, यूआरएल से कोड में बदली गई वैल्यू: %5E%5BEe%5Ddgemicro.%2A%24 है.

यहां दिए गए डीबग आउटपुट से पता चलता है कि सिर्फ़ फ़िल्टर किए गए प्रॉडक्ट डाउनलोड किए गए थे:

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

कस्टम एट्रिब्यूट के हिसाब से प्रॉडक्ट फ़िल्टर करना

कस्टम एट्रिब्यूट के आधार पर प्रॉडक्ट फ़िल्टर करने के लिए:

  1. Edge के यूज़र इंटरफ़ेस (यूआई) में, उस संगठन/एनवायरमेंट में edgemicro_auth प्रॉक्सी चुनें जहां आपने Edge Microgateway को कॉन्फ़िगर किया है.
  2. 'डेवलप करें' टैब में, एडिटर में JavaCallout नीति खोलें.
  3. products.filter.attributes कीवर्ड के साथ कस्टम एट्रिब्यूट जोड़ें. साथ ही, एट्रिब्यूट के नामों की सूची को कॉमा लगाकर अलग करें. Edge Microgateway में सिर्फ़ वे प्रॉडक्ट दिखाए जाएंगे जिनमें कस्टम एट्रिब्यूट का कोई नाम शामिल हो.
  4. अगर आपको यह देखना है कि प्रॉडक्ट, मौजूदा एनवायरमेंट के लिए चालू है या नहीं, तो आपके पास जांच की सुविधा को बंद करने का विकल्प है. इसके लिए, कस्टम एट्रिब्यूट products.filter.env.enable को false पर सेट करें. (डिफ़ॉल्ट रूप से, यह 'सही' पर सेट होता है.)
  5. (सिर्फ़ निजी क्लाउड के लिए) अगर आपने Edge for Private Cloud का इस्तेमाल किया है, तो प्रॉडक्ट को सीपीएस एनवायरमेंट के अलावा अन्य एनवायरमेंट से खींचने के लिए, प्रॉपर्टी org.noncps को true पर सेट करें.
  6. उदाहरण के लिए:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
        <DisplayName>JavaCallout</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="products.filter.attributes">attrib.one, attrib.two</Property>
            <Property name="products.filter.env.enable">false</Property>
            <Property name="org.noncps">true</Property>
        </Properties>
        <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
        <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
    </JavaCallout>

रद्द करने की स्थिति के हिसाब से प्रॉडक्ट फ़िल्टर करना

एपीआई प्रॉडक्ट के लिए तीन स्टेटस कोड होते हैं - पुष्टि बाकी है, स्वीकार किया गया है, और रद्द किया गया है. edgemicro-auth प्रॉक्सी में, JWT वैरिएबल की नीति सेट करने के लिए, allowProductStatus नाम की एक नई प्रॉपर्टी जोड़ी गई है. JWT में दिए गए एपीआई प्रॉडक्ट को फ़िल्टर करने के लिए, इस प्रॉपर्टी का इस्तेमाल करने के लिए:

  1. Apigee प्रॉक्सी एडिटर में, edgemicro-auth प्रॉक्सी खोलें.
  2. SetJWTVariables नीति के एक्सएमएल में allowProductStatus प्रॉपर्टी जोड़ें. साथ ही, फ़िल्टर करने के लिए, स्टेटस कोड की सूची को कॉमा लगाकर अलग करें. उदाहरण के लिए, मंज़ूरी बाकी है और रद्द कर दिया गया है स्टेटस के हिसाब से फ़िल्टर करने के लिए:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript timeLimit="20000" async="false" continueOnError="false"
        enabled="true" name="Set-JWT-Variables">
        <DisplayName>Set JWT Variables</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="allowProductStatus">Pending,Revoked</Property>
        </Properties>
        <ResourceURL>jsc://set-jwt-variables.js</ResourceURL>
    </Javascript>

    अगर आपको सिर्फ़ स्वीकार किए गए प्रॉडक्ट की लिस्टिंग चाहिए, तो प्रॉपर्टी को इस तरह सेट करें:

    <Property name="allowProductStatus">Approved</Property>
  3. प्रॉक्सी सेव करें.

    अगर प्रॉपर्टी टैग मौजूद नहीं है, तो सभी स्टेटस कोड वाले प्रॉडक्ट, JWT में लिस्ट किए जाएंगे.

    इस नई प्रॉपर्टी का इस्तेमाल करने के लिए, आपको edgemicro-auth प्रॉक्सी को अपग्रेड करना होगा.

Analytics की पुश फ़्रीक्वेंसी कॉन्फ़िगर करना

Edge Microgateway की मदद से, Apigee को विश्लेषण का डेटा भेजने की फ़्रीक्वेंसी कंट्रोल करने के लिए, इन कॉन्फ़िगरेशन पैरामीटर का इस्तेमाल करें:

  • bufferSize (ज़रूरी नहीं): सबसे पुराने रिकॉर्ड को हटाने से पहले, बफ़र में जितने ज़्यादा से ज़्यादा Analytics रिकॉर्ड हो सकते हैं. डिफ़ॉल्ट: 10,000
  • batchSize (ज़रूरी नहीं): Apigee को भेजे गए आंकड़ों के रिकॉर्ड के बैच का ज़्यादा से ज़्यादा साइज़. डिफ़ॉल्ट: 500
  • flushInterval (ज़रूरी नहीं): Apigee को भेजे गए आंकड़ों के हर बैच के फ़्लश के बीच के मिलीसेकंड की संख्या. डिफ़ॉल्ट: 5,000

उदाहरण के लिए:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

Analytics डेटा को मास्क करना

यहां दिया गया कॉन्फ़िगरेशन, अनुरोध पाथ की जानकारी को Edge के आंकड़ों में दिखने से रोकता है. अनुरोध यूआरआई और/या अनुरोध पाथ को मास्क करने के लिए, माइक्रोगेटवे कॉन्फ़िगरेशन में ये जोड़ें. ध्यान दें कि यूआरआई में अनुरोध के होस्टनेम और पाथ वाले हिस्से शामिल होते हैं.

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

Edge Analytics में एपीआई कॉल को अलग-अलग करना

किसी खास एपीआई पाथ को अलग करने के लिए, आंकड़े वाले प्लग इन को कॉन्फ़िगर किया जा सकता है, ताकि वह Edge Analytics के डैशबोर्ड में अलग प्रॉक्सी के तौर पर दिखे. उदाहरण के लिए, डैशबोर्ड में हेल्थ जांच करने वाले एपीआई को अलग से रखा जा सकता है, ताकि उसे असल एपीआई प्रॉक्सी कॉल से अलग किया जा सके. Analytics डैशबोर्ड में, अलग-अलग प्रॉक्सी को नाम देने का यह पैटर्न अपनाया जाता है:

edgemicro_proxyname-health

नीचे दी गई इमेज में, Analytics डैशबोर्ड में अलग-अलग दो प्रॉक्सी दिखाए गए हैं: edgemicro_hello-health और edgemicro_mock-health:

Analytics डैशबोर्ड में रिलेटिव और ऐब्सलूट पाथ को अलग-अलग प्रॉक्सी के तौर पर अलग करने के लिए, इन पैरामीटर का इस्तेमाल करें:

  • relativePath (ज़रूरी नहीं): Analytics डैशबोर्ड में अलग-अलग ग्रुप बनाने के लिए, रिलेटिव पाथ तय करता है. उदाहरण के लिए, अगर आपने /healthcheck डाला है, तो पाथ /healthcheck वाले सभी एपीआई कॉल, डैशबोर्ड में edgemicro_proxyname-health के तौर पर दिखेंगे. ध्यान दें कि यह फ़्लैग, प्रॉक्सी के बेसपाथ को अनदेखा करता है. बेसपाथ के साथ-साथ पूरे पाथ के आधार पर अलग-अलग करने के लिए, proxyPath फ़्लैग का इस्तेमाल करें.
  • proxyPath (ज़रूरी नहीं): Analytics डैशबोर्ड में अलग-अलग करने के लिए, एपीआई के पूरे प्रॉक्सी पाथ के साथ-साथ प्रॉक्सी के आधार पाथ की जानकारी देता है. उदाहरण के लिए, अगर आपने /mocktarget/healthcheck डाला है, जहां /mocktarget प्रॉक्सी बेसपाथ है, तो /mocktarget/healthcheck पाथ वाले सभी एपीआई कॉल, डैशबोर्ड में edgemicro_proxyname-health के तौर पर दिखेंगे.

उदाहरण के लिए, नीचे दिए गए कॉन्फ़िगरेशन में, /healthcheck वाला कोई भी एपीआई पाथ, आंकड़ों के प्लग इन के हिसाब से अलग किया जाएगा. इसका मतलब है कि /foo/healthcheck और /foo/bar/healthcheck को Analytics डैशबोर्ड में, edgemicro_proxyname-health नाम की अलग प्रॉक्सी के तौर पर अलग किया जाएगा.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

यहां दिए गए कॉन्फ़िगरेशन में, प्रॉक्सी पाथ /mocktarget/healthcheck वाले किसी भी एपीआई को, आंकड़ों के डैशबोर्ड में edgemicro_proxyname-health नाम की अलग प्रॉक्सी के तौर पर अलग किया जाएगा.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

कंपनी के फ़ायरवॉल के पीछे Edge माइक्रोगेटवे को सेट अप करना

Apigee Edge के साथ कम्यूनिकेट करने के लिए, एचटीटीपी प्रॉक्सी का इस्तेमाल करना

यह सुविधा 3.1.2 वर्शन में जोड़ी गई है.

Edge Microgateway और Apigee Edge के बीच कम्यूनिकेशन के लिए एचटीटीपी प्रॉक्सी का इस्तेमाल करने के लिए, ये काम करें:

  1. एनवायरमेंट वैरिएबल सेट करें HTTP_PROXY, HTTPS_PROXY, और NO_PROXY. ये वैरिएबल, हर उस एचटीटीपी प्रॉक्सी के होस्ट को कंट्रोल करते हैं जिसका इस्तेमाल आपको Apigee Edge के साथ कम्यूनिकेशन के लिए करना है. इसके अलावा, ये यह भी कंट्रोल करते हैं कि किन होस्ट को Apigee Edge के साथ कम्यूनिकेशन मैनेज नहीं करना चाहिए. उदाहरण के लिए:
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    ध्यान दें कि NO_PROXY, कॉमा से अलग किए गए उन डोमेन की सूची हो सकती है जिनके लिए Edge Microgateway को प्रॉक्सी नहीं बनाना चाहिए.

    इन वैरिएबल के बारे में ज़्यादा जानने के लिए, https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables पर जाएं

  2. Edge Microgateway को रीस्टार्ट करें.

टारगेट से कम्यूनिकेट करने के लिए, एचटीटीपी प्रॉक्सी का इस्तेमाल करना

यह सुविधा 3.1.2 वर्शन में जोड़ी गई है.

Edge Microgateway और बैकएंड टारगेट के बीच कम्यूनिकेशन के लिए, एचटीटीपी प्रॉक्सी का इस्तेमाल करने के लिए, ये करें:

  1. माइक्रोगेटवे कॉन्फ़िगरेशन फ़ाइल में यह कॉन्फ़िगरेशन जोड़ें:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    कहां:

    • टनल: (ज़रूरी नहीं) अगर यह 'सही' है, तो Edge Microgateway, एचटीटीपी अनुरोधों को एक टीसीपी कनेक्शन पर टनल करने के लिए, एचटीटीपी कनेक्ट तरीके का इस्तेमाल करता है. (अगर प्रॉक्सी को कॉन्फ़िगर करने के लिए, यहां बताए गए एनवायरमेंट वैरिएबल में TLS चालू है, तो भी यही बात लागू होती है). डिफ़ॉल्ट: false
    • url: एचटीटीपी प्रॉक्सी यूआरएल.
    • bypass: (ज़रूरी नहीं) कॉमा लगाकर अलग किए गए एक या उससे ज़्यादा टारगेट होस्ट यूआरएल की जानकारी देता है. इन यूआरएल को एचटीटीपी प्रॉक्सी को बायपास करना चाहिए. अगर यह प्रॉपर्टी सेट नहीं है, तो NO_PROXY के एनवायरमेंट वैरिएबल का इस्तेमाल करके यह तय करें कि किन टारगेट यूआरएल को बायपास करना है.
    • चालू है: अगर यह सही है और proxy.url सेट है, तो एचटीटीपी प्रॉक्सी के लिए proxy.url वैल्यू का इस्तेमाल करें. अगर यह सही है और proxy.url सेट नहीं है, तो एचटीटीपी प्रॉक्सी के एनवायरमेंट वैरिएबल HTTP_PROXY और HTTPS_PROXY में बताई गई प्रॉक्सी का इस्तेमाल करें. इस बारे में ज़्यादा जानने के लिए, Apigee Edge के साथ कम्यूनिकेशन के लिए एचटीटीपी प्रॉक्सी का इस्तेमाल करना लेख पढ़ें.

    उदाहरण के लिए:

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. Edge Microgateway को रीस्टार्ट करें.

माइक्रोगेटकवे के बारे में जानकारी रखने वाली प्रोक्सी में वाइल्डकार्ड का इस्तेमाल करना

edgemicro_* (माइक्रोगेटकवे के बारे में जानकारी रखने वाली) प्रॉक्सी के बेस पाथ में, एक या उससे ज़्यादा "*" वाइल्डकार्ड का इस्तेमाल किया जा सकता है. उदाहरण के लिए, /team/*/members के बेस पाथ की मदद से, क्लाइंट https://[host]/team/blue/members और https://[host]/team/green/members को कॉल कर सकते हैं. इसके लिए, आपको नई टीमों के लिए नए एपीआई प्रॉक्सी बनाने की ज़रूरत नहीं है. ध्यान दें कि /**/ का इस्तेमाल नहीं किया जा सकता.

अहम जानकारी: Apigee, वाइल्डकार्ड "*" को बेस पाथ के पहले एलिमेंट के तौर पर इस्तेमाल करने की सुविधा नहीं देता. उदाहरण के लिए, यह काम नहीं करता: /*/ खोजें.

JWT पासकोड को रोटेट करना

JWT जनरेट करने के कुछ समय बाद, आपको एज एन्क्रिप्ट किए गए KVM में सेव की गई, सार्वजनिक/निजी पासकोड का जोड़ा बदलना पड़ सकता है. नई कुंजी का जोड़ा जनरेट करने की इस प्रोसेस को, कुंजी रोटेशन कहा जाता है.

Edge Microgateway, JWT का इस्तेमाल कैसे करता है

JSON वेब टोकन (JWT), RFC7519 में बताया गया एक टोकन स्टैंडर्ड है. JWT, दावों के सेट पर हस्ताक्षर करने का एक तरीका उपलब्ध कराता है. JWT पाने वाला व्यक्ति, इसकी भरोसेमंद तरीके से पुष्टि कर सकता है.

सीएलआई का इस्तेमाल करके, JWT जनरेट किया जा सकता है. साथ ही, एपीआई पासकोड के बजाय, एपीआई कॉल के अनुमति हेडर में इसका इस्तेमाल किया जा सकता है. उदाहरण के लिए:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

सीएलआई की मदद से JWT जनरेट करने के बारे में जानने के लिए, टोकन जनरेट करना लेख पढ़ें.

पासकोड रोटेशन क्या है?

JWT जनरेट करने के कुछ समय बाद, आपको एज एन्क्रिप्ट किए गए KVM में सेव की गई, सार्वजनिक/निजी पासकोड का जोड़ा बदलना पड़ सकता है. नई कुंजी का जोड़ा जनरेट करने की इस प्रोसेस को, कुंजी रोटेशन कहा जाता है. पासकोड बदलने पर, एक नया निजी/सार्वजनिक पासकोड जनरेट होता है और उसे आपके Apigee Edge संगठन/एनवायरमेंट में "माइक्रोगेटकवे" के KVM में सेव किया जाता है. इसके अलावा, पुरानी सार्वजनिक कुंजी को उसकी मूल कुंजी आईडी वैल्यू के साथ रखा जाता है.

JWT जनरेट करने के लिए, Edge एन्क्रिप्ट (सुरक्षित) किए गए KVM में सेव की गई जानकारी का इस्तेमाल करता है. microgateway नाम का एक केVM बनाया गया था और जब आपने Edge Microgateway को पहली बार सेट अप (कॉन्फ़िगर) किया था, तब उसमें कुंजियां भरी गई थीं. KVM में मौजूद कुंजियों का इस्तेमाल, JWT को साइन और एन्क्रिप्ट करने के लिए किया जाता है.

KVM की इनमें ये शामिल हैं:

  • private_key - सबसे हाल ही में बनाई गई आरएसए निजी कुंजी, जिसका इस्तेमाल JWT पर हस्ताक्षर करने के लिए किया जाता है.

  • public_key - यह सबसे नया (हाल ही में बनाया गया) सर्टिफ़िकेट है. इसका इस्तेमाल, private_key से हस्ताक्षर किए गए JWT की पुष्टि करने के लिए किया जाता है.

  • private_key_kid - निजी पासकोड का सबसे नया (हाल ही में बनाया गया) आईडी. यह पासकोड आईडी, private_key वैल्यू से जुड़ा होता है. इसका इस्तेमाल, पासकोड रोटेशन की सुविधा के साथ किया जाता है.

  • public_key1_kid - सबसे नया (हाल ही में बनाया गया) सार्वजनिक पासकोड आईडी. यह कुंजी, public_key1 वैल्यू से जुड़ी होती है. इसका इस्तेमाल, पासकोड रोटेशन की सुविधा के साथ किया जाता है. यह वैल्यू, निजी कुंजी के बच्चे की तरह ही होती है.

  • public_key1 - सबसे हाल ही में बनाई गई सार्वजनिक कुंजी.

कुंजी रोटेशन करने पर, मैप में मौजूदा कुंजी वैल्यू बदल जाती हैं. साथ ही, पुरानी सार्वजनिक कुंजियों को बनाए रखने के लिए, नई कुंजियां जोड़ी जाती हैं. उदाहरण के लिए:

  • public_key2_kid - पुराना सार्वजनिक पासकोड आईडी. यह कुंजी, public_key2 वैल्यू से जुड़ी होती है. इसका इस्तेमाल, पासकोड रोटेशन की सुविधा के साथ किया जाता है.

  • public_key2 - पुरानी सार्वजनिक कुंजी.

पुष्टि के लिए सबमिट किए गए JWT की पुष्टि, नई सार्वजनिक कुंजी का इस्तेमाल करके की जाएगी. अगर पुष्टि नहीं हो पाती है, तो JWT की समयसीमा खत्म होने तक पुरानी सार्वजनिक कुंजी का इस्तेमाल किया जाएगा. JWT की समयसीमा, token_expiry* इंटरवल के बाद खत्म होती है. डिफ़ॉल्ट रूप से, यह इंटरवल 30 मिनट का होता है. इस तरह, एपीआई ट्रैफ़िक में तुरंत रुकावट डाले बिना, कुंजियों को "रोटेट" किया जा सकता है.

डेटा सुरक्षित करने वाली कुंजी का नया वर्शन बनाने का तरीका

इस सेक्शन में, पासकोड बदलने का तरीका बताया गया है.

  1. KVM को अपग्रेड करने के लिए, edgemicro upgradekvm कमांड का इस्तेमाल करें. इस निर्देश को चलाने के बारे में जानकारी पाने के लिए, KVM को अपग्रेड करना लेख पढ़ें. आपको यह चरण सिर्फ़ एक बार पूरा करना होगा.
  2. edgemicro-oauth प्रॉक्सी को अपग्रेड करने के लिए, edgemicro upgradeauth कमांड का इस्तेमाल करें. इस निर्देश को चलाने के बारे में ज़्यादा जानने के लिए, edgemicro-auth प्रॉक्सी को अपग्रेड करना लेख पढ़ें. आपको यह चरण सिर्फ़ एक बार पूरा करना होगा.
  3. अपनी ~/.edgemicro/org-env-config.yaml फ़ाइल में यह लाइन जोड़ें. इसमें आपको उसी संगठन और एनवायरमेंट की जानकारी देनी होगी जिसका इस्तेमाल करने के लिए आपने माइक्रोगेटक को कॉन्फ़िगर किया है:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. कुंजियों को बदलने के लिए, कुंजी बदलने का निर्देश चलाएं. इस निर्देश के बारे में ज़्यादा जानने के लिए, रोटेट करने वाली बटन देखें.

    edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET

    उदाहरण के लिए:

    edgemicro rotatekey -o docs -e test \
    -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
    -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

कुंजी बदलने के बाद, Edge, Edge Microgateway को कई कुंजियां दिखाता है. नीचे दिए गए उदाहरण में ध्यान दें कि हर पासकोड की एक यूनीक "kid" (पासकोड आईडी) वैल्यू होती है. इसके बाद, माइक्रोगेटकेशन, अनुमति वाले टोकन की पुष्टि करने के लिए इन कुंजियों का इस्तेमाल करता है. अगर टोकन की पुष्टि नहीं हो पाती है, तो माइक्रोगेटकेट यह देखता है कि कुंजी सेट में कोई पुरानी कुंजी है या नहीं. अगर कुंजी सेट में कोई पुरानी कुंजी है, तो माइक्रोगेटकेट उस कुंजी का इस्तेमाल करता है. रिटर्न की गई कुंजियों का फ़ॉर्मैट, JSON वेब कुंजी (JWK) है. इस फ़ॉर्मैट के बारे में आरएफ़सी 7517 में पढ़ा जा सकता है.

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

"इससे पहले नहीं" विलंब को कॉन्फ़िगर करना

3.1.5 और उससे पहले के वर्शन के लिए, rotatekey कमांड से जनरेट की गई नई निजी 'की' तुरंत लागू हो गई. साथ ही, जनरेट किए गए नए टोकन पर नई निजी 'की' से हस्ताक्षर किए गए. हालांकि, नई सार्वजनिक कुंजी, डिफ़ॉल्ट रूप से हर 10 मिनट में, सिर्फ़ Edge माइक्रोगेटवे इंस्टेंस के लिए उपलब्ध कराई जाती थी. ऐसा तब होता था, जब माइक्रोगेटवे कॉन्फ़िगरेशन रीफ़्रेश किया जाता था. टोकन पर हस्ताक्षर करने और माइक्रोगेटकवे इंस्टेंस को रीफ़्रेश करने के बीच इस अंतर की वजह से, नए पासकोड से हस्ताक्षर किए गए टोकन तब तक अस्वीकार कर दिए जाएंगे, जब तक सभी इंस्टेंस को नया सार्वजनिक पासकोड नहीं मिल जाता.

अगर एक से ज़्यादा माइक्रोगेटकवे इंस्टेंस मौजूद हैं, तो सार्वजनिक पासकोड के लैग की वजह से, कभी-कभी रनटाइम के दौरान गड़बड़ियां होती हैं. इन गड़बड़ियों का स्टेटस 403 होता है. ऐसा इसलिए होता है, क्योंकि टोकन की पुष्टि एक इंस्टेंस पर हो जाती है, लेकिन सभी इंस्टेंस रीफ़्रेश होने तक, दूसरे इंस्टेंस पर नहीं हो पाती.

3.1.6 वर्शन से, rotatekey कमांड पर एक नया फ़्लैग जोड़ा गया है. इसकी मदद से, नई निजी कुंजी के लागू होने में लगने वाले समय की जानकारी दी जा सकती है. इससे सभी माइक्रोगेटकेस इंस्टेंस को रीफ़्रेश करने और नई सार्वजनिक कुंजी पाने का समय मिलता है. नया फ़्लैग --nbf है, जिसका मतलब है "इससे पहले नहीं." इस फ़्लैग में पूर्णांक वैल्यू डाली जाती है. यह वैल्यू, विज्ञापन दिखाने में लगने वाले समय को दिखाती है.

यहां दिए गए उदाहरण में, देरी को 15 मिनट पर सेट किया गया है:

edgemicro rotatekey -o docs -e test \
-k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
-s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \
--nbf 15

ध्यान दें कि देरी को config_change_poll_internal कॉन्फ़िगरेशन सेटिंग से ज़्यादा पर सेट करना एक अच्छा तरीका है. यह सेटिंग डिफ़ॉल्ट रूप से 10 मिनट पर सेट होती है. edgemicro एट्रिब्यूट भी देखें.

डाउनलोड की गई प्रॉक्सी को फ़िल्टर करना

डिफ़ॉल्ट रूप से, Edge Microgateway आपके Edge संगठन में मौजूद सभी प्रॉक्सी डाउनलोड करता है. ये प्रॉक्सी, "edgemicro_" नाम के प्रीफ़िक्स से शुरू होती हैं. इस डिफ़ॉल्ट सेटिंग को बदलकर, ऐसे प्रोक्सी डाउनलोड किए जा सकते हैं जिनके नाम किसी पैटर्न से मेल खाते हों.

  1. अपनी Edge Micro कॉन्फ़िगरेशन फ़ाइल खोलें: ~/.edgemicro/org-env-config.yaml
  2. edge_config में proxyPattern एलिमेंट जोड़ें. उदाहरण के लिए, यह पैटर्न edgemicro_foo, edgemicro_fast, और edgemicro_first जैसी प्रॉक्सी डाउनलोड करेगा.
    edge_config:proxyPattern: edgemicro_f*

एपीआई प्रॉक्सी के बिना प्रॉडक्ट की जानकारी देना

Apigee Edge में, ऐसा एपीआई प्रॉडक्ट बनाया जा सकता है जिसमें कोई एपीआई प्रॉक्सी न हो. इस प्रॉडक्ट कॉन्फ़िगरेशन की मदद से, उस प्रॉडक्ट से जुड़ी एपीआई कुंजी, आपके संगठन में डिप्लॉय किए गए किसी भी प्रोक्सी के साथ काम कर सकती है. Edge Microgateway के 2.5.4 वर्शन से, इस प्रॉडक्ट के कॉन्फ़िगरेशन का इस्तेमाल किया जा सकता है.

डीबग करना और समस्या हल करना

डीबगर से कनेक्ट करना

Edge Microgateway को node-inspector जैसे डीबगर के साथ चलाया जा सकता है. यह कस्टम प्लग इन से जुड़ी समस्या हल करने और उन्हें डीबग करने के लिए मददगार है.

  1. Edge Microgateway को डीबग मोड में रीस्टार्ट करें. ऐसा करने के लिए, start कमांड के शुरू में DEBUG=* जोड़ें:
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    किसी फ़ाइल में डीबग आउटपुट भेजने के लिए, इस निर्देश का इस्तेमाल किया जा सकता है:

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. अपना डीबगर शुरू करें और उसे डीबग करने की प्रोसेस के लिए, पोर्ट नंबर पर सुनने के लिए सेट करें.
  3. अब Edge Microgateway कोड को सिलसिलेवार तरीके से देखा जा सकता है, ब्रेकपॉइंट सेट किए जा सकते हैं, एक्सप्रेशन देखे जा सकते हैं वगैरह.

डीबग मोड से जुड़े स्टैंडर्ड Node.js फ़्लैग तय किए जा सकते हैं. उदाहरण के लिए, --nolazy, एसिंक्रोनस कोड को डीबग करने में मदद करता है.

लॉग फ़ाइलों की जांच करना

अगर आपको कोई समस्या आ रही है, तो प्रोसेस के बारे में जानकारी और गड़बड़ी के बारे में जानकारी पाने के लिए, लॉग फ़ाइलों की जांच करना न भूलें. ज़्यादा जानकारी के लिए, लॉग फ़ाइलें मैनेज करना लेख पढ़ें.

एपीआई पासकोड की सुरक्षा का इस्तेमाल करना

एपीआई पासकोड, Edge माइक्रोगेटवे को अनुरोध करने वाले क्लाइंट की पुष्टि करने के लिए एक आसान तरीका उपलब्ध कराते हैं. Apigee Edge के किसी ऐसे प्रॉडक्ट से Consumer Key (जिसे क्लाइंट आईडी भी कहा जाता है) की वैल्यू कॉपी करके, एपीआई पासकोड पाया जा सकता है जिसमें Edge Microgateway की पुष्टि करने वाली प्रॉक्सी शामिल हो.

पासकी को कैश मेमोरी में सेव करना

एपीआई कुंजियों को, कैश मेमोरी में सेव किए गए टोकन के लिए एक्सचेंज किया जाता है. कैश मेमोरी का इस्तेमाल बंद करने के लिए, Edge माइक्रोगेटकेट पर आने वाले अनुरोधों में Cache-Control: no-cache हेडर सेट करें.

एपीआई पासकोड का इस्तेमाल करना

एपीआई कुंजी को एपीआई अनुरोध में, क्वेरी पैरामीटर या हेडर के तौर पर पास किया जा सकता है. डिफ़ॉल्ट रूप से, हेडर और क्वेरी पैरामीटर, दोनों का नाम x-api-key होता है.

क्वेरी पैरामीटर का उदाहरण:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

हेडर का उदाहरण:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

एपीआई पासकोड का नाम कॉन्फ़िगर करना

डिफ़ॉल्ट रूप से, एपीआई पासकोड हेडर और क्वेरी पैरामीटर, दोनों के लिए x-api-key का इस्तेमाल किया जाता है. कॉन्फ़िगरेशन में बदलाव करना में बताए गए तरीके से, कॉन्फ़िगरेशन फ़ाइल में जाकर इस डिफ़ॉल्ट वैल्यू को बदला जा सकता है. उदाहरण के लिए, नाम को apiKey में बदलने के लिए:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

इस उदाहरण में, क्वेरी पैरामीटर और हेडर का नाम, दोनों को apiKey में बदल दिया गया है. दोनों ही मामलों में, x-api-key नाम अब काम नहीं करेगा. कॉन्फ़िगरेशन में बदलाव करना भी देखें.

उदाहरण के लिए:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

प्रॉक्सी अनुरोधों के साथ एपीआई पासकोड इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Secure Edge Microgateway लेख पढ़ें.

अपस्ट्रीम रिस्पॉन्स कोड चालू करना

डिफ़ॉल्ट रूप से, oauth प्लग इन सिर्फ़ 4xx गड़बड़ी वाले स्टेटस कोड दिखाता है. ऐसा तब होता है, जब रिस्पॉन्स का स्टेटस 200 न हो. इस व्यवहार को बदला जा सकता है, ताकि गड़बड़ी के हिसाब से, हमेशा सही 4xx या 5xx कोड दिखाया जा सके.

इस सुविधा को चालू करने के लिए, अपने Edge Microgateway कॉन्फ़िगरेशन में oauth.useUpstreamResponse: true प्रॉपर्टी जोड़ें. उदाहरण के लिए:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

OAuth2 टोकन की सुरक्षा का इस्तेमाल करना

इस सेक्शन में, OAuth2 ऐक्सेस टोकन और रीफ़्रेश टोकन पाने का तरीका बताया गया है. ऐक्सेस टोकन का इस्तेमाल, माइक्रोगेटकवे के ज़रिए सुरक्षित एपीआई कॉल करने के लिए किया जाता है. नए ऐक्सेस टोकन पाने के लिए, रिफ़्रेश टोकन का इस्तेमाल किया जाता है.

ऐक्सेस टोकन पाने का तरीका

इस सेक्शन में, ऐक्सेस टोकन पाने के लिए edgemicro-auth प्रॉक्सी का इस्तेमाल करने का तरीका बताया गया है.

edgemicro token CLI कमांड का इस्तेमाल करके भी ऐक्सेस टोकन पाया जा सकता है. सीएलआई के बारे में ज़्यादा जानने के लिए, टोकन मैनेज करना लेख पढ़ें.

एपीआई 1: बॉडी पैरामीटर के तौर पर क्रेडेंशियल भेजना

यूआरएल में अपने संगठन और एनवायरमेंट के नाम बदलें. साथ ही, client_id और client_secret बॉडी पैरामीटर के लिए, Apigee Edge पर डेवलपर ऐप्लिकेशन से मिली Consumer Id और Consumer Secret वैल्यू बदलें:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

एपीआई 2: बेसिक ऑथेंटिकेशन हेडर में क्रेडेंशियल भेजना

क्लाइंट क्रेडेंशियल को बुनियादी पुष्टि वाले हेडर के तौर पर और grant_type को फ़ॉर्म पैरामीटर के तौर पर भेजें. इस कमांड फ़ॉर्म के बारे में, RFC 6749: OAuth 2.0 Authorization Framework में भी बताया गया है.

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

आउटपुट का सैंपल

एपीआई, JSON फ़ॉर्मैट में रिस्पॉन्स दिखाता है. ध्यान दें कि token और access_token प्रॉपर्टी के बीच कोई अंतर नहीं है. इनमें से किसी भी तरीके का इस्तेमाल किया जा सकता है. ध्यान दें कि expires_in, सेकंड में बताई गई पूर्णांक वैल्यू है.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": 1799
}

रीफ़्रेश टोकन पाने का तरीका

रीफ़्रेश टोकन पाने के लिए, edgemicro-auth प्रॉक्सी के /token एंडपॉइंट पर एपीआई कॉल करें. आपको यह एपीआई कॉल, password ग्रांट टाइप के साथ करना होगा. इस प्रोसेस के बारे में यहां बताया गया है.

  1. /token एपीआई की मदद से, ऐक्सेस और रीफ़्रेश टोकन पाएं. ध्यान दें कि अनुदान का टाइप password है:
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    एपीआई, ऐक्सेस टोकन और रीफ़्रेश टोकन दिखाता है. जवाब कुछ ऐसा दिखता है. ध्यान दें कि expires_in वैल्यू पूर्णांक होती हैं और उन्हें सेकंड में बताया जाता है.

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": 108,
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": 431,
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. अब रीफ़्रेश टोकन का इस्तेमाल करके, नया ऐक्सेस टोकन पाया जा सकता है. इसके लिए, उसी एपीआई के /refresh एंडपॉइंट को कॉल करें. उदाहरण के लिए:
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    एपीआई, नया ऐक्सेस टोकन दिखाता है. जवाब कुछ ऐसा दिखता है:

    {
        "token": "your-new-access-token"
        }

हमेशा निगरानी करने की सुविधा

कॉन्फ़िगरेशन फ़ाइल का एंडपॉइंट तय करना

अगर आपने एक से ज़्यादा Edge Microgateway इंस्टेंस चलाए हैं, तो हो सकता है कि आप एक ही जगह से उनके कॉन्फ़िगरेशन मैनेज करना चाहें. ऐसा करने के लिए, एचटीटीपी एंडपॉइंट की जानकारी दें, ताकि Edge Micro अपनी कॉन्फ़िगरेशन फ़ाइल डाउनलोड कर सके. -u फ़्लैग का इस्तेमाल करके Edge Micro को शुरू करते समय, इस एंडपॉइंट की जानकारी दी जा सकती है.

उदाहरण के लिए:

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

यहां mgconfig एंडपॉइंट, आपकी कॉन्फ़िगरेशन फ़ाइल का कॉन्टेंट दिखाता है. यह फ़ाइल डिफ़ॉल्ट रूप से ~/.edgemicro में होती है और इसका नाम इस तरह से रखा जाता है: org-env-config.yaml.

टीसीपी कनेक्शन के डेटा को बफ़र करने की सुविधा बंद करना

Edge Microgateway के इस्तेमाल किए जाने वाले टीसीपी कनेक्शन के लिए, डेटा बफ़र करने की सुविधा बंद करने के लिए, nodelay कॉन्फ़िगरेशन एट्रिब्यूट का इस्तेमाल किया जा सकता है.

डिफ़ॉल्ट रूप से, टीसीपी कनेक्शन डेटा भेजने से पहले उसे बफ़र करने के लिए, Nagle एल्गोरिदम का इस्तेमाल करते हैं. nodelay को true पर सेट करने पर, यह सुविधा बंद हो जाती है. ऐसा होने पर, socket.write() को हर बार कॉल करने पर डेटा तुरंत भेज दिया जाएगा. ज़्यादा जानकारी के लिए, Node.js का दस्तावेज़ भी देखें.

nodelay को चालू करने के लिए, Edge Micro की कॉन्फ़िगरेशन फ़ाइल में इस तरह बदलाव करें:

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Edge Microgateway को स्टैंडअलोन मोड में चलाना

Edge Microgateway को किसी भी Apigee Edge डिपेंडेंसी से पूरी तरह डिसकनेक्ट करके चलाया जा सकता है. इस स्थिति को स्टैंडअलोन मोड कहा जाता है. इसमें, इंटरनेट कनेक्शन के बिना Edge Microgateway को चलाया और टेस्ट किया जा सकता है.

स्टैंडअलोन मोड में, ये सुविधाएं काम नहीं करतीं, क्योंकि इनके लिए Apigee Edge से कनेक्ट करना ज़रूरी है:

  • OAuth और एपीआई पासकोड
  • अनुरोध भेजने की तय सीमा
  • Analytics

दूसरी ओर, कस्टम प्लग इन और स्पाइक अरेस्ट सामान्य रूप से काम करते हैं, क्योंकि इन्हें Apigee Edge से कनेक्ट करने की ज़रूरत नहीं होती. इसके अलावा, extauth नाम के नए प्लग इन की मदद से, स्टैंडअलोन मोड में जेडब्लयूटी की मदद से, माइक्रोगेटकवे को एपीआई कॉल करने की अनुमति दी जा सकती है.

गेटवे को कॉन्फ़िगर और शुरू करना

Edge Microgateway को स्टैंडअलोन मोड में चलाने के लिए:

  1. यहां बताए गए नाम वाली कॉन्फ़िगरेशन फ़ाइल बनाएं: $HOME/.edgemicro/$ORG-$ENV-config.yaml

    उदाहरण के लिए:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. फ़ाइल में यह कोड चिपकाएं:
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  3. नीचे दिए गए एनवायरमेंट वैरिएबल को "1" वैल्यू के साथ एक्सपोर्ट करें:
    export EDGEMICRO_LOCAL=1
  4. यहां दिया गया start कमांड चलाएं. इसमें आपको लोकल प्रॉक्सी को इंस्टैंशिएट करने के लिए वैल्यू देनी होगी:
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    कहां:

    • $ORG वह "संगठन" नाम है जिसका इस्तेमाल आपने कॉन्फ़िगरेशन फ़ाइल के नाम में किया था.
    • $ENV वह "env" नाम है जिसका इस्तेमाल आपने कॉन्फ़िगरेशन फ़ाइल के नाम में किया था.
    • $LOCAL_PROXY_NAME, उस लोकल प्रॉक्सी का नाम है जिसे बनाया जाएगा. आपके पास अपनी पसंद का कोई भी नाम इस्तेमाल करने का विकल्प है.
    • $LOCAL_PROXY_VERSION, प्रॉक्सी का वर्शन नंबर है.
    • $TARGET_URL, प्रॉक्सी के टारगेट का यूआरएल है. (टारगेट वह सेवा है जिसे प्रॉक्सी कॉल करता है.)
    • $BASE_PATH, प्रॉक्सी का बेस पाथ है. यह वैल्यू, फ़ॉरवर्ड स्लैश से शुरू होनी चाहिए. रूट बेस पाथ के लिए, सिर्फ़ फ़ॉरवर्ड स्लैश डालें. उदाहरण के लिए, "/".

    उदाहरण के लिए:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. कॉन्फ़िगरेशन की जांच करें.
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    extauth प्लग इन, foo-bar-config.yaml फ़ाइल में होने की वजह से, आपको "missing_authorization" गड़बड़ी का मैसेज मिलता है. यह प्लग इन, एपीआई कॉल के Authorization हेडर में मौजूद JWT की पुष्टि करता है. अगले सेक्शन में, आपको एक JWT मिलेगा. इससे, API कॉल को बिना किसी गड़बड़ी के भेजा जा सकेगा.

उदाहरण: ऑथराइज़ेशन टोकन पाना

नीचे दिए गए उदाहरण में, Apigee Edge (edgemicro-auth/jwkPublicKeys) पर Edge Microgateway JWT एंडपॉइंट से JWT पाने का तरीका बताया गया है. Edge Microgateway का स्टैंडर्ड सेटअप और कॉन्फ़िगरेशन करने पर, यह एंडपॉइंट डिप्लॉय हो जाता है. Apigee एंडपॉइंट से JWT पाने के लिए, आपको पहले स्टैंडर्ड Edge Microgateway सेटअप करना होगा और इंटरनेट से कनेक्ट होना होगा. Apigee एंडपॉइंट का इस्तेमाल यहां सिर्फ़ उदाहरण के तौर पर किया गया है. आपके पास किसी दूसरे JWT टोकन एंडपॉइंट का इस्तेमाल करने का विकल्प है. अगर ऐसा है, तो आपको उस एंडपॉइंट के लिए दिए गए एपीआई का इस्तेमाल करके, JWT पाना होगा.

edgemicro-auth/jwkPublicKeys एंडपॉइंट का इस्तेमाल करके टोकन पाने का तरीका यहां बताया गया है:.

  1. Apigee Edge पर अपने संगठन/एनवायरमेंट में edgemicro-auth प्रॉक्सी को डिप्लॉय करने के लिए, आपको Edge माइक्रोगेटवे का स्टैंडर्ड सेटअप और कॉन्फ़िगरेशन करना होगा. अगर आपने यह चरण पहले ही पूरा कर लिया है, तो आपको इसे दोबारा करने की ज़रूरत नहीं है.
  2. अगर आपने Edge Microgateway को Apigee Cloud पर डिप्लॉय किया है, तो आपको इंटरनेट से कनेक्ट होना चाहिए, ताकि आप इस एंडपॉइंट से JWT पा सकें.
  3. Edge Microgateway को बंद करना:
    edgemicro stop
  4. आपने जो कॉन्फ़िगरेशन फ़ाइल ($HOME/.edgemicro/org-env-config.yaml) पहले बनाई थी उसमें, extauth:publickey_url एट्रिब्यूट को अपने Apigee Edge संगठन/एनवायरमेंट में मौजूद edgemicro-auth/jwkPublicKeys एंडपॉइंट पर ले जाएं. उदाहरण के लिए:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. कॉन्फ़िगरेशन फ़ाइल के नाम में इस्तेमाल किए गए org/env नामों का इस्तेमाल करके, Edge Microgateway को पहले की तरह रीस्टार्ट करें. उदाहरण के लिए:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. ऑथराइज़ेशन एंडपॉइंट से JWT टोकन पाएं. edgemicro-auth/jwkPublicKeys एंडपॉइंट का इस्तेमाल करने पर, इस सीएलआई कमांड का इस्तेमाल किया जा सकता है:

edgemicro token कमांड या एपीआई का इस्तेमाल करके, Edge Microgateway के लिए JWT जनरेट किया जा सकता है. उदाहरण के लिए:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

कहां:

  • your_org आपके उस Apigee संगठन का नाम है जिसके लिए आपने पहले Edge Microgateway को कॉन्फ़िगर किया था.
  • your_env, संगठन का एक एनवायरमेंट है.
  • i विकल्प, डेवलपर के उस ऐप्लिकेशन का उपभोक्ता कुंजी बताता है जिसमें ऐसा प्रॉडक्ट है जिसमें edgemicro-auth प्रॉक्सी शामिल है.
  • s विकल्प, डेवलपर के उस ऐप्लिकेशन के उपभोक्ता के लिए सीक्रेट पासकोड की जानकारी देता है जिसमें ऐसा प्रॉडक्ट है जिसमें edgemicro-auth प्रॉक्सी शामिल है.

यह निर्देश, Apigee Edge को एक JWT जनरेट करने के लिए कहता है. इसका इस्तेमाल, एपीआई कॉल की पुष्टि करने के लिए किया जा सकता है.

टोकन जनरेट करना भी देखें.

स्टैंडअलोन कॉन्फ़िगरेशन की जांच करना

कॉन्फ़िगरेशन की जांच करने के लिए, एपीआई को इस तरह कॉल करें. इसके लिए, अनुमति वाले हेडर में जोड़ा गया टोकन इस्तेमाल करें:

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

उदाहरण:

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

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

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

लोकल प्रॉक्सी मोड का इस्तेमाल करना

लोकल प्रॉक्सी मोड में, Edge Microgateway को Apigee Edge पर microgateway-aware प्रॉक्सी को डिप्लॉय करने की ज़रूरत नहीं होती. इसके बजाय, माइक्रोगेटकेट शुरू करते समय, लोकल प्रॉक्सी का नाम, बेसपाथ, और टारगेट यूआरएल देकर, "लोकल प्रॉक्सी" कॉन्फ़िगर किया जाता है. इसके बाद, माइक्रोगेटवे पर किए गए एपीआई कॉल, लोकल प्रोक्सी के टारगेट यूआरएल पर भेजे जाते हैं. अन्य सभी मामलों में, लोकल प्रॉक्सी मोड ठीक उसी तरह काम करता है जैसे कि Edge Microgateway को सामान्य मोड में चलाना. पुष्टि करने की सुविधा, स्पाइक आर्केस्ट और कोटा लागू करने की सुविधा, कस्टम प्लग इन वगैरह की तरह ही काम करती है.

इस्तेमाल का उदाहरण

लोकल प्रॉक्सी मोड तब काम आता है, जब आपको Edge Microgateway के किसी इंस्टेंस के साथ सिर्फ़ एक प्रॉक्सी को असोसिएट करना हो. उदाहरण के लिए, Edge Microgateway को Kubernetes में साइडकार प्रॉक्सी के तौर पर इंजेक्ट किया जा सकता है. इसमें एक माइक्रोगेटवे और एक सेवा, दोनों एक ही पॉड में चलती हैं. साथ ही, माइक्रोगेटवे अपनी कंपैनियन सेवा के लिए आने और जाने वाले ट्रैफ़िक को मैनेज करता है. इस आरेख में इस आर्किटेक्चर को दिखाया गया है, जहां Edge Microgateway, Kubernetes क्लस्टर में साइडकार प्रॉक्सी के तौर पर काम करता है. हर माइक्रोगेटवे इंस्टेंस, अपनी साथी सेवा पर सिर्फ़ एक एंडपॉइंट से बात करता है:

साइडकार के तौर पर Edgemicro

इस तरह के आर्किटेक्चर का एक फ़ायदा यह है कि Edge Microgateway, कंटेनर एनवायरमेंट में डिप्लॉय की गई अलग-अलग सेवाओं के लिए एपीआई मैनेजमेंट की सुविधा देता है. जैसे, Kubernetes क्लस्टर.

लोकल प्रॉक्सी मोड कॉन्फ़िगर करना

Edge Microgateway को लोकल प्रॉक्सी मोड में चलाने के लिए, यह तरीका अपनाएं:

  1. अपने लोकल कॉन्फ़िगरेशन एनवायरमेंट को सेट अप करने के लिए, edgemicro init को ठीक उसी तरह चलाएं जिस तरह किसी सामान्य Edge माइक्रोगेटवे सेटअप में किया जाता है. Edge माइक्रोगेटकवे कॉन्फ़िगर करना भी देखें.
  2. edgemicro configure को उसी तरह चलाएं जिस तरह किसी सामान्य Edge माइक्रोगेटकेट के सेटअप के लिए किया जाता है. उदाहरण के लिए:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    यह कमांड, Edge में edgemicro-auth नीति को डिप्लॉय करता है. साथ ही, एक कुंजी और पासकोड दिखाता है. आपको माइक्रोगेटकवे को शुरू करने के लिए, इनकी ज़रूरत होगी. अगर आपको मदद चाहिए, तो Edge Microgateway कॉन्फ़िगर करना लेख पढ़ें.

  3. Apigee Edge पर, एपीआई प्रॉडक्ट बनाएं और कॉन्फ़िगरेशन से जुड़ी इन ज़रूरी शर्तों को पूरा करें (अन्य सभी कॉन्फ़िगरेशन को अपनी पसंद के मुताबिक मैनेज किया जा सकता है):
  4. Apigee Edge पर, कोई डेवलपर बनाएं या अपनी पसंद के मुताबिक किसी मौजूदा डेवलपर का इस्तेमाल करें. मदद पाने के लिए, Edge के मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके डेवलपर जोड़ना लेख पढ़ें.

  5. Apigee Edge पर, डेवलपर ऐप्लिकेशन बनाएं. आपको ऐप्लिकेशन में, अभी बनाए गए एपीआई प्रॉडक्ट को जोड़ना होगा. मदद पाने के लिए, Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में ऐप्लिकेशन रजिस्टर करना लेख पढ़ें.
  6. जिस मशीन पर Edge Microgateway इंस्टॉल है उस पर, "1" वैल्यू के साथ नीचे दिए गए एनवायरमेंट वैरिएबल को एक्सपोर्ट करें.
    export EDGEMICRO_LOCAL_PROXY=1
  7. start कमांड को इस तरह चलाएं:
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    कहां:

    • your_org आपका Apigee संगठन है.
    • your_environment आपके संगठन का एक एनवायरमेंट है.
    • your_key वह कुंजी है जो edgemicro configure को चलाने पर मिली थी.
    • your_secret वह सीक्रेट है जो edgemicro configure को चलाने पर, आपको मिला था.
    • local_proxy_name, उस लोकल प्रॉक्सी का नाम है जिसे बनाया जाएगा.
    • local_proxy_version, प्रॉक्सी का वर्शन नंबर है.
    • target_url, प्रॉक्सी के टारगेट (वह सेवा जिसे प्रॉक्सी कॉल करेगी) का यूआरएल है.
    • base_path, प्रॉक्सी का बेस पाथ है. यह वैल्यू, फ़ॉरवर्ड स्लैश से शुरू होनी चाहिए. रूट बेस पाथ के लिए, सिर्फ़ फ़ॉरवर्ड स्लैश डालें. उदाहरण के लिए, "/".

    उदाहरण के लिए:

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

कॉन्फ़िगरेशन की जांच करना

प्रॉक्सी एंडपॉइंट को कॉल करके, लोकल प्रॉक्सी कॉन्फ़िगरेशन की जांच की जा सकती है. उदाहरण के लिए, अगर आपने /echo का बेसपाथ तय किया है, तो प्रॉक्सी को इस तरह से कॉल किया जा सकता है:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

इस शुरुआती एपीआई कॉल में गड़बड़ी हुई, क्योंकि आपने मान्य एपीआई पासकोड नहीं दिया. आपको यह कुंजी, पहले बनाए गए डेवलपर ऐप्लिकेशन में मिल सकती है. Edge यूज़र इंटरफ़ेस (यूआई) में ऐप्लिकेशन खोलें, उपभोक्ता कुंजी कॉपी करें, और उस कुंजी का इस्तेमाल इस तरह करें:

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

उदाहरण के लिए:

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

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

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}

सिंक करने वाले टूल का इस्तेमाल करना

इस सेक्शन में, सिंक करने वाले टूल का इस्तेमाल करने का तरीका बताया गया है. यह एक वैकल्पिक सुविधा है, जो Edge माइक्रोगेटवे के काम करने के तरीके को बेहतर बनाती है. ऐसा करने के लिए, यह टूल Apigee Edge से कॉन्फ़िगरेशन डेटा को वापस लाता है और उसे स्थानीय Redis डेटाबेस में सेव करता है. सिंक करने वाले इंस्टेंस के चलने पर, अलग-अलग नोड पर चल रहे अन्य Edge Microgateway इंस्टेंस, सीधे इस डेटाबेस से अपना कॉन्फ़िगरेशन वापस पा सकते हैं.

फ़िलहाल, सिंक करने की सुविधा Redis 5.0.x के साथ काम करती है.

सिंक करने वाला टूल क्या है?

सिंक करने वाला टूल, Edge Microgateway को बेहतर बनाता है. इससे यह पक्का करने में मदद मिलती है कि Edge माइक्रोगेटवे का हर इंस्टेंस एक ही कॉन्फ़िगरेशन का इस्तेमाल करता है. साथ ही, इंटरनेट के रुकने पर, Edge माइक्रोगेटवे के इंस्टेंस सही तरीके से शुरू और चलाए जा सकते हैं.

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

Edge Microgateway सिंक करने वाला टूल, Edge Microgateway के इंस्टेंस के लिए एक अन्य तरीका उपलब्ध कराता है. इसकी मदद से, वे कॉन्फ़िगरेशन डेटा हासिल कर सकते हैं जो उन्हें एपीआई प्रॉक्सी ट्रैफ़िक को शुरू करने और प्रोसेस करने के लिए ज़रूरी होता है. Apigee Edge को किए गए कॉल से मिला कॉन्फ़िगरेशन डेटा में ये शामिल हैं: jwk_public_keys कॉल, jwt_public_key कॉल, बूटस्ट्रैप कॉल, और एपीआई प्रॉडक्ट कॉल. सिंक करने वाले टूल की मदद से, अलग-अलग नोड पर चल रहे सभी Edge Microgateway इंस्टेंस सही तरीके से शुरू हो सकते हैं और सिंक में बने रह सकते हैं. भले ही, Edge Microgateway और Apigee Edge के बीच इंटरनेट कनेक्शन में रुकावट आ जाए.

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

सिंक करने वाले इंस्टेंस को कॉन्फ़िगर करना

org-env/config.yaml फ़ाइल में, उस Edge Microgateway इंस्टॉलेशन के लिए यह कॉन्फ़िगरेशन जोड़ें जिसका इस्तेमाल आपको सिंक करने वाले टूल के तौर पर करना है:

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

उदाहरण के लिए:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
विकल्प ब्यौरा
redisHost वह होस्ट जहां आपका Redis इंस्टेंस चल रहा है. डिफ़ॉल्ट: 127.0.0.1
redisPort Redis इंस्टेंस का पोर्ट. डिफ़ॉल्ट: 6379
redisDb इस्तेमाल किया जाने वाला Redis DB. डिफ़ॉल्ट: 0
redisPassword आपके डेटाबेस का पासवर्ड.

आखिर में, कॉन्फ़िगरेशन फ़ाइल सेव करें और Edge Microgateway इंस्टेंस शुरू करें. इसके बाद, यह Apigee Edge से जानकारी पाने की प्रोसेस शुरू कर देगा. साथ ही, डाउनलोड किए गए कॉन्फ़िगरेशन डेटा को Redis डेटाबेस में सेव कर देगा.

सामान्य Edge Microgateway इंस्टेंस कॉन्फ़िगर करना

सिंक करने वाले टूल के चलने पर, एपीआई प्रॉक्सी ट्रैफ़िक को प्रोसेस करने वाले सामान्य माइक्रोगेटवे इंस्टेंस चलाने के लिए, ज़्यादा Edge माइक्रोगेटवे नोड कॉन्फ़िगर किए जा सकते हैं. हालांकि, इन इंस्टेंस को कॉन्फ़िगर करने के लिए, Apigee Edge के बजाय Redis डेटाबेस से कॉन्फ़िगरेशन डेटा पाया जाता है.

हर अतिरिक्त Edge Microgateway node की org-env/config.yaml फ़ाइल में, यह कॉन्फ़िगरेशन जोड़ें. ध्यान दें कि synchronizerMode प्रॉपर्टी को 0 पर सेट किया गया है. यह प्रॉपर्टी, इंस्टेंस को सामान्य एज माइक्रोगेटवे इंस्टेंस के तौर पर काम करने के लिए सेट करती है. यह इंस्टेंस, एपीआई प्रॉक्सी ट्रैफ़िक को प्रोसेस करता है. साथ ही, इंस्टेंस को Redis डेटाबेस से अपना कॉन्फ़िगरेशन डेटा मिलेगा.

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

उदाहरण के लिए:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

कॉन्फ़िगरेशन प्रॉपर्टी

सिंक करने वाले टूल का इस्तेमाल करने के लिए, ये कॉन्फ़िगरेशन प्रॉपर्टी जोड़ी गई हैं:

एट्रिब्यूट वैल्यू ब्यौरा
edge_config.synchronizerMode 0 या 1

अगर 0 (डिफ़ॉल्ट) है, तो Edge Microgateway अपने स्टैंडर्ड मोड में काम करता है.

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

edge_config.redisBasedConfigCache सही या गलत अगर यह सही है, तो Edge Microgateway इंस्टेंस, अपना कॉन्फ़िगरेशन डेटा, Apigee Edge के बजाय Redis डेटाबेस से फ़ेच करता है. Redis डेटाबेस वही होना चाहिए जिस पर सिंक करने वाले टूल को लिखने के लिए कॉन्फ़िगर किया गया है. अगर Redis डेटाबेस उपलब्ध नहीं है या डेटाबेस खाली है, तो माइक्रोगेटवे अपने कॉन्फ़िगरेशन के लिए, किसी मौजूदा cache-config.yaml फ़ाइल को खोजता है.

अगर यह वैल्यू 'गलत' (डिफ़ॉल्ट) है, तो Edge Microgateway इंस्टेंस, Apigee Edge से कॉन्फ़िगरेशन डेटा को हमेशा की तरह फ़ेच करता है.

edgemicro.config_change_poll_interval समय अंतराल, सेकंड में Apigee Edge से डेटा खींचने के लिए, सिंक करने वाले टूल के लिए पोलिंग इंटरवल तय करता है.

प्लग इन के लिए, बाहर रखे जाने वाले यूआरएल कॉन्फ़िगर करना

आपके पास, चुने गए यूआरएल के लिए प्लग इन की प्रोसेसिंग को छोड़ने के लिए, माइक्रोगेटवे को कॉन्फ़िगर करने का विकल्प है. इन "शामिल न करें" यूआरएल को, सभी प्लग इन के लिए या चुनिंदा प्लग इन के लिए, दुनिया भर में कॉन्फ़िगर किया जा सकता है.

उदाहरण के लिए:

...
edgemicro:
  ...
  plugins:
    excludeUrls: '/hello,/proxy_one' # global exclude urls
    sequence:
      - oauth
      - json2xml
      - quota
json2xml:
  excludeUrls: '/hello/xml'  # plugin level exclude urls
...

इस उदाहरण में, प्लग इन, /hello या /proxy_one पाथ वाले इनकमिंग एपीआई प्रॉक्सी कॉल को प्रोसेस नहीं करेंगे. इसके अलावा, जिन एपीआई के पाथ में /hello/xml है उनके लिए json2xml प्लग इन को स्किप कर दिया जाएगा.

एनवायरमेंट वैरिएबल की वैल्यू की मदद से कॉन्फ़िगरेशन एट्रिब्यूट सेट करना

कॉन्फ़िगरेशन फ़ाइल में टैग का इस्तेमाल करके, एनवायरमेंट वैरिएबल तय किए जा सकते हैं. तय किए गए एनवायरमेंट वैरिएबल टैग को, एनवायरमेंट वैरिएबल की असल वैल्यू से बदल दिया जाता है. बदले गए शब्द सिर्फ़ मेमोरी में सेव किए जाते हैं, न कि ओरिजनल कॉन्फ़िगरेशन या कैश मेमोरी फ़ाइलों में.

इस उदाहरण में, एट्रिब्यूट key को TARGETS_SSL_CLIENT_KEY एनवायरमेंट वैरिएबल की वैल्यू से बदल दिया गया है.

targets:
  - ssl:
      client:
        key: <E>TARGETS_SSL_CLIENT_KEY</E>
        cert: <E>TARGETS_SSL_CLIENT_CERT</E>
        passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>

इस उदाहरण में, <n> टैग का इस्तेमाल पूर्णांक वैल्यू दिखाने के लिए किया गया है. सिर्फ़ पूर्णांकों का इस्तेमाल किया जा सकता है.

edgemicro:
  port: <E><n>EMG_PORT</n></E>

इस उदाहरण में, <b> टैग का इस्तेमाल बूलियन ( यानी, सही या गलत) वैल्यू दिखाने के लिए किया गया है.

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>