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

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

Edge Microgateway v. 3.2.x

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

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

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

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

  1. Edge Microgateway के नए वर्शन पर अपग्रेड करने के लिए, यह 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 Microgateway को फिर से शुरू, कॉन्फ़िगर, और रीस्टार्ट करना होगा:

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 वह पासकोड है जिसे कॉन्फ़िगरेशन कमांड ने पहले दिखाया था.
    • $SECRET वह पासकोड है जिसे कॉन्फ़िगरेशन कमांड ने पहले दिखाया था.

    उदाहरण के लिए

    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 आपके संगठन का एक एनवायरमेंट है, जैसे कि "टेस्ट" या "प्रोड".
    • $KEY वह पासकोड है जिसे कॉन्फ़िगरेशन कमांड ने पहले दिखाया था.
    • $SECRET वह पासकोड है जिसे कॉन्फ़िगरेशन कमांड ने पहले दिखाया था.

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

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

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

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 Microgateway को शुरू करने के लिए ज़रूरी कुंजी और सीक्रेट को इन एनवायरमेंट वैरिएबल में सेव किया जा सकता है:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

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

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

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

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

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

https://localhost:8000/myapi

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

  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 अगर यह वैल्यू 'सही है' पर सेट है, तो सर्वर सर्टिफ़िकेट की पुष्टि, उपलब्ध कराए गए CA की सूची के हिसाब से की जाती है. अगर पुष्टि नहीं हो पाती है, तो गड़बड़ी का मैसेज दिखता है.
secureProtocol इस्तेमाल किया जाने वाला एसएसएल तरीका. उदाहरण के लिए, एसएसएल को वर्शन 3 पर सेट करने के लिए, SSLv3_method का इस्तेमाल किया जाता है.
servername एसएनआई (सर्वर नेम इंडिकेशन) टीएलएस एक्सटेंशन के लिए सर्वर का नाम.
requestCert टू-वे एसएसएल के लिए true; वन-वे एसएसएल के लिए false

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

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

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

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

यहां टीएलएस का एक उदाहरण दिया गया है:

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

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

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 अगर यह वैल्यू 'सही है' पर सेट है, तो सर्वर सर्टिफ़िकेट की पुष्टि, उपलब्ध कराए गए CA की सूची के हिसाब से की जाती है. अगर पुष्टि नहीं हो पाती है, तो गड़बड़ी का मैसेज दिखता है.
secureProtocol इस्तेमाल किया जाने वाला एसएसएल तरीका. उदाहरण के लिए, एसएसएल को वर्शन 3 पर सेट करने के लिए, SSLv3_method का इस्तेमाल किया जाता है.
servername एसएनआई (सर्वर नेम इंडिकेशन) टीएलएस एक्सटेंशन के लिए सर्वर का नाम.

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

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

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

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

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

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

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

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

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

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

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

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

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, ऐप्लिकेशन लॉग फ़ाइल (api-log.log) जनरेट करता है. इसके लिए, फ़ाइल से जुड़ी अनुमति का लेवल 0600 पर सेट होता है. अनुमति के इस लेवल से, बाहरी ऐप्लिकेशन या उपयोगकर्ताओं को लॉग फ़ाइल पढ़ने की अनुमति नहीं मिलती. अनुमति के इस सख्त लेवल को कम करने के लिए, 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 - Unix डेट स्टैंप
  • info - लॉगिंग लेवल. यह वैल्यू, लेन-देन के संदर्भ और edgemicro कॉन्फ़िगरेशन में सेट किए गए लॉगिंग लेवल पर निर्भर करती है. लॉगिंग लेवल सेट करने का तरीका देखें. आंकड़ों के रिकॉर्ड के लिए, लेवल को stats पर सेट किया गया है. आंकड़ों के रिकॉर्ड, stats_log_interval कॉन्फ़िगरेशन के साथ सेट किए गए नियमित अंतराल पर रिपोर्ट किए जाते हैं. लॉग इंटरवल बदलने का तरीका भी देखें.
  • req - इससे इवेंट की पहचान की जाती है. इस मामले में, क्लाइंट से अनुरोध करें.
  • m - अनुरोध में इस्तेमाल की गई एचटीटीपी वर्ब.
  • u - यूआरएल का वह हिस्सा जो बेसपाथ के बाद आता है.
  • h - वह होस्ट और पोर्ट नंबर जहां Edge Microgateway सुन रहा है.
  • r - वह रिमोट होस्ट और पोर्ट जहां से क्लाइंट का अनुरोध आया है.
  • i - अनुरोध का आईडी. इवेंट की चारों एंट्री के लिए, यह आईडी शेयर किया जाएगा. हर अनुरोध को एक यूनीक अनुरोध आईडी असाइन किया जाता है. अनुरोध आईडी के हिसाब से लॉग रिकॉर्ड को कोरिलेट करने से, टारगेट की इंतज़ार अवधि के बारे में अहम जानकारी मिल सकती है.
  • d - Edge Microgateway को अनुरोध मिलने के बाद से, मिलीसेकंड में लगने वाला समय. ऊपर दिए गए उदाहरण में, अनुरोध 0 के लिए टारगेट का जवाब सात मिलीसेकंड (लाइन 3) के बाद मिला. साथ ही, क्लाइंट को जवाब चार मिलीसेकंड (लाइन 4) के बाद भेजा गया. दूसरे शब्दों में, अनुरोध के इंतज़ार का कुल समय 11 मिलीसेकंड था. इसमें से, सात मिलीसेकंड टारगेट ने लिए और चार मिलीसेकंड Edge Microgateway ने लिए.

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

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

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

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

1436403888651 - Unix डेट स्टैंप

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

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

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

1436403888651 - Unix डेट स्टैंप

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

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

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

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

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

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

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

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

edge_config एट्रिब्यूट

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

  • bootstrap: (डिफ़ॉल्ट: none) यह यूआरएल, Apigee Edge पर चल रही Edge Microgateway की सेवा पर ले जाता है. Edge Microgateway, Apigee Edge के साथ कम्यूनिकेट करने के लिए इस सेवा का इस्तेमाल करता है. सार्वजनिक/निजी पासकोड का जोड़ा जनरेट करने के लिए, यह निर्देश देने पर यह यूआरएल दिखता है: edgemicro genkeys. ज़्यादा जानकारी के लिए, Edge Microgateway को सेट अप और कॉन्फ़िगर करना लेख पढ़ें.
  • jwt_public_key: (डिफ़ॉल्ट: कोई नहीं) Apigee Edge पर डिप्लॉय किए गए Edge Microgateway प्रॉक्सी पर ले जाने वाला यूआरएल. यह प्रॉक्सी, क्लाइंट को साइन किए गए ऐक्सेस टोकन जारी करने के लिए, पुष्टि करने वाले एंडपॉइंट के तौर पर काम करती है. प्रॉक्सी को डिप्लॉय करने के लिए, edgemicro configure कमांड को चलाने पर यह यूआरएल दिखता है. ज़्यादा जानकारी के लिए, Edge Microgateway को सेट अप और कॉन्फ़िगर करना लेख पढ़ें.
  • 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 को एक साथ मिलने वाले अनुरोधों की ज़्यादा से ज़्यादा संख्या. इस सेटिंग का मकसद, डिनायल ऑफ़ सर्विस अटैक को रोकना है. आम तौर पर, इसे max_connections से ज़्यादा संख्या पर सेट करें.
  • लॉगिंग:
    • level: (डिफ़ॉल्ट: गड़बड़ी)
      • info - (सुझाया गया) Edge Microgateway इंस्टेंस से भेजे गए सभी अनुरोधों और जवाबों को लॉग करता है.
      • warn - सिर्फ़ चेतावनी वाले मैसेज लॉग करता है.
      • error - सिर्फ़ गड़बड़ी के मैसेज लॉग करता है.
      • debug - यह जानकारी, चेतावनी, और गड़बड़ी के मैसेज के साथ-साथ डीबग मैसेज को लॉग करता है.
      • trace - यह गड़बड़ियों के लिए ट्रेस की जानकारी को लॉग करता है. साथ ही, जानकारी, चेतावनी, और गड़बड़ी के मैसेज भी लॉग करता है.
      • none - लॉग फ़ाइल न बनाएं.
    • dir: (डिफ़ॉल्ट: /var/tmp) वह डायरेक्ट्री जहां लॉग फ़ाइलें सेव की जाती हैं.
    • stats_log_interval: (डिफ़ॉल्ट: 60) सेकंड में वह इंटरवल जब आंकड़ों का रिकॉर्ड, एपीआई लॉग फ़ाइल में लिखा जाता है.
    • rotate_interval: (डिफ़ॉल्ट: 24) लॉग फ़ाइलों को रोटेट करने का इंटरवल, घंटों में.
  • प्लगिन: प्लगिन, Edge Microgateway में सुविधाएं जोड़ते हैं. प्लग इन डेवलप करने के बारे में ज़्यादा जानने के लिए, कस्टम प्लग इन डेवलप करना लेख पढ़ें.
  • 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: (डिफ़ॉल्ट: false) अपने-आप होने वाले बदलावों की पोलिंग को बंद करने के लिए, इसे true पर सेट करें.
  • request_timeout: इससे टारगेट अनुरोधों के लिए टाइम आउट सेट किया जाता है. टाइम आउट को सेकंड में सेट किया जाता है. अगर टाइम आउट होता है, तो Edge Microgateway, 504 स्टेटस कोड के साथ जवाब देता है. (v2.4.x में जोड़ा गया)
  • keep_alive_timeout: इस प्रॉपर्टी की मदद से, Edge Microgateway के टाइम आउट को मिलीसेकंड में सेट किया जा सकता है. (डिफ़ॉल्ट: 5 सेकंड) (v3.0.6 में जोड़ा गया)
  • headers_timeout: इस एट्रिब्यूट से, एचटीटीपी पार्सर के लिए मिलीसेकंड में समयसीमा तय की जाती है. इस समयसीमा के अंदर, एचटीटीपी पार्सर को पूरे एचटीटीपी हेडर मिल जाने चाहिए.

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

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

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

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

headers एट्रिब्यूट

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

  • x-forwarded-for: (डिफ़ॉल्ट: true) x-forwarded-for हेडर को टारगेट पर पास होने से रोकने के लिए, इसे false पर सेट करें. ध्यान दें कि अगर अनुरोध में x-forwarded-for हेडर मौजूद है, तो Edge Analytics में इसकी वैल्यू को client-ip वैल्यू पर सेट कर दिया जाएगा.
  • 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) टारगेट को हेडर पास होने से रोकने के लिए, इसे false पर सेट करें.

oauth एट्रिब्यूट

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

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

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

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

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

यह फ़िल्टर किया जा सकता है कि Edge Microgateway इंस्टेंस, माइक्रोगेटवे की जानकारी रखने वाली किन प्रॉक्सी को प्रोसेस करेगा. Edge Microgateway के चालू होने पर, यह उस संगठन के सभी microgateway-aware प्रॉक्सी को डाउनलोड करता है जिससे यह जुड़ा है. माइक्रोगेटवे जिन प्रॉक्सी को प्रोसेस करेगा उन्हें सीमित करने के लिए, इस कॉन्फ़िगरेशन का इस्तेमाल करें. उदाहरण के लिए, इस कॉन्फ़िगरेशन की वजह से, माइक्रोगेटवे सिर्फ़ तीन प्रॉक्सी को प्रोसेस करेगा: 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. Develop टैब में, एडिटर में JavaCallout नीति खोलें.
  3. products.filter.attributes कुंजी के साथ कस्टम एट्रिब्यूट जोड़ें. इसमें एट्रिब्यूट के नामों की कॉमा लगाकर अलग की गई सूची शामिल होनी चाहिए. Edge Microgateway को सिर्फ़ वे प्रॉडक्ट दिखाए जाएंगे जिनमें कस्टम एट्रिब्यूट के नाम शामिल होंगे.
  4. आपके पास यह जांच करने की सुविधा को बंद करने का विकल्प होता है कि प्रॉडक्ट को मौजूदा एनवायरमेंट के लिए चालू किया गया है या नहीं. इसके लिए, कस्टम एट्रिब्यूट products.filter.env.enable को false पर सेट करें. (डिफ़ॉल्ट रूप से, यह 'सही' पर सेट रहता है.)
  5. (सिर्फ़ Private Cloud के लिए) अगर आप 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 को कितनी बार Analytics डेटा भेजे:

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

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

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

आंकड़ों का डेटा मास्क करना

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

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

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

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 वाले किसी भी एपीआई पाथ को Analytics प्लगिन अलग कर देगा. इसका मतलब है कि /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 वाले किसी भी एपीआई को Analytics डैशबोर्ड में edgemicro_proxyname-health नाम की एक अलग प्रॉक्सी के तौर पर अलग कर दिया जाएगा.

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

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

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

    कहां:

    • tunnel: (ज़रूरी नहीं) अगर इसकी वैल्यू true पर सेट है, तो Edge Microgateway, एचटीटीपी अनुरोधों को एक टीसीपी कनेक्शन पर टनल करने के लिए, एचटीटीपी CONNECT तरीके का इस्तेमाल करता है. (अगर प्रॉक्सी को कॉन्फ़िगर करने के लिए, नीचे बताए गए एनवायरमेंट वैरिएबल टीएलएस की सुविधा के साथ काम करते हैं, तो भी ऐसा ही होगा). डिफ़ॉल्ट: false
    • url: एचटीटीपी प्रॉक्सी यूआरएल.
    • bypass: (ज़रूरी नहीं) कॉमा लगाकर अलग किए गए एक या उससे ज़्यादा टारगेट होस्ट यूआरएल के बारे में बताता है, जिन्हें एचटीटीपी प्रॉक्सी को बायपास करना चाहिए. अगर यह प्रॉपर्टी सेट नहीं है, तो NO_PROXY एनवायरमेंट वैरिएबल का इस्तेमाल करके बताएं कि किन टारगेट यूआरएल को बायपास करना है.
    • enabled: अगर इसकी वैल्यू true है और proxy.url सेट है, तो एचटीटीपी प्रॉक्सी के लिए proxy.url वैल्यू का इस्तेमाल करें. अगर यह वैल्यू true है और 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_* (Microgateway-aware) प्रॉक्सी के बेस पाथ में, एक या उससे ज़्यादा "*" वाइल्डकार्ड इस्तेमाल किए जा सकते हैं. उदाहरण के लिए, /team/*/members का बेस पाथ, क्लाइंट को https://[host]/team/blue/members और https://[host]/team/green/members को कॉल करने की अनुमति देता है. इसके लिए, आपको नई टीमों के लिए नए एपीआई प्रॉक्सी बनाने की ज़रूरत नहीं पड़ती. ध्यान दें कि /**/ का इस्तेमाल नहीं किया जा सकता.

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

JWT कुंजियों को रोटेट करना

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

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

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

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

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

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

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

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

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

केवीएम कुंजियों में ये शामिल हैं:

  • private_key - JWT पर हस्ताक्षर करने के लिए इस्तेमाल किया गया सबसे नया (हाल ही में बनाया गया) आरएसए निजी पासकोड.

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

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

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

  • public_key1 - सबसे नया (हाल ही में बनाया गया) सार्वजनिक पासकोड.

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

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

  • public_key2 - पुराना सार्वजनिक पासकोड.

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

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

इस सेक्शन में, डेटा सुरक्षित करने वाली कुंजी का नया वर्शन बनाने का तरीका बताया गया है.

  1. केवीएम को अपग्रेड करने के लिए, 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 कमांड से जनरेट की गई नई निजी कुंजी तुरंत लागू हो जाती थी. साथ ही, जनरेट किए गए नए टोकन पर नई निजी कुंजी से हस्ताक्षर किए जाते थे. हालांकि, नया सार्वजनिक पासकोड, Edge Microgateway इंस्टेंस के लिए हर 10 मिनट (डिफ़ॉल्ट रूप से) में सिर्फ़ तब उपलब्ध कराया जाता था, जब माइक्रोगेटवे कॉन्फ़िगरेशन को रीफ़्रेश किया जाता था. टोकन साइन करने और माइक्रोगेटवे इंस्टेंस को रीफ़्रेश करने के बीच के इस अंतर की वजह से, नई कुंजी से साइन किए गए टोकन तब तक अस्वीकार कर दिए जाएंगे, जब तक सभी इंस्टेंस को नई सार्वजनिक कुंजी नहीं मिल जाती.

जब कई माइक्रोगेटवे इंस्टेंस मौजूद होते हैं, तब सार्वजनिक पासकोड के लैग की वजह से कभी-कभी रनटाइम से जुड़ी गड़बड़ियां होती हैं. इनका स्टेटस 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 Microgateway को अनुरोध भेजने वाले क्लाइंट की पुष्टि करने का एक आसान तरीका है. एपीआई पासकोड पाने के लिए, Apigee Edge के किसी ऐसे प्रॉडक्ट से उपभोक्ता कुंजी (इसे क्लाइंट आईडी भी कहा जाता है) की वैल्यू कॉपी करें जिसमें Edge Microgateway का ऑथेंटिकेशन प्रॉक्सी शामिल हो.

कुंजियों को कैश मेमोरी में सेव करना

एपीआई पासकोड को धारक टोकन के लिए एक्सचेंज किया जाता है. इन्हें कैश मेमोरी में सेव किया जाता है. Edge Microgateway पर आने वाले अनुरोधों पर 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 देखें.

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

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

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

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

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

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

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

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

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

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

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

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 OAuth के इस्तेमाल की अनुमति का टाइप के साथ यह एपीआई कॉल करना होगा. यहां इस प्रोसेस को पूरा करने का तरीका बताया गया है.

  1. /token एपीआई की मदद से, ऐक्सेस और रीफ़्रेश टोकन पाएं. ध्यान दें कि OAuth के इस्तेमाल की अनुमति का टाइप 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"
        }

हमेशा के लिए मॉनिटर करना

Forever, Node.js का एक टूल है. यह प्रोसेस बंद होने या गड़बड़ी होने पर, Node.js ऐप्लिकेशन को अपने-आप रीस्टार्ट करता है. Edge Microgateway में एक forever.json फ़ाइल होती है. इसे कॉन्फ़िगर करके, यह कंट्रोल किया जा सकता है कि Edge Microgateway को कितनी बार और कितने समय के अंतराल पर रीस्टार्ट किया जाए. यह फ़ाइल, forever-monitor नाम की Forever सेवा को कॉन्फ़िगर करती है. यह सेवा, प्रोग्राम के हिसाब से Forever को मैनेज करती है.

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

edgemicro forever कमांड में ऐसे फ़्लैग शामिल होते हैं जिनकी मदद से, forever.json फ़ाइल (-f फ़्लैग) की जगह की जानकारी दी जा सकती है. साथ ही, Forever मॉनिटरिंग प्रोसेस (-a फ़्लैग) को शुरू/बंद किया जा सकता है. उदाहरण के लिए:

edgemicro forever -f ~/mydir/forever.json -a start

ज़्यादा जानकारी के लिए, सीएलआई रेफ़रंस में Forever monitoring देखें.

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

अगर आपके पास 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 कॉन्फ़िगरेशन एट्रिब्यूट का इस्तेमाल करें.

डिफ़ॉल्ट रूप से, टीसीपी कनेक्शन डेटा भेजने से पहले उसे बफ़र करने के लिए, नेगल एल्गोरिदम का इस्तेमाल करते हैं. 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, "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" गड़बड़ी का मैसेज दिखता है. यह प्लगिन, उस JWT की पुष्टि करता है जो एपीआई कॉल के Authorization हेडर में मौजूद होना चाहिए. अगले सेक्शन में, आपको एक JWT मिलेगा. इसकी मदद से, एपीआई कॉल बिना किसी गड़बड़ी के किए जा सकेंगे.

उदाहरण: अनुमति टोकन पाना

यहां दिए गए उदाहरण में, 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 Microgateway का स्टैंडर्ड सेटअप और कॉन्फ़िगरेशन करना होगा. अगर आपने यह चरण पहले ही पूरा कर लिया है, तो इसे दोहराने की ज़रूरत नहीं है.
  2. अगर आपने Apigee Cloud में Edge Microgateway को डिप्लॉय किया है, तो आपको इंटरनेट से कनेक्ट होना होगा, ताकि आप इस एंडपॉइंट से 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. 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 पर माइक्रोगेटवे-अवेयर प्रॉक्सी डिप्लॉय करने की ज़रूरत नहीं होती. इसके बजाय, माइक्रोगेटवे शुरू करते समय, स्थानीय प्रॉक्सी का नाम, बेसपाथ, और टारगेट यूआरएल देकर, "स्थानीय प्रॉक्सी" को कॉन्फ़िगर किया जाता है. इसके बाद, माइक्रोगेटवे को किए गए एपीआई कॉल, लोकल प्रॉक्सी के टारगेट यूआरएल पर भेजे जाते हैं. अन्य सभी मामलों में, लोकल प्रॉक्सी मोड ठीक उसी तरह काम करता है जिस तरह Edge Microgateway अपने सामान्य मोड में काम करता है. पुष्टि करने की प्रोसेस पहले की तरह ही काम करती है. साथ ही, स्पाइक अरेस्ट, कोटा लागू करने, कस्टम प्लग इन वगैरह की प्रोसेस भी पहले की तरह ही काम करती है.

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

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

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

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

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

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

  1. अपने लोकल कॉन्फ़िगरेशन एनवायरमेंट को सेट अप करने के लिए, edgemicro init चलाएं. यह ठीक उसी तरह से काम करता है जैसे Edge Microgateway के सामान्य सेटअप में होता है. Edge Microgateway को कॉन्फ़िगर करना भी देखें.
  2. edgemicro configure को चलाएं, जैसा कि Edge Microgateway के सामान्य सेटअप में किया जाता है. उदाहरण के लिए:
    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 Microgateway को Apigee Edge से कॉन्फ़िगरेशन डेटा को वापस पाने और उसे लोकल Redis डेटाबेस में लिखने की अनुमति देकर, Edge Microgateway की क्षमता को बेहतर बनाती है. सिंक्रोनाइज़र इंस्टेंस के चलने पर, अलग-अलग नोड पर चल रहे अन्य Edge Microgateway इंस्टेंस, सीधे इस डेटाबेस से अपना कॉन्फ़िगरेशन वापस पा सकते हैं.

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

सिंक्रोनाइज़र क्या है?

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

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

Edge Microgateway synchronizer, 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 डेटाबेस से कॉन्फ़िगरेशन डेटा पाने के लिए कॉन्फ़िगर किया जा सकता है. सभी माइक्रोगेटवे इंस्टेंस, अपने कॉन्फ़िगरेशन डेटा को लोकल डेटाबेस से फ़ेच करते हैं. इसलिए, इंटरनेट कनेक्शन न होने पर भी वे एपीआई अनुरोधों को शुरू और प्रोसेस कर सकते हैं.

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

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

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 Microgateway के अन्य नोड कॉन्फ़िगर किए जा सकते हैं. इससे, एपीआई प्रॉक्सी ट्रैफ़िक को प्रोसेस करने वाले रेगुलर माइक्रोगेटवे इंस्टेंस चलाए जा सकते हैं. हालांकि, इन इंस्टेंस को कॉन्फ़िगर किया जाता है, ताकि इनका कॉन्फ़िगरेशन डेटा, Apigee Edge के बजाय Redis डेटाबेस से मिले.

हर अतिरिक्त Edge Microgateway नोड की org-env/config.yaml फ़ाइल में, यह कॉन्फ़िगरेशन जोड़ें. ध्यान दें कि synchronizerMode प्रॉपर्टी को 0 पर सेट किया गया है. यह प्रॉपर्टी, इंस्टेंस को सामान्य Edge Microgateway इंस्टेंस के तौर पर काम करने के लिए सेट करती है. यह इंस्टेंस, एपीआई प्रॉक्सी ट्रैफ़िक को प्रोसेस करता है. साथ ही, इंस्टेंस को 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 सही या गलत अगर यह वैल्यू true पर सेट है, तो Edge Microgateway इंस्टेंस, Apigee Edge के बजाय Redis डेटाबेस से अपना कॉन्फ़िगरेशन डेटा फ़ेच करता है. Redis डेटाबेस वही होना चाहिए जिसमें डेटा लिखने के लिए, सिंक्रनाइज़र को कॉन्फ़िगर किया गया है. अगर Redis डेटाबेस उपलब्ध नहीं है या डेटाबेस खाली है, तो माइक्रोगेटवे अपने कॉन्फ़िगरेशन के लिए, मौजूदा cache-config.yaml फ़ाइल को खोजता है.

अगर यह वैल्यू false (डिफ़ॉल्ट) है, तो 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>