प्लग इन का इस्तेमाल करना

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

Edge Microgateway का वर्शन 2.5.x

ऑडियंस

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

Edge Microgateway का प्लगिन क्या होता है?

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

Edge Microgateway के साथ बंडल किए गए मौजूदा प्लगिन

Edge Microgateway को इंस्टॉल करने पर, पहले से मौजूद कई प्लगिन उपलब्ध होते हैं. इनमें ये प्लगिन शामिल हैं:

प्लगिन डिफ़ॉल्ट रूप से चालू ब्यौरा
analytics हां Edge Microgateway से Apigee Edge को, Analytics का डेटा भेजता है.
oauth हां Edge Microgateway में, OAuth टोकन और एपीआई पासकोड की पुष्टि करने की सुविधा जोड़ता है. ज़्यादा जानकारी के लिए, Setting up and configuring Edge Microgateway लेख पढ़ें.
quota नहीं Edge Microgateway के लिए किए जाने वाले अनुरोधों पर कोटा लागू करता है. कोटा को सेव और मैनेज करने के लिए, Apigee Edge का इस्तेमाल करता है ज़्यादा जानकारी के लिए, कोटा प्लगिन का इस्तेमाल करना लेख पढ़ें.
spikearrest नहीं यह प्लगिन, ट्रैफ़िक में अचानक होने वाली बढ़ोतरी और DoS हमलों से सुरक्षा करता है. ज़्यादा जानकारी के लिए, स्पाइक अरेस्ट प्लगिन का इस्तेमाल करना लेख पढ़ें.
header-uppercase नहीं यह एक सैंपल प्रॉक्सी है, जिसमें टिप्पणी की गई है. इसे डेवलपर के लिए एक गाइड के तौर पर बनाया गया है, ताकि वे कस्टम प्लगिन लिख सकें. ज़्यादा जानकारी के लिए, Edge Microgateway का सैंपल प्लगिन लेख पढ़ें.
accumulate-request नहीं यह प्लगिन चेन में, डेटा को अगले हैंडलर को पास करने से पहले, अनुरोध के डेटा को एक ऑब्जेक्ट में इकट्ठा करता है. यह प्लगिन, ट्रांसफ़ॉर्म प्लगिन लिखने के लिए काम का है. इन प्लगिन को, इकट्ठा किए गए अनुरोध के कॉन्टेंट के एक ऑब्जेक्ट पर काम करना होता है.
accumulate-response नहीं यह प्लगिन चेन में, डेटा को अगले हैंडलर को पास करने से पहले, जवाब के डेटा को एक ऑब्जेक्ट में इकट्ठा करता है. यह प्लगिन, ट्रांसफ़ॉर्म प्लगिन लिखने के लिए काम का है. इन प्लगिन को, इकट्ठा किए गए जवाब के कॉन्टेंट के एक ऑब्जेक्ट पर काम करना होता है.
transform-uppercase नहीं यह प्लगिन, अनुरोध या जवाब के डेटा को बदलता है. यह प्लगिन, ट्रांसफ़ॉर्म प्लगिन को लागू करने का सबसे सही तरीका दिखाता है. उदाहरण के तौर पर दिया गया प्लगिन, डेटा को सामान्य तरीके से बदलता है जैसे, अनुरोध या जवाब के डेटा को अपरकेस में बदलता है. हालांकि, इसे XML से JSON में बदलने जैसे अन्य तरह के बदलाव करने के लिए भी आसानी से अडैप्ट किया जा सकता है.
json2xml नहीं यह प्लगिन, accept या content-type हेडर के आधार पर, अनुरोध या जवाब के डेटा को बदलता है. ज़्यादा जानकारी के लिए, GitHub में प्लगिन का दस्तावेज़ देखें.
quota-memory नहीं यह प्लगिन, Edge Microgateway के लिए किए जाने वाले अनुरोधों पर कोटा लागू करता है. यह प्लगिन, कोटा को स्थानीय मेमोरी में सेव और मैनेज करता है.
healthcheck नहीं यह प्लगिन, Edge Microgateway की प्रोसेस के बारे में जानकारी देता है. जैसे, मेमोरी का इस्तेमाल, सीपीयू का इस्तेमाल वगैरह. इस प्लगिन का इस्तेमाल करने के लिए, अपने Edge Microgateway इंस्टेंस पर /healthcheck यूआरएल को कॉल करें. यह प्लगिन, एक उदाहरण के तौर पर दिया गया है. इसका इस्तेमाल करके, हेल्थ चेकिंग का अपना प्लगिन लागू किया जा सकता है.

मौजूदा प्लगिन कहां मिलेंगे

Edge Microgateway के साथ बंडल किए गए मौजूदा प्लगिन यहां मौजूद हैं. यहां [prefix], npm प्रीफ़िक्स डायरेक्ट्री है. अगर आपको यह डायरेक्ट्री नहीं मिल रही है, तो Edge Microgateway कहां इंस्टॉल है लेख पढ़ें.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

प्लगिन जोड़ना और कॉन्फ़िगर करना

प्लगिन जोड़ने और कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. Edge Microgateway को बंद करें.
  2. Edge Microgateway की कोई कॉन्फ़िगरेशन फ़ाइल खोलें. ज़्यादा जानकारी के लिए, कॉन्फ़िगरेशन में बदलाव करना विकल्पों के लिए लेख पढ़ें.
  3. कॉन्फ़िगरेशन फ़ाइल के plugins:sequence एलिमेंट में, प्लगिन को इस तरह जोड़ें. प्लगिन, इस सूची में दिखने के क्रम में एक्ज़ीक्यूट किए जाते हैं.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. प्लगिन को कॉन्फ़िगर करें. कुछ प्लगिन में, ऐसे पैरामीटर होते हैं जिन्हें कॉन्फ़िगरेशन फ़ाइल में कॉन्फ़िगर किया जा सकता है. हालांकि, यह ज़रूरी नहीं है. उदाहरण के लिए, स्पाइक अरेस्ट प्लगिन को कॉन्फ़िगर करने के लिए, यह स्टैंज़ा जोड़ा जा सकता है. ज़्यादा जानकारी के लिए, स्पाइक अरेस्ट प्लगिन का इस्तेमाल करना लेख पढ़ें.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. फ़ाइल सेव करें.
  2. आपने जिस कॉन्फ़िगरेशन फ़ाइल में बदलाव किया है उसके आधार पर, Edge Microgateway को रीस्टार्ट करें या फिर से लोड करें.

प्लगिन के लिए अलग से कॉन्फ़िगरेशन

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

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

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

plugins/<plugin_name>/config/default.yaml. उदाहरण के लिए, इस ब्लॉक को plugins/spikearrest/config/default.yaml में रखा जा सकता है. इससे अन्य सभी कॉन्फ़िगरेशन सेटिंग बदल जाएंगी.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

स्पाइक अरेस्ट प्लगिन का इस्तेमाल करना

स्पाइक अरेस्ट प्लगिन, ट्रैफ़िक में अचानक होने वाली बढ़ोतरी से सुरक्षा करता है. यह प्लगिन, Edge Microgateway के किसी इंस्टेंस से प्रोसेस किए जाने वाले अनुरोधों की संख्या को सीमित करता है.

स्पाइक अरेस्ट प्लगिन जोड़ना

ज़्यादा जानकारी के लिए, प्लगिन जोड़ना और कॉन्फ़िगर करना लेख पढ़ें.

स्पाइक अरेस्ट के लिए सैंपल कॉन्फ़िगरेशन

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

स्पाइक अरेस्ट के लिए कॉन्फ़िगरेशन के विकल्प

  • timeUnit: स्पाइक अरेस्ट के एक्ज़ीक्यूशन की विंडो कितनी बार रीसेट होती है. इसके लिए, मान्य वैल्यू सेकंड या मिनट हैं.
  • allow: timeUnit के दौरान, ज़्यादा से ज़्यादा कितने अनुरोधों की अनुमति दी जा सकती है. ज़्यादा जानकारी के लिए, अगर Edge Micro की एक से ज़्यादा प्रोसेस चल रही हैं लेख पढ़ें.
  • bufferSize: (ज़रूरी नहीं, डिफ़ॉल्ट = 0) अगर bufferSize > 0 है, तो स्पाइक अरेस्ट इस संख्या के बराबर अनुरोधों को बफ़र में सेव करता है. अगली बार एक्ज़ीक्यूशन "विंडो" खुलने पर, the बफ़र किए गए अनुरोधों को सबसे पहले प्रोसेस किया जाएगा. ज़्यादा जानकारी के लिए, बफ़र जोड़ना लेख पढ़ें.

स्पाइक अरेस्ट कैसे काम करता है?

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

रनटाइम में स्पाइक अरेस्ट का व्यवहार, आपकी उम्मीद के मुताबिक नहीं होता. ऐसा इसलिए, क्योंकि यह प्लगिन, हर मिनट या हर सेकंड के हिसाब से तय की गई वैल्यू के हिसाब से काम नहीं करता.

उदाहरण के लिए, मान लें कि आपने हर मिनट में 30 अनुरोधों की दर तय की है. जैसे:

spikearrest:
   timeUnit: minute
   allow: 30

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

ऐसे में, असल में क्या होता है? स्पाइक जैसी स्थिति से बचने के लिए, स्पाइक अरेस्ट, अनुमति वाले ट्रैफ़िक को छोटे-छोटे इंटरवल में बांटकर, उसे सामान्य बनाए रखता है. जैसे:

हर मिनट के हिसाब से दरें

हर मिनट के हिसाब से तय की गई दरों को, सेकंड के इंटरवल में अनुमति वाले अनुरोधों में बांटा जाता है. उदाहरण के लिए, हर मिनट में 30 अनुरोधों को इस तरह बांटा जाता है:

60 सेकंड (1 मिनट) / 30 = 2 सेकंड के इंटरवल या हर 2 सेकंड में करीब एक अनुरोध की अनुमति. दो सेकंड के अंदर दूसरा अनुरोध भेजने पर, गड़बड़ी दिखेगी. इसके अलावा, एक मिनट के अंदर 31वां अनुरोध भेजने पर भी गड़बड़ी दिखेगी.

हर सेकंड के हिसाब से दरें

हर सेकंड के हिसाब से तय की गई दरों को, मिलीसेकंड के इंटरवल में अनुमति वाले अनुरोधों में बांटा जाता है. उदाहरण के लिए, 10 अनुरोध/सेकंड को इस तरह बांटा जाता है:

1000 मिलीसेकंड (1 सेकंड) / 10 = 100 मिलीसेकंड के इंटरवल या हर 100 मिलीसेकंड में करीब एक अनुरोध की अनुमति . 100 मिलीसेकंड के अंदर दूसरा अनुरोध भेजने पर, गड़बड़ी दिखेगी. इसके अलावा, एक सेकंड के अंदर 11वां अनुरोध भेजने पर भी गड़बड़ी दिखेगी.

सीमा से ज़्यादा अनुरोध मिलने पर

अगर तय किए गए समय इंटरवल में, अनुरोधों की संख्या सीमा से ज़्यादा हो जाती है, तो स्पाइक अरेस्ट एचटीटीपी 503 स्टेटस के साथ गड़बड़ी का यह मैसेज दिखाता है:

{"error": "spike arrest policy violated"}

बफ़र जोड़ना

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

अगर Edge Micro की एक से ज़्यादा प्रोसेस चल रही हैं

अनुमति वाले अनुरोधों की संख्या, Edge Micro की काम करने वाली प्रोसेस की संख्या पर निर्भर करती है जो चल रही हैं. स्पाइक अरेस्ट, काम करने वाली हर प्रोसेस के लिए, अनुमति वाले अनुरोधों की संख्या का हिसाब लगाता है. डिफ़ॉल्ट रूप से, Edge Micro की प्रोसेस की संख्या, उस मशीन पर मौजूद सीपीयू की संख्या के बराबर होती है जिस पर Edge Micro इंस्टॉल है. हालांकि, Edge Micro शुरू करते समय, काम करने वाली प्रोसेस की संख्या को कॉन्फ़िगर किया जा सकता है --processes विकल्प का इस्तेमाल करके, start कमांड पर. उदाहरण के लिए, अगर आपको स्पाइक अरेस्ट को किसी तय समय अवधि में 100 अनुरोधों पर ट्रिगर करना है और अगर आपने Edge Microgateway को --processes 4 विकल्प के साथ शुरू किया है, तो स्पाइक अरेस्ट कॉन्फ़िगरेशन में allow: 25 सेट करें. संक्षेप में, "स्पाइक अरेस्ट की तय की गई संख्या / प्रोसेस की संख्या" के बराबर वैल्यू पर, allow कॉन्फ़िगरेशन पैरामीटर सेट करें.

कोटा प्लगिन का इस्तेमाल करना

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

कोटा प्लगिन जोड़ना

ज़्यादा जानकारी के लिए, प्लगिन जोड़ना और कॉन्फ़िगर करना लेख पढ़ें.

Apigee Edge में प्रॉडक्ट का कॉन्फ़िगरेशन

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

  1. Apigee Edge के संगठन खाते में लॉग इन करें.
  2. Edge के यूआई में, उस प्रॉडक्ट को खोलें जो माइक्रो गेटवे के साथ काम करने वाली प्रॉक्सी से जुड़ा है. इस प्रॉक्सी के लिए, कोटा की सीमा तय करनी है.
    1. यूआई में, पब्लिश करें मेन्यू से प्रॉडक्ट को चुनें.
    2. उस प्रॉडक्ट को खोलें जिसमें वह एपीआई शामिल है जिसके लिए, कोटा की सीमा तय करनी है.
    3. बदलाव करें पर क्लिक करें.
    4. कोटा फ़ील्ड में, कोटा इंटरवल तय करें. उदाहरण के लिए, हर एक मिनट में 100 अनुरोध. या हर दो घंटे में 50,000 अनुरोध.

  1. सेव करें पर क्लिक करें.
  2. पक्का करें कि प्रॉडक्ट को किसी डेवलपर ऐप्लिकेशन में जोड़ा गया हो. पुष्टि किए गए एपीआई कॉल करने के लिए, आपको इस ऐप्लिकेशन के पासकोड की ज़रूरत होगी.

कोटा के लिए सैंपल कॉन्फ़िगरेशन

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

कोटा के लिए कॉन्फ़िगरेशन के विकल्प

कोटा प्लगिन के लिए, कॉन्फ़िगरेशन के अन्य विकल्प उपलब्ध नहीं हैं.

कोटा प्लगिन की जांच करना

कोटा की सीमा से ज़्यादा अनुरोध मिलने पर, क्लाइंट को एचटीटीपी 403 स्टेटस के साथ यह मैसेज दिखता है:

{"error": "exceeded quota"}

स्पाइक अरेस्ट और कोटा में क्या अंतर है?

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

कोटा की नीति का इस्तेमाल, डेवलपर और पार्टनर के साथ किए गए कारोबारी समझौतों या एसएलए को लागू करने के लिए करें. इसका इस्तेमाल, ऑपरेशनल ट्रैफ़िक मैनेजमेंट के लिए न करें. उदाहरण के लिए, कोटा का इस्तेमाल, किसी मुफ्त सेवा के लिए ट्रैफ़िक को सीमित करने के लिए किया जा सकता है. वहीं, पैसे चुकाने वाले ग्राहकों को पूरी सेवा का ऐक्सेस दिया जा सकता है.

एपीआई ट्रैफ़िक में अचानक होने वाली बढ़ोतरी से सुरक्षा करने के लिए, स्पाइक अरेस्ट का इस्तेमाल करें. आम तौर पर, स्पाइक अरेस्ट का इस्तेमाल, DDoS या अन्य नुकसान पहुंचाने वाले हमलों से बचने के लिए किया जाता है.