Edge Microgateway-এর অপারেশন ও কনফিগারেশন রেফারেন্স

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

Edge Microgateway v. 3.3.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 কনফিগারেশন রেফারেন্স দেখুন।

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 কনফিগার ও চালু করার জন্য Command-Line Interface (CLI) ব্যবহার করার সময় আপনাকে তাদের ভ্যালু উল্লেখ করতে হবে না।

Edge Microgateway সার্ভারে SSL কনফিগার করা

Apigee Edge Microgateway-তে TLS কনফিগার করা সম্পর্কে জানতে নিম্নলিখিত ভিডিও দেখুন:

ভিডিও বিবরণ
একমুখী নর্থবাউন্ড TLS কনফিগার করা Apigee Edge Microgateway-তে TLS কনফিগার করা সম্পর্কে জানুন। এই ভিডিওতে TLS-এর ওভারভিউ ও এর গুরুত্ব সম্পর্কে বলা হয়েছে, Edge Microgateway-তে TLS সম্পর্কে জানানো হয়েছে এবং কীভাবে উত্তরমুখী একমুখী TLS কনফিগার করতে হয় তা দেখানো হয়েছে।
২-ওয়ে নর্থবাউন্ড TLS কনফিগার করা Apigee Edge Microgateway-তে TLS কনফিগার করা সম্পর্কিত এটি দ্বিতীয় ভিডিও। এই ভিডিওতে কীভাবে নর্থবাউন্ড ২-ওয়ে TLS কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে।
একমুখী ও দ্বিমুখী সাউথবাউন্ড TLS কনফিগার করা Apigee Edge Microgateway-তে TLS কনফিগার করা সংক্রান্ত এই তৃতীয় ভিডিওতে সাউথবাউন্ড ১-ওয়ে ও ২-ওয়ে TLS কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে।

আপনি SSL ব্যবহার করার জন্য Microgateway সার্ভার কনফিগার করতে পারবেন। যেমন, SSL কনফিগার করা থাকলে, আপনি Edge Microgateway-এর মাধ্যমে "https" প্রোটোকল দিয়ে API কল করতে পারবেন, যেমন:

https://localhost:8000/myapi

Microgateway সার্ভারে SSL কনফিগার করতে, এইসব ধাপ অনুসরণ করুন:

  1. openssl ইউটিলিটি বা আপনার পছন্দসই যেকোনও পদ্ধতি ব্যবহার করে SSL সার্টিফিকেট ও কী তৈরি বা সংগ্রহ করুন।
  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 রিস্টার্ট করুন। আপনি কোন কনফিগারেশন ফাইল এডিট করেছেন তার উপর নির্ভর করে কনফিগারেশনে পরিবর্তন করা বিকল্পে উল্লেখ করা ধাপগুলি অনুসরণ করুন: ডিফল্ট ফাইল বা রানটাইম কনফিগারেশন ফাইল।

এখানে কনফিগার করা SSL সহ কনফিগারেশন ফাইলের 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

কাজ করে এমন সব সার্ভার বিকল্পের তালিকা এখানে দেওয়া হল:

Option বিবরণ
key ca.key ফাইলের পাথ (PEM ফর্ম্যাটে)।
cert ca.cert ফাইলের পাথ (PEM ফর্ম্যাটে)।
pfx PFX ফর্ম্যাটে ক্লায়েন্টের প্রাইভেট কী, সার্টিফিকেট ও CA সার্টিফিকেট থাকা pfx ফাইলের পাথ।
passphrase প্রাইভেট কী বা PFX-এর জন্য পাসফ্রেজ সহ স্ট্রিং।
ca PEM ফর্ম্যাটে বিশ্বস্ত সার্টিফিকেটের তালিকা থাকা ফাইলের পাথ।
ciphers ":" দিয়ে আলাদা করা, ব্যবহার করার জন্য সাইফার বর্ণনা করে এমন একটি স্ট্রিং।
rejectUnauthorized True হলে, সাপ্লাই করা CA-এর তালিকার সাথে সার্ভার সার্টিফিকেট যাচাই করা হয়। যাচাইকরণ সফল না হলে, একটি সমস্যা দেখানো হয়।
secureProtocol ব্যবহার করার জন্য SSL পদ্ধতি। যেমন, SSLv3_method, SSL-কে ভার্সন ৩-এ বাধ্য করে।
servername SNI (সার্ভার নেম ইন্ডিকেশন) TLS এক্সটেনশনের জন্য সার্ভারের নাম।
requestCert ২-ওয়ে SSL-এর জন্য true; ১-ওয়ে SSL-এর জন্য false

ক্লায়েন্ট SSL/TLS বিকল্প ব্যবহার করা

টার্গেট এন্ডপয়েন্টে কানেক্ট করার সময় আপনি Edge Microgateway-কে TLS বা SSL ক্লায়েন্ট হিসেবে কনফিগার করতে পারবেন। Microgateway কনফিগারেশন ফাইলে, SSL/TLS বিকল্প সেট করতে targets এলিমেন্ট ব্যবহার করুন। মনে রাখবেন, আপনি একাধিক নির্দিষ্ট টার্গেট উল্লেখ করতে পারবেন। নিচে একাধিক টার্গেট সংক্রান্ত একটি উদাহরণ দেওয়া হল।

এই উদাহরণে এমন সেটিংস দেওয়া হয়েছে যা সব হোস্টের ক্ষেত্রে প্রযোজ্য হবে:

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

এই উদাহরণে, সেটিংস শুধুমাত্র নির্দিষ্ট হোস্টের ক্ষেত্রে প্রযোজ্য হয়:

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

TLS-এর জন্য এখানে একটি উদাহরণ দেওয়া হল:

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

আপনি যদি একাধিক নির্দিষ্ট টার্গেটে TLS/SSL সেটিংস প্রয়োগ করতে চান, তাহলে আপনাকে অবশ্যই কনফিগারেশনে প্রথম হোস্টকে "খালি" হিসেবে উল্লেখ করতে হবে। এটি করলে সর্বজনীন অনুরোধ চালু হয়ে যাবে এবং তারপরে যেকোনও ক্রমে নির্দিষ্ট হোস্টকে উল্লেখ করতে পারবেন। এই উদাহরণে, একাধিক নির্দিষ্ট হোস্টের ক্ষেত্রে সেটিংস প্রয়োগ করা হয়েছে:

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

কাজ করে এমন সব ক্লায়েন্ট বিকল্পের তালিকা এখানে দেওয়া হল:

Option বিবরণ
pfx PFX ফর্ম্যাটে ক্লায়েন্টের প্রাইভেট কী, সার্টিফিকেট ও CA সার্টিফিকেট থাকা pfx ফাইলের পাথ।
key ca.key ফাইলের পাথ (PEM ফর্ম্যাটে)।
passphrase প্রাইভেট কী বা PFX-এর জন্য পাসফ্রেজ সহ স্ট্রিং।
cert ca.cert ফাইলের পাথ (PEM ফর্ম্যাটে)।
ca PEM ফর্ম্যাটে বিশ্বস্ত সার্টিফিকেটের তালিকা থাকা ফাইলের পাথ।
ciphers ":" দিয়ে আলাদা করা, ব্যবহার করার জন্য সাইফার বর্ণনা করে এমন একটি স্ট্রিং।
rejectUnauthorized True হলে, সাপ্লাই করা CA-এর তালিকার সাথে সার্ভার সার্টিফিকেট যাচাই করা হয়। যাচাইকরণ সফল না হলে, একটি সমস্যা দেখানো হয়।
secureProtocol ব্যবহার করার জন্য SSL পদ্ধতি। যেমন, SSLv3_method, SSL-কে ভার্সন ৩-এ বাধ্য করে।
servername SNI (সার্ভার নেম ইন্ডিকেশন) TLS এক্সটেনশনের জন্য সার্ভারের নাম।

edgemicro-auth প্রক্সি কাস্টমাইজ করা

ডিফল্ট হিসেবে, Edge Microgateway, OAuth2 যাচাইকরণের জন্য Apigee Edge-এ ডেপ্লয় করা প্রক্সি ব্যবহার করে। আপনি প্রথমবার edgemicro configure রান করানোর সময় এই প্রক্সি ডেপ্লয় করা হয়। আপনি JSON Web Token (JWT)-এ কাস্টম দাবি যোগ করার জন্য এই প্রক্সির ডিফল্ট কনফিগারেশন পরিবর্তন করতে পারেন , টোকেনের মেয়াদ শেষ হওয়ার সময় কনফিগার করতে এবং রিফ্রেশ টোকেন তৈরি করতে পারেন। বিস্তারিত জানতে, GitHub-এ edgemicro-auth পৃষ্ঠা দেখুন।

কাস্টম অথেন্টিকেশন পরিষেবা ব্যবহার করা

ডিফল্ট হিসেবে, Edge Microgateway, OAuth2 যাচাইকরণের জন্য Apigee Edge-এ ডেপ্লয় করা প্রক্সি ব্যবহার করে। আপনি প্রথমবার edgemicro configure রান করানোর সময় এই প্রক্সি ডেপ্লয় করা হয়। ডিফল্ট হিসেবে, এই প্রক্সির URL Edge Microgateway কনফিগারেশন ফাইলে নিম্নলিখিতভাবে উল্লেখ করা হয়:

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

যাচাইকরণ ম্যানেজ করার জন্য আপনি নিজের কাস্টম পরিষেবা ব্যবহার করতে চাইলে, আপনার পরিষেবার দিকে পয়েন্ট করার জন্য কনফিগারেশন ফাইলে authUri ভ্যালু পরিবর্তন করুন। যেমন, আপনার এমন কোনও পরিষেবা থাকতে পারে যা পরিচয় যাচাই করার জন্য LDAP ব্যবহার করে।

লগ ফাইল ম্যানেজ করা

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: (default: 60) Interval, in seconds, when the stats record is written to the API log file.
  • rotate_interval: (default: 24) Interval, in hours, when log files are rotated. যেমন:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

লগ ফাইলের কঠোর অনুমতি কীভাবে শিথিল করতে হয়

ডিফল্ট হিসেবে, Edge Microgateway, ফাইল পারমিশন লেভেল 0600 হিসেবে সেট করা অ্যাপ্লিকেশন লগ ফাইল (api-log.log) তৈরি করে। এই অনুমতি লেভেল এক্সটার্নাল অ্যাপ্লিকেশন বা ব্যবহারকারীদের লগ ফাইল পড়তে দেয় না। এই কঠোর অনুমতি লেভেল শিথিল করতে, logging:disableStrictLogFile -কে true হিসেবে সেট করুন। এই অ্যাট্রিবিউট true হলে, লগ ফাইলটি ০৭৫৫-এ সেট করা ফাইল অনুমতি সহ তৈরি করা হয়। false অথবা অ্যাট্রিবিউট প্রদান করা না হলে, অনুমতি ডিফল্ট হিসেবে ০৬০০ হয়।

v3.2.3-এ যোগ করা হয়েছে।

যেমন:

edgemicro:
 logging:
   disableStrictLogFile: true

লগ ফাইল রক্ষণাবেক্ষণ সংক্রান্ত পেশাদার পদ্ধতি

সময়ের সাথে সাথে লগ ফাইল ডেটা জমা হতে থাকে, তাই Apigee সাজেস্ট করে যে আপনি নিম্নলিখিত প্র্যাক্টিস গ্রহণ করুন:

  • লগ ফাইল অনেক বড় হতে পারে, তাই লগ ফাইল ডিরেক্টরিতে যথেষ্ট জায়গা আছে কিনা তা নিশ্চিত করুন। নিম্নলিখিত বিভাগগুলি দেখুন লগ ফাইল কোথায় স্টোর করা হয় এবং ডিফল্ট লগ ফাইল ডিরেক্টরি কীভাবে পরিবর্তন করতে হয়।
  • অন্তত সপ্তাহে একবার লগ ফাইল মুছে দিন বা আলাদা আর্কাইভ ডিরেক্টরিতে সরিয়ে দিন।
  • আপনার নীতি অনুযায়ী লগ মুছে দিতে চাইলে, পুরনো লগ সরিয়ে (পরিষ্কার করতে) আপনি CLI কমান্ড 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" লগ ফাইলে চারটি ইভেন্ট ক্যাপচার করা হয়:

  • ক্লায়েন্টের থেকে পাওয়া অনুরোধ
  • টার্গেটে করা আউটগোয়িং অনুরোধ
  • টার্গেট থেকে পাওয়া ইনকামিং উত্তর
  • ক্লায়েন্টকে পাঠানো উত্তর

এইসব আলাদা আলাদা এন্ট্রিকে সংক্ষিপ্ত আকারে দেখানো হয় যাতে লগ ফাইল আরও কমপ্যাক্ট হয়। এখানে চারটি ইভেন্টের প্রতিটি প্রতিনিধিত্বকারী চারটি নমুনা এন্ট্রি দেওয়া হল। log ফাইলে, সেগুলি এইরকম দেখতে লাগে (লাইন নম্বরগুলি শুধুমাত্র ডকুমেন্টে রেফারেন্সের জন্য, সেগুলি লগ ফাইলে দেখা যায় না)।

(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

আসুন, এক এক করে সেগুলি দেখে নেওয়া যাক:

১. ক্লায়েন্টের থেকে পাওয়া অনুরোধের নমুনা:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 - Unix তারিখ স্ট্যাম্প
  • তথ্য - লগিং লেভেল। এই ভ্যালু ট্রানজ্যাকশনের কনটেক্সট এবং edgemicro কনফিগারেশনে সেট করা লগিং লেভেলের উপর নির্ভর করে। লগিং লেভেল কীভাবে সেট করতে হয় তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, লেভেল stats হিসেবে সেট করা হয়। stats_log_interval কনফিগারেশনের মাধ্যমে সেট করা নিয়মিত বিরতিতে পরিসংখ্যান রেকর্ড করা হয়। এছাড়াও, লগ ইন্টারভ্যাল কীভাবে পরিবর্তন করতে হয় তা দেখুন।
  • req - ইভেন্ট শনাক্ত করে। এই ক্ষেত্রে, ক্লায়েন্টের অনুরোধ।
  • m - অনুরোধে ব্যবহৃত HTTP ক্রিয়া।
  • u - বেসপাথের পরে URL-এর অংশ।
  • h - Edge Microgateway যে হোস্ট ও পোর্ট নম্বরে শুনছে।
  • r - ক্লায়েন্টের অনুরোধ যে রিমোট হোস্ট ও পোর্ট থেকে এসেছে।
  • i - অনুরোধের আইডি। এই আইডিটি চারটি ইভেন্ট এন্ট্রি শেয়ার করবে। প্রতিটি অনুরোধকে একটি অনন্য অনুরোধ আইডি অ্যাসাইন করা হয়। অনুরোধ আইডি অনুসারে লগ রেকর্ড কোরিলেট করলে, টার্গেটের লেটেন্সি সম্পর্কে মূল্যবান ইনসাইট পাওয়া যায়।
  • d - Edge Microgateway-এর কাছে অনুরোধ পাওয়ার পর থেকে মিলিসেকেন্ডে সময়সীমা। উপরের উদাহরণে, অনুরোধ ০-এর জন্য টার্গেটের উত্তর ৭ মিলিসেকেন্ড পরে (৩ নম্বর লাইন) পাওয়া গেছে এবং আরও ৪ মিলিসেকেন্ড পরে (৪ নম্বর লাইন) উত্তরটি ক্লায়েন্টকে পাঠানো হয়েছে। অন্যভাবে বলতে গেলে, মোট অনুরোধ লেটেন্সি ছিল ১১ মিলিসেকেন্ড, যার মধ্যে টার্গেট ৭ মিলিসেকেন্ড এবং Edge Microgateway নিজে ৪ মিলিসেকেন্ড সময় নিয়েছে।

২. টার্গেটে পাঠানো অনুরোধের নমুনা:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - Unix তারিখ স্ট্যাম্প
  • তথ্য - লগিং লেভেল। এই ভ্যালু ট্রানজ্যাকশনের কনটেক্সট এবং edgemicro কনফিগারেশনে সেট করা লগিং লেভেলের উপর নির্ভর করে। লগিং লেভেল কীভাবে সেট করতে হয় তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, লেভেল stats হিসেবে সেট করা হয়। stats_log_interval কনফিগারেশনের মাধ্যমে সেট করা নিয়মিত বিরতিতে পরিসংখ্যান রেকর্ড করা হয়। এছাড়াও, লগ ইন্টারভ্যাল কীভাবে পরিবর্তন করতে হয় তা দেখুন।
  • treq - ইভেন্ট শনাক্ত করে। এই ক্ষেত্রে, টার্গেট করা অনুরোধ।
  • m - টার্গেট অনুরোধে ব্যবহৃত HTTP ক্রিয়া।
  • u - বেসপাথের পরে URL-এর অংশ।
  • h - ব্যাকএন্ড টার্গেটের হোস্ট ও পোর্ট নম্বর।
  • i - লগ এন্ট্রির আইডি। এই চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।

৩. টার্গেট থেকে পাওয়া ইনকামিং উত্তরের নমুনা

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

1436403888651 - Unix তারিখ স্ট্যাম্প

  • তথ্য - লগিং লেভেল। এই ভ্যালু ট্রানজ্যাকশনের কনটেক্সট এবং edgemicro কনফিগারেশনে সেট করা লগিং লেভেলের উপর নির্ভর করে। লগিং লেভেল কীভাবে সেট করতে হয় তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, লেভেল stats হিসেবে সেট করা হয়। stats_log_interval কনফিগারেশনের মাধ্যমে সেট করা নিয়মিত বিরতিতে পরিসংখ্যান রেকর্ড করা হয়। এছাড়াও, লগ ইন্টারভ্যাল কীভাবে পরিবর্তন করতে হয় তা দেখুন।
  • tres - ইভেন্ট শনাক্ত করে। এই ক্ষেত্রে, টার্গেট উত্তর।
  • s - HTTP রেসপন্স স্ট্যাটাস।
  • d - মিলিসেকেন্ডে সময়সীমা। টার্গেট API কল করতে যত সময় লেগেছে।
  • i - লগ এন্ট্রির আইডি। এই চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।

৪. ক্লায়েন্টকে পাঠানো উত্তরের নমুনা

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

1436403888651 - Unix তারিখ স্ট্যাম্প

  • তথ্য - লগিং লেভেল। এই ভ্যালু ট্রানজ্যাকশনের কনটেক্সট এবং edgemicro কনফিগারেশনে সেট করা লগিং লেভেলের উপর নির্ভর করে। লগিং লেভেল কীভাবে সেট করতে হয় তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, লেভেল stats হিসেবে সেট করা হয়। stats_log_interval কনফিগারেশনের মাধ্যমে সেট করা নিয়মিত বিরতিতে পরিসংখ্যান রেকর্ড করা হয়। এছাড়াও, লগ ইন্টারভ্যাল কীভাবে পরিবর্তন করতে হয় তা দেখুন।
  • res - ইভেন্ট শনাক্ত করে। এই ক্ষেত্রে, ক্লায়েন্টকে উত্তর দাও।
  • s - HTTP রেসপন্স স্ট্যাটাস।
  • d - মিলিসেকেন্ডে সময়সীমা। এটি হল API কলের মাধ্যমে নেওয়া মোট সময় যার মধ্যে টার্গেট API-এর নেওয়া সময় এবং Edge Microgateway-এর নেওয়া সময় অন্তর্ভুক্ত।
  • i - লগ এন্ট্রির আইডি। এই চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।

লগ ফাইল শিডিউল

rotate_interval কনফিগারেশন অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা ইন্টারভ্যালে লগ ফাইলগুলি রোটেট করা হয়। রোটেট করার ইন্টারভ্যালের মেয়াদ শেষ না হওয়া পর্যন্ত একই লগ ফাইলে এন্ট্রি যোগ করা হতে থাকবে। তবে, Edge Microgateway যতবার রিস্টার্ট করা হয়, ততবার এটি একটি নতুন UID পায় এবং এই UID সহ লগ ফাইলের একটি নতুন সেট তৈরি করে। এছাড়াও দেখুন লগ ফাইল রক্ষণাবেক্ষণের ভালো প্র্যাকটিস।

সমস্যার মেসেজ

কিছু লগ এন্ট্রি সমস্যার মেসেজ দেখাবে। কোথায় এবং কেন সমস্যা হচ্ছে তা শনাক্ত করতে সাহায্য পেতে, Edge Microgateway সংক্রান্ত সমস্যা রেফারেন্স দেখুন।

Edge Microgateway কনফিগারেশন রেফারেন্স

কনফিগারেশন ফাইলের লোকেশন

এই বিভাগে বর্ণিত কনফিগারেশন অ্যাট্রিবিউটগুলি Edge Microgateway কনফিগারেশন ফাইলে থাকে। এছাড়াও কনফিগারেশনে পরিবর্তন করা দেখুন।

edge_config অ্যাট্রিবিউট

Edge Microgateway ইনস্ট্যান্স এবং Apigee Edge-এর মধ্যে ইন্টার‍্যাকশন কনফিগার করতে এইসব সেটিংস ব্যবহার করা হয়।

  • bootstrap: (default: none) A URL that points to an Edge Microgateway-specific service running on Apigee Edge. Edge Microgateway এই পরিষেবা ব্যবহার করে Apigee Edge-এর সাথে যোগাযোগ করে। আপনি পাবলিক/প্রাইভেট কী পেয়ার জেনারেট করার কমান্ড এক্সিকিউট করলে এই URL রিটার্ন করা হয়: edgemicro genkeys. আরও বিবরণের জন্য Edge Microgateway সেট-আপ ও কনফিগার করা দেখুন।
  • jwt_public_key: (default: none) A URL that points to the Edge Microgateway proxy that is deployed on Apigee Edge. এই প্রক্সি ক্লায়েন্টদের সাইন করা অ্যাক্সেস টোকেন ইস্যু করার জন্য প্রমাণীকরণ এন্ডপয়েন্ট হিসেবে কাজ করে। প্রক্সি ডেপ্লয় করার জন্য কমান্ড এক্সিকিউট করলে এই URL রিটার্ন করা হয়: edgemicro configure. আরও বিবরণের জন্য Edge Microgateway সেট-আপ ও কনফিগার করা দেখুন।
  • quotaUri: আপনার প্রতিষ্ঠানে ডেপ্লয় করা edgemicro-auth প্রক্সির মাধ্যমে কোটা ম্যানেজ করতে চাইলে এই কনফিগার প্রপার্টি সেট করুন। এই প্রপার্টি সেট করা না থাকলে, কোটা এন্ডপয়েন্ট ডিফল্ট হিসেবে ইন্টার্নাল Edge Microgateway এন্ডপয়েন্ট হয়ে যায়।
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

edgemicro অ্যাট্রিবিউট

এইসব সেটিংস Edge Microgateway প্রসেস কনফিগার করে।

  • পোর্ট: (ডিফল্ট: 8000) Edge Microgateway প্রসেস যে পোর্ট নম্বরে শোনে।
  • max_connections: (default: -1) Specifies the maximum number of simultaneous incoming connections that Edge Microgateway can receive. এই সংখ্যাটি অতিক্রম করলে, নিম্নলিখিত স্ট্যাটাস রিটার্ন করা হয়:

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (default: -1) The maximum number of simultaneous requests that Edge Microgateway can receive before shutting down the connection. এই সেটিং পরিষেবা-প্রত্যাখ্যানের অ্যাটাক প্রতিহত করার উদ্দেশ্যে করা হয়েছে। সাধারণত, এটিকে max_connections-এর থেকে বড় কোনও সংখ্যায় সেট করুন।
  • লগিং:
    • লেভেল: (ডিফল্ট: সমস্যা)
      • তথ্য - (সাজেস্ট করা) Edge Microgateway ইনস্ট্যান্সের মাধ্যমে প্রবাহিত হওয়া সমস্ত অনুরোধ ও উত্তর লগ করে।
      • warn - শুধুমাত্র সতর্কতামূলক মেসেজ লগ করে।
      • সমস্যা - শুধুমাত্র সমস্যার মেসেজ লগ করে।
      • ডিবাগ - তথ্য, সতর্কতা ও সমস্যার মেসেজের সাথে ডিবাগ মেসেজ লগ করে।
      • trace - তথ্য, সতর্কতা ও সমস্যার মেসেজের সাথে সমস্যার জন্য লগ ট্রেস তথ্য।
      • none - কোনও লগ ফাইল তৈরি করবেন না।
    • dir: (default: /var/tmp) The directory where log files are stored.
    • stats_log_interval: (default: 60) Interval, in seconds, when the stats record is written to the api log file.
    • rotate_interval: (default: 24) লগ ফাইল রোটেট করার সময়, ঘণ্টার হিসেবে ইন্টার্ভাল।
  • dir: ./gateway ডিরেক্টরি থেকে ./plugins ডিরেক্টরি পর্যন্ত রিলেটিভ পাথ অথবা অ্যাবসোলিউট পাথ।
  • ক্রম: আপনার Edge Microgateway ইনস্ট্যান্সে যোগ করার জন্য প্লাগ-ইন মডিউলের তালিকা। মডিউলগুলি এখানে যেভাবে নির্দিষ্ট করা হয়েছে সেই ক্রমে এক্সিকিউট হবে।
  • debug: Edge Microgateway প্রসেসে রিমোট ডিবাগিং যোগ করে।
    • port: যে পোর্ট নম্বরে শোনা হবে। যেমন, এই পোর্টে শোনার জন্য আপনার IDE ডিবাগার সেট করুন।
    • args: ডিবাগ প্রসেসের আর্গুমেন্ট। যেমন: args --nolazy
  • config_change_poll_interval: (default: 600 seconds) Edge Microgateway একটি নতুন কনফিগারেশন নির্দিষ্ট সময় অন্তর লোড করে এবং কিছু পরিবর্তন হলে রিলোড করে। পোলিং Edge-এ করা যেকোনও পরিবর্তন (প্রোডাক্ট, মাইক্রোগেটওয়ে-অ্যাওয়ার প্রক্সি ইত্যাদির পরিবর্তন) এবং লোকাল কনফিগারেশন ফাইলে করা পরিবর্তনগুলিও সংগ্রহ করে।
  • disable_config_poll_interval: (default: false) অটোমেটিক পরিবর্তন পোলিং বন্ধ করতে true হিসেবে সেট করুন।
  • request_timeout: টার্গেট সংক্রান্ত অনুরোধের জন্য টাইমআউট সেট করে। টাইমআউট সেকেন্ডে সেট করা হয়। টাইম-আউট হয়ে গেলে, Edge Microgateway 504 স্ট্যাটাস কোড সহ উত্তর দেয়। (যোগ করা হয়েছে v2.4.x)
  • keep_alive_timeout: এই প্রপার্টি আপনাকে Edge Microgateway টাইম-আউট (মিলিসেকেন্ডে) সেট করতে দেয়। (ডিফল্ট: ৫ সেকেন্ড) (v3.0.6-এ যোগ করা হয়েছে)
  • headers_timeout: এই অ্যাট্রিবিউটটি সেই সময়ের পরিমাণকে (মিলি সেকেন্ডে) সীমিত করে যেখানে HTTP পার্সার সম্পূর্ণ HTTP হেডার পাওয়ার জন্য অপেক্ষা করবে।

    যেমন:

    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: (default: true) Set the attribute to false to prevent the analytics plugin from being loaded. এই ক্ষেত্রে, Apigee Edge অ্যানালিটিক্সে কোনও কল করা হবে না। true হিসেবে সেট করা থাকলে অথবা এই অ্যাট্রিবিউট প্রদান করা না হলে, অ্যানালিটিক্স প্লাগ-ইন স্বাভাবিকভাবে কাজ করবে। বিবরণের জন্য edgemicro অ্যাট্রিবিউট দেখুন। (v3.1.8-এ যোগ করা হয়েছে)।

    উদাহরণ:

    edgemicro
      enableAnalytics=false|true
  • on_target_response_abort: এই অ্যাট্রিবিউট আপনাকে নিয়ন্ত্রণ করতে দেয় যে ক্লায়েন্ট (Edge Microgateway) ও টার্গেট সার্ভারের মধ্যে কানেকশন অসময়ে বন্ধ হয়ে গেলে Edge Microgateway কীভাবে আচরণ করবে।
    ভ্যালু বিবরণ
    ডিফল্ট on_target_response_abort নির্দিষ্ট করা না থাকলে, ডিফল্ট আচরণ হিসেবে কোনও সমস্যা না দেখিয়ে উত্তরটি সংক্ষিপ্ত করা হয়। লগ ফাইলে, targetResponse aborted সহ একটি সতর্কতা মেসেজ এবং একটি ৫০২ রেসপন্স কোড দেখানো হয়।
    appendErrorToClientResponseBody কাস্টম সমস্যা TargetResponseAborted ক্লায়েন্টকে ফেরত পাঠানো হয়। লগ ফাইলে, targetResponse aborted সহ একটি সতর্কতা মেসেজ এবং একটি ৫০২ রেসপন্স কোড দেখানো হয়। এছাড়াও, TargetResponseAborted সমস্যাটি এই মেসেজ সহ লগ করা হয়েছে: Target response ended prematurely.
    abortClientRequest Edge Microgateway অনুরোধটি বাতিল করে দেয় এবং লগ ফাইলে একটি সতর্কতা লেখা হয়: TargetResponseAborted যার অনুরোধ স্ট্যাটাস কোড হল 502.

উদাহরণ:

edgemicro:
 on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest

হেডার অ্যাট্রিবিউট

এইসব সেটিংস নির্দিষ্ট HTTP হেডার কীভাবে ব্যবহার করা হবে তা কনফিগার করে।

  • x-forwarded-for: (default: true) Set to false to prevent x-forwarded-for headers to be passed to the target. মনে রাখবেন, অনুরোধে x-forwarded-for হেডার থাকলে, Edge Analytics-এ এর ভ্যালু client-ip ভ্যালুতে সেট করা হবে।
  • x-forwarded-host: (default: true) Set to false to prevent x-forwarded-host headers to be passed to the target.
  • x-request-id: (default: true) Set to false to prevent x-request-id headers to be passed to the target.
  • x-response-time: (default: true) Set to false to prevent x-response-time headers to be passed to the target.
  • via: (default: true) Set to false to prevent via headers to be passed to the target.

OAuth অ্যাট্রিবিউট

এইসব সেটিংস Edge Microgateway-এর মাধ্যমে ক্লায়েন্ট যাচাইকরণ কীভাবে প্রয়োগ করা হয় তা কনফিগার করে।

  • allowNoAuthorization: (default: false) এটি true হিসেবে সেট করা থাকলে, API কলগুলিকে Edge Microgateway-এর মাধ্যমে কোনও যাচাইকরণ হেডার ছাড়াই পাস করার অনুমতি দেওয়া হয়। অনুমোদন হেডার (ডিফল্ট) প্রয়োজন হলে এটি false হিসেবে সেট করুন।
  • allowInvalidAuthorization: (default: false) If set to true, API calls are allowed to pass if the token passed in the Authorization header is invalid or expired. সঠিক টোকেন (ডিফল্ট) প্রয়োজন হলে এটি false হিসেবে সেট করুন।
  • authorization-header: (default: Authorization: Bearer) The header used to send the access token to Edge Microgateway. আপনি হয়ত ডিফল্ট পরিবর্তন করতে চাইবেন, যদি টার্গেটকে অন্য কোনও উদ্দেশ্যে অনুমোদন হেডার ব্যবহার করতে হয়।
  • api-key-header: (default: x-api-key) The name of the header or query parameter used to pass an API key to Edge Microgateway. এছাড়াও API key ব্যবহার করা দেখুন।
  • keep-authorization-header: (default: false) If set to true, the Authorization header sent in the request is passed on to the target (it is preserved).
  • allowOAuthOnly -- এটি true হিসেবে সেট করা থাকলে, প্রতিটি API-তে অবশ্যই Bearer Access Token সহ একটি Authorization হেডার থাকতে হবে। আপনাকে শুধুমাত্র OAuth সুরক্ষা মডেলের অনুমতি দিতে দেয় (ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রেখে)। (2.4.x ভার্সনে যোগ করা হয়েছে)
  • allowAPIKeyOnly -- true হিসেবে সেট করা থাকলে, প্রতিটি API-তে API কী সহ x-api-key হেডার (বা কাস্টম লোকেশন) থাকতে হবে। এটি আপনাকে শুধুমাত্র API কী নিরাপত্তা মডেলকে অনুমতি দিতে দেয় (ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রেখে)। (Added 2.4.x)
  • gracePeriod -- এই প্যারামিটারটি আপনার সিস্টেম ক্লক এবং JWT অনুমোদনের টোকেনে উল্লেখ করা Not Before (nbf) বা Issued At (iat) সময়ের মধ্যে সামান্য অমিলের কারণে হওয়া সমস্যা প্রতিরোধ করতে সাহায্য করে। এই ধরনের পার্থক্য এড়ানোর জন্য এই প্যারামিটারকে সেকেন্ডের সংখ্যায় সেট করুন। (2.5.7 ভার্সনে যোগ করা হয়েছে)

প্লাগ-ইন নির্দিষ্ট অ্যাট্রিবিউট

প্রতিটি প্লাগ-ইনের কনফিগার করা যায় এমন অ্যাট্রিবিউট সম্পর্কে বিস্তারিত জানতে, 'প্লাগ-ইন ব্যবহার করা' দেখুন।

প্রক্সি ফিল্টার করা

Edge Microgateway ইনস্ট্যান্স কোন কোন মাইক্রোগেটওয়ে-সচেতন প্রক্সি প্রসেস করবে তা আপনি ফিল্টার করতে পারবেন। Edge Microgateway চালু হলে, এটি সেই সংস্থার সাথে যুক্ত সংস্থায় থাকা মাইক্রোগেটওয়ে-সচেতন সব প্রক্সি ডাউনলোড করে। মাইক্রোগেটওয়ে কোন কোন প্রক্সি প্রসেস করবে তা সীমিত করতে নিম্নলিখিত কনফিগারেশন ব্যবহার করুন। যেমন, এই কনফিগারেশন মাইক্রোগেটওয়ে প্রসেস করবে এমন প্রক্সি তিনটিতে সীমাবদ্ধ করে: edgemicro_proxy-1, edgemicro_proxy-2, এবং edgemicro_proxy-3:

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

নামের ভিত্তিতে প্রোডাক্ট ফিল্টার করা

Edge Microgateway ডাউনলোড ও প্রসেস করে এমন API প্রোডাক্টের সংখ্যা সীমিত করতে নিম্নলিখিত কনফিগারেশন ব্যবহার করুন। ডাউনলোড করা প্রোডাক্ট ফিল্টার করতে, Edge Microgateway *.config.yaml ফাইলে তালিকাভুক্ত /products API-তে 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'

মনে রাখবেন, কোয়েরি প্যারামিটারের ভ্যালু অবশ্যই রেগুলার এক্সপ্রেশন ফর্ম্যাটে নির্দিষ্ট করতে হবে এবং URL এনকোড করা থাকতে হবে। যেমন, রেগুলার এক্সপ্রেশন ^[Ee]dgemicro.*$ এই ধরনের নামগুলি ক্যাচ করে: "edgemicro-test-1" , "edgemicro_demo" এবং "Edgemicro_New_Demo"। কোয়েরি প্যারামিটারে ব্যবহারের জন্য উপযুক্ত URL এনকোডেড ভ্যালু হল: %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 UI-তে, আপনি যেখানে Edge Microgateway কনফিগার করেছেন সেইসব সংস্থা/পরিবেশে edgemicro_auth প্রক্সি বেছে নিন।
  2. 'ডেভেলপ' ট্যাবে, এডিটরে JavaCallout নীতি খুলুন।
  3. কমা দিয়ে আলাদা করা অ্যাট্রিবিউটের নামের তালিকা সহ products.filter.attributes কী সহ কাস্টম অ্যাট্রিবিউট যোগ করুন। Edge Microgateway-তে শুধুমাত্র সেইসব প্রোডাক্ট ফেরত পাঠানো হবে যেগুলিতে কাস্টম অ্যাট্রিবিউটের নাম আছে।
  4. বর্তমান এনভায়রনমেন্টে প্রোডাক্ট চালু আছে কিনা তা দেখতে, আপনি ঐচ্ছিকভাবে চেক বন্ধ করতে পারেন। এর জন্য কাস্টম অ্যাট্রিবিউট products.filter.env.enable-এর মান false হিসেবে সেট করুন। (ডিফল্ট হিসেবে true সেট করা থাকে।)
  5. (শুধুমাত্র প্রাইভেট ক্লাউডের জন্য) আপনি প্রাইভেট ক্লাউডের জন্য Edge ব্যবহার করলে, CPS নয় এমন এনভায়রনমেন্টের জন্য প্রোডাক্ট পুল করতে, প্রপার্টি 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>

প্রত্যাহারের স্ট্যাটাস অনুযায়ী প্রোডাক্ট ফিল্টার করা

API প্রোডাক্টের তিনটি স্ট্যাটাস কোড আছে - বাকি আছে, অনুমোদিত এবং প্রত্যাহার করা হয়েছে। edgemicro-auth প্রক্সিতে JWT ভেরিয়েবল নীতি সেট করার জন্য allowProductStatus নামে একটি নতুন প্রপার্টি যোগ করা হয়েছে। JWT-তে তালিকাভুক্ত API প্রোডাক্ট ফিল্টার করতে এই প্রপার্টি ব্যবহার করতে:

  1. Apigee প্রক্সি এডিটরে edgemicro-auth প্রক্সি খুলুন।
  2. SetJWTVariables নীতির XML-এ 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 প্রক্সি আপগ্রেড করতে হবে।

অ্যানালিটিক্স পুশ করার ফ্রিকোয়েন্সি কনফিগার করা

Edge Microgateway, Apigee-তে কত ঘন ঘন অ্যানালিটিক্স ডেটা পাঠাবে তা নিয়ন্ত্রণ করতে এইসব কনফিগারেশন প্যারামিটার ব্যবহার করুন:

  • bufferSize (ঐচ্ছিক): সবচেয়ে পুরনো রেকর্ড বাদ দেওয়া শুরু করার আগে বাফার সর্বাধিক যতগুলি অ্যানালিটিক্স রেকর্ড ধরে রাখতে পারে। ডিফল্ট: ১০০০০
  • batchSize (ঐচ্ছিক): Apigee-তে পাঠানো অ্যানালিটিক্স রেকর্ডের ব্যাচের সর্বাধিক সাইজ। ডিফল্ট: ৫০০
  • flushInterval (ঐচ্ছিক): Apigee-তে পাঠানো অ্যানালিটিক্স রেকর্ডের প্রতিটি ব্যাচ ফ্ল্যাশ করার মধ্যে মিলিসেকেন্ডের সংখ্যা। ডিফল্ট: ৫০০০

যেমন:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

অ্যানালিটিক্স ডেটা মাস্ক করা

নিম্নলিখিত কনফিগারেশন Edge Analytics-এ অনুরোধ পাথ সংক্রান্ত তথ্য দেখাতে বাধা দেয়। অনুরোধ URI এবং/অথবা অনুরোধ পাথ মাস্ক করতে, মাইক্রোগেটওয়ে কনফিগারেশনে নিম্নলিখিতগুলি যোগ করুন। মনে রাখবেন, URI-তে অনুরোধের হোস্টনেম ও পাথ অংশ থাকে।

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

Edge Analytics-এ API কল আলাদা করা

আপনি কোনও নির্দিষ্ট API পাথ আলাদা করার জন্য অ্যানালিটিক্স প্লাগ-ইন কনফিগার করতে পারেন, যাতে এটি Edge Analytics ড্যাশবোর্ডে আলাদা প্রক্সি হিসেবে দেখা যায়। যেমন, আপনি ড্যাশবোর্ডে হেলথ চেক API আলাদা করতে পারেন যাতে এটি আসল API প্রক্সি কলের সাথে গুলিয়ে না যায়। Analytics ড্যাশবোর্ডে, আলাদা করা প্রক্সি এই নামের প্যাটার্ন অনুসরণ করে:

edgemicro_proxyname-health

নিচের ছবিতে Analytics ড্যাশবোর্ডে দুটি আলাদা করা প্রক্সি দেখানো হয়েছে: edgemicro_hello-health এবং edgemicro_mock-health:

Analytics ড্যাশবোর্ডে আলাদা আলাদা প্রক্সি হিসেবে আপেক্ষিক ও পরম পাথ আলাদা করতে, এইসব প্যারামিটার ব্যবহার করুন:

  • relativePath (ঐচ্ছিক): Analytics ড্যাশবোর্ডে আলাদা করার জন্য একটি আপেক্ষিক পাথ নির্দিষ্ট করে। যেমন, আপনি যদি /healthcheck নির্দিষ্ট করেন, তাহলে পাথ /healthcheck থাকা সমস্ত API কল ড্যাশবোর্ডে edgemicro_proxyname-health হিসেবে দেখানো হবে। মনে রাখবেন, এই ফ্ল্যাগটি প্রক্সি বেসপাথ উপেক্ষা করে। বেসপাথ সহ সম্পূর্ণ পাথের উপর ভিত্তি করে আলাদা করতে, proxyPath ফ্ল্যাগ ব্যবহার করুন।
  • proxyPath (ঐচ্ছিক): অ্যানালিটিক্স ড্যাশবোর্ডে আলাদা আলাদা করে দেখানোর জন্য, প্রক্সি বেসপাথ সহ সম্পূর্ণ API প্রক্সি পাথ নির্দিষ্ট করে। যেমন, আপনি যদি /mocktarget/healthcheck, নির্দিষ্ট করেন, যেখানে /mocktarget হল প্রক্সি বেসপাথ, তাহলে /mocktarget/healthcheck পাথ সহ সব API কল ড্যাশবোর্ডে edgemicro_proxyname-health হিসেবে দেখা যাবে।

যেমন, নিম্নলিখিত কনফিগারেশনে, /healthcheck থাকা যেকোনও API পাথকে অ্যানালিটিক্স প্লাগ-ইন আলাদা করবে। এর অর্থ হল, /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 প্রক্সি পাথ সহ যেকোনও API-কে অ্যানালিটিক্স ড্যাশবোর্ডে 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-এর সাথে যোগাযোগের জন্য HTTP প্রক্সি ব্যবহার করা

ভার্সন ৩.১.২-এ যোগ করা হয়েছে।

Edge Microgateway এবং Apigee Edge-এর মধ্যে যোগাযোগের জন্য HTTP প্রক্সি ব্যবহার করতে, নিম্নলিখিত কাজগুলি করুন:

  1. এনভায়রনমেন্ট ভেরিয়েবল সেট করুন HTTP_PROXY, HTTPS_PROXY এবং NO_PROXY. এইসব ভেরিয়েবল প্রতিটি HTTP প্রক্সির হোস্টকে কন্ট্রোল করে যা আপনি 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 রিস্টার্ট করুন।

টার্গেট কমিউনিকেশনের জন্য HTTP প্রক্সি ব্যবহার করা

ভার্সন ৩.১.২-এ যোগ করা হয়েছে।

Edge Microgateway ও ব্যাকএন্ড টার্গেটের মধ্যে যোগাযোগের জন্য HTTP প্রক্সি ব্যবহার করতে, নিচের ধাপগুলি অনুসরণ করুন:

  1. মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নিম্নলিখিত কনফিগারেশন যোগ করুন:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    যেখানে:

    • টানেল: (ঐচ্ছিক) true হলে, Edge Microgateway একটি TCP কানেকশনের মাধ্যমে HTTP অনুরোধ টানেল করতে HTTP CONNECT পদ্ধতি ব্যবহার করে। (প্রক্সি কনফিগার করার জন্য নিচে উল্লেখ করা এনভায়রনমেন্ট ভেরিয়েবল TLS চালু করা থাকলে, একই কথা প্রযোজ্য)। ডিফল্ট: false
    • url: HTTP প্রক্সি URL.
    • বাইপাস: (ঐচ্ছিক) কমা দিয়ে আলাদা করা এক বা একাধিক টার্গেট হোস্ট URL নির্দিষ্ট করে যা HTTP প্রক্সি বাইপাস করবে। এই প্রপার্টি সেট করা না থাকলে, কোন টার্গেট URL বাইপাস করতে হবে তা নির্দিষ্ট করতে NO_PROXY এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন।
    • চালু করা: true হলে এবং proxy.url সেট করা থাকলে, HTTP প্রক্সির জন্য proxy.url ভ্যালু ব্যবহার করুন। proxy.url সেট করা না থাকলে এবং true হলে, HTTP proxy এনভায়রনমেন্ট ভেরিয়েবলে HTTP_PROXY এবং HTTPS_PROXY নির্দিষ্ট করা প্রক্সি ব্যবহার করুন, যেমনটি Apigee Edge-এর সাথে যোগাযোগের জন্য HTTP প্রক্সি ব্যবহার করুন-এ বর্ণনা করা হয়েছে।

    যেমন:

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

  2. Edge Microgateway রিস্টার্ট করুন।

Microgateway-সচেতন প্রক্সিতে ওয়াইল্ডকার্ড ব্যবহার করা

আপনি কোনও edgemicro_* (মাইক্রোগেটওয়ে-সচেতন) প্রক্সির বেস পাথে এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন। যেমন, বেস পাথ /team/*/members ক্লায়েন্টদের https://[host]/team/blue/members এবং https://[host]/team/green/members কল করার অনুমতি দেয়। এর জন্য আপনাকে নতুন টিমকে সহায়তা করতে নতুন API প্রক্সি তৈরি করতে হয় না। মনে রাখবেন, /**/ কাজ করে না।

গুরুত্বপূর্ণ: Apigee-তে বেস পাথ-এর প্রথম এলিমেন্ট হিসেবে ওয়াইল্ডকার্ড "*" ব্যবহার করা যায় না। যেমন, এটি কাজ করে না: /*/ সার্চ করো।

JWT কী রোটেট করা

আপনি JWT তৈরি করার পরে, Edge এনক্রিপ্টেড KVM-এ সেভ করা পাবলিক/প্রাইভেট কী পেয়ার আপনাকে পরিবর্তন করতে হতে পারে। নতুন কী পেয়ার তৈরি করার এই প্রসেসকে কী রোটেশন বলা হয়।

Edge Microgateway কীভাবে JWT ব্যবহার করে

JSON ওয়েব টোকেন (JWT) হল একটি টোকেন স্ট্যান্ডার্ড যা RFC7519-এ বর্ণনা করা হয়েছে। JWT দাবিগুলির একটি সেট সাইন করার একটি উপায় প্রদান করে, যা JWT-এর প্রাপক নির্ভরযোগ্যভাবে যাচাই করতে পারে।

আপনি CLI ব্যবহার করে JWT তৈরি করতে পারেন এবং API কীয়ের পরিবর্তে API কলের Authorization হেডার হিসেবে এটি ব্যবহার করতে পারেন। যেমন:

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

CLI-এর মাধ্যমে JWT তৈরি করা সম্পর্কে তথ্য পেতে, টোকেন তৈরি করুন দেখুন।

কী রোটেশন কী?

আপনি JWT তৈরি করার পরে, Edge এনক্রিপ্টেড KVM-এ সেভ করা পাবলিক/প্রাইভেট কী পেয়ার আপনাকে পরিবর্তন করতে হতে পারে। নতুন কী পেয়ার তৈরি করার এই প্রসেসকে কী রোটেশন বলা হয়। আপনি কী রোটেট করলে, নতুন প্রাইভেট/পাবলিক কী পেয়ার তৈরি হয় এবং আপনার Apigee Edge সংস্থা/এনভায়রনমেন্টে "মাইক্রোগেটওয়ে" KVM-এ স্টোর করা হয়। এছাড়াও, পুরনো পাবলিক কী তার আসল কী আইডি ভ্যালু সহ রেখে দেওয়া হয়।

JWT তৈরি করতে, Edge এনক্রিপ্ট করা KVM-এ সেভ করা তথ্য ব্যবহার করে। A আপনি Edge Microgateway প্রাথমিক সেট-আপ (কনফিগার) করার সময় microgatewayনামের KVM তৈরি করা হয়েছে এবং তাতে কী যোগ করা হয়েছে। KVM-এর কীগুলি JWT সাইন ও এনক্রিপ্ট করতে ব্যবহার করা হয়।

KVM কীগুলির মধ্যে এগুলি অন্তর্ভুক্ত:

  • private_key - JWT-তে সই করার জন্য ব্যবহৃত লেটেস্ট (সবচেয়ে সম্প্রতি তৈরি করা) RSA প্রাইভেট কী ।

  • public_key - JWT যাচাই করার জন্য ব্যবহৃত লেটেস্ট (সবচেয়ে সম্প্রতি তৈরি করা) সার্টিফিকেট যা private_key দিয়ে সাইন করা হয়েছে।

  • private_key_kid - লেটেস্ট (সবচেয়ে সম্প্রতি তৈরি করা) ব্যক্তিগত কী আইডি। এই কী আইডি private_key ভ্যালুর সাথে যুক্ত এবং কী রোটেশনকে সহায়তা করার জন্য ব্যবহার করা হয়।

  • public_key1_kid - লেটেস্ট (সবচেয়ে সম্প্রতি তৈরি করা) সর্বজনীন কী আইডি। এই কীটি public_key1 ভ্যালুর সাথে যুক্ত এবং কী রোটেশনকে সাপোর্ট করার জন্য ব্যবহার করা হয়। এই ভ্যালু প্রাইভেট কী KID-এর মতো।

  • public_key1 - লেটেস্ট (সবচেয়ে সম্প্রতি তৈরি করা) পাবলিক কী।

আপনি কী রোটেশন পারফর্ম করলে, ম্যাপে আগে থেকে থাকা কী ভ্যালুগুলি পরিবর্তন করা হয় এবং পুরনো সর্বজনীন কীগুলি ধরে রাখার জন্য নতুন কী যোগ করা হয়। যেমন:

  • public_key2_kid - পুরনো পাবলিক কী আইডি। এই কীটি public_key2 ভ্যালুর সাথে যুক্ত এবং কী রোটেশনকে সাপোর্ট করার জন্য ব্যবহার করা হয়।

  • public_key2 - পুরনো পাবলিক কী।

যাচাইকরণের জন্য জমা দেওয়া JWT নতুন পাবলিক কী ব্যবহার করে যাচাই করা হবে। যাচাইকরণ ব্যর্থ হলে, JWT-এর মেয়াদ শেষ না হওয়া পর্যন্ত (token_expiry* ইন্টারভ্যালের পরে, ডিফল্ট ৩০ মিনিট) পুরনো পাবলিক কী ব্যবহার করা হবে। এই ভাবে, আপনি API ট্রাফিক অবিলম্বে ব্যাহত না করেই কী "রোটেট" করতে পারবেন।

কীভাবে কী রোটেট করতে হয়

কীভাবে কী রোটেশন করতে হয় তা এই বিভাগে ব্যাখ্যা করা হয়েছে।

  1. KVM আপগ্রেড করতে, edgemicro upgradekvm কমান্ড ব্যবহার করুন। এই কমান্ড চালানোর বিষয়ে আরও জানতে, KVM আপগ্রেড করা দেখুন। আপনাকে এই ধাপটি একবারই করতে হবে।
  2. edgemicro-oauth প্রক্সি আপগ্রেড করতে, edgemicro upgradeauth কমান্ড ব্যবহার করুন। এই কমান্ড চালানোর ব্যাপারে বিস্তারিত জানতে, edgemicro-auth প্রক্সি আপগ্রেড করা দেখুন। আপনাকে এই ধাপটি একবারই করতে হবে।
  3. আপনার ~/.edgemicro/org-env-config.yaml ফাইলে নিম্নলিখিত লাইনটি যোগ করুন, যেখানে আপনাকে অবশ্যই সেই একই সংস্থা ও এনভায়রনমেন্ট নির্দিষ্ট করতে হবে যা আপনি মাইক্রোগেটওয়ে ব্যবহার করার জন্য কনফিগার করেছেন:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. কী রোটেট করতে, 'কী রোটেট' কমান্ড চালান। এই কমান্ডের বিবরণ জানতে, কী রোটেট করা দেখুন।

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

    যেমন:

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

কী রোটেশনের পরে, Edge, Edge Microgateway-কে একাধিক কী রিটার্ন করে। নিচের উদাহরণে লক্ষ্য করুন, প্রতিটি কী-এর একটি অনন্য "kid" (কী আইডি) ভ্যালু আছে। তারপরে, মাইক্রোগেটওয়ে এই কীগুলি ব্যবহার করে অনুমোদন টোকেন যাচাই করে। টোকেন যাচাইকরণ ব্যর্থ হলে, মাইক্রোগেটওয়ে কী সেটে কোনও পুরনো কী আছে কিনা তা দেখে এবং সেই কী ব্যবহার করে। ফেরত আসা কী-এর ফর্ম্যাট হল JSON Web Key (JWK). আপনি RFC 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 ইনস্ট্যান্সের জন্য প্রতি ১০ মিনিট (ডিফল্ট) অন্তর উপলভ্য করা হয়। টোকেন সাইনিং ও মাইক্রোগেটওয়ে ইনস্ট্যান্স রিফ্রেশের মধ্যে এই ল্যাগ থাকার কারণে, সব ইনস্ট্যান্স লেটেস্ট পাবলিক কী না পাওয়া পর্যন্ত লেটেস্ট কী দিয়ে সাইন করা টোকেন বাতিল করা হবে।

একাধিক মাইক্রোগেটওয়ে ইনস্ট্যান্স থাকলে, পাবলিক কী ল্যাগ কখনও কখনও স্ট্যাটাস ৪০৩ সহ মাঝে মাঝে রানটাইম সংক্রান্ত সমস্যার কারণ হয়, কারণ টোকেন যাচাইকরণ একটি ইনস্ট্যান্সে পাস হয়ে যায়, কিন্তু সব ইনস্ট্যান্স রিফ্রেশ না হওয়া পর্যন্ত অন্য ইনস্ট্যান্সে ব্যর্থ হয়।

3.1.6 ভার্সন থেকে শুরু করে, rotatekey কমান্ডে একটি নতুন ফ্ল্যাগ আপনাকে নতুন ব্যক্তিগত কী কার্যকর হওয়ার জন্য বিলম্ব নির্দিষ্ট করতে দেয়, যা সমস্ত মাইক্রোগেটওয়ে ইনস্ট্যান্সকে রিফ্রেশ করার জন্য সময় দেয় এবং নতুন পাবলিক কী গ্রহণ করে। নতুন ফ্ল্যাগ হল --nbf, যার অর্থ হল "এর আগে নয়"। এই ফ্ল্যাগটি একটি পূর্ণসংখ্যা মান নেয়, যা হল বিলম্বের মিনিটের সংখ্যা।

নিচের উদাহরণে, বিলম্ব ১৫ মিনিট হিসেবে সেট করা হয়েছে:

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

মনে রাখবেন, ভাল প্র্যাক্টিস হল config_change_poll_internal কনফিগারেশন সেটিংয়ের চেয়ে বেশি বিলম্ব সেট করা, যা ডিফল্ট হিসেবে ১০ মিনিট থাকে। এছাড়াও 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*

API প্রক্সি ছাড়া প্রোডাক্ট নির্দিষ্ট করা

Apigee Edge-এ, আপনি এমন API প্রোডাক্ট তৈরি করতে পারেন যাতে কোনও API প্রক্সি নেই। এই প্রোডাক্ট কনফিগারেশন, সেই প্রোডাক্টের সাথে যুক্ত API কী-কে আপনার প্রতিষ্ঠানে ডিপ্লয় করা যেকোনও প্রক্সির সাথে কাজ করার অনুমতি দেয়। 2.5.4 ভার্সন অনুযায়ী, Edge Microgateway এই প্রোডাক্ট কনফিগারেশন সমর্থন করে।

ডিবাগিং ও সমস্যার সমাধান করা

ডিবাগার কানেক্ট করা

আপনি node-inspector-এর মতো ডিবাগার দিয়ে Edge Microgateway চালাতে পারবেন। কাস্টম প্লাগ-ইন সংক্রান্ত সমস্যা সমাধান ও ডিবাগ করার জন্য এটি উপযোগী।

  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 অ্যাসিঙ্ক্রোনাস কোড ডিবাগ করতে সাহায্য করে।

লগ ফাইল চেক করা

আপনার কোনও সমস্যা হলে, নিশ্চিত করুন যে আপনি এক্সিকিউশন বিবরণ ও সমস্যার তথ্য সহ লগ ফাইল পরীক্ষা করেছেন। আরও বিবরণের জন্য, লগ ফাইল ম্যানেজ করা দেখুন।

API key-এর নিরাপত্তা ব্যবহার করা

API কী, Edge Microgateway-তে অনুরোধ করা ক্লায়েন্টদের যাচাই করার জন্য একটি সহজ পদ্ধতি প্রদান করে। Edge Microgateway যাচাইকরণ প্রক্সি অন্তর্ভুক্ত করে এমন Apigee Edge প্রোডাক্ট থেকে Consumer Key (এটি ক্লায়েন্ট আইডি নামেও পরিচিত) ভ্যালু কপি করে আপনি API কী পেতে পারেন।

কী ক্যাশে করা

API কীগুলি বিয়ারার টোকেনের জন্য এক্সচেঞ্জ করা হয়, যা ক্যাশে করা হয়। Edge Microgateway-তে আসা অনুরোধে Cache-Control: no-cache হেডার সেট করে আপনি ক্যাশিং বন্ধ করতে পারবেন।

API key ব্যবহার করা

আপনি API অনুরোধে API কী কোয়েরি প্যারামিটার হিসেবে অথবা হেডারে পাস করতে পারেন। সাধারণত, হেডার ও কোয়েরি প্যারামিটারের নাম, দুটিই x-api-key হয়।

কোয়েরি প্যারামিটারের উদাহরণ:

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

হেডারের উদাহরণ:

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

API কীয়ের নাম কনফিগার করা

ডিফল্ট হিসেবে, API কী হেডার ও কোয়েরি প্যারামিটার, দুটির ক্ষেত্রেই 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"

প্রক্সি অনুরোধের সাথে API কী ব্যবহার করা সম্পর্কে আরও তথ্য পেতে, Secure Edge Microgateway দেখুন।

আপস্ট্রিম রেসপন্স কোড চালু করা

ডিফল্ট হিসেবে, উত্তরটি 200 স্ট্যাটাস না হলে, oauth প্লাগ-ইন শুধুমাত্র 4xx সমস্যার স্ট্যাটাস কোড ফেরত দেয়। আপনি এই আচরণ পরিবর্তন করতে পারেন যাতে এটি সবসময় ভুল অনুযায়ী সঠিক 4xx বা 5xx কোড রিটার্ন করে।

এই ফিচার চালু করতে, আপনার Edge Microgateway কনফিগারেশনে oauth.useUpstreamResponse: true প্রপার্টি যোগ করুন। যেমন:

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

OAuth2 টোকেন সুরক্ষা ব্যবহার করা

এই বিভাগে OAuth2 অ্যাক্সেস টোকেন ও রিফ্রেশ টোকেন কীভাবে পেতে হয় তা ব্যাখ্যা করা হয়েছে। মাইক্রোগেটওয়ের মাধ্যমে সুরক্ষিত API কল করতে অ্যাক্সেস টোকেন ব্যবহার করা হয়। নতুন অ্যাক্সেস টোকেন পেতে রিফ্রেশ টোকেন ব্যবহার করা হয়।

কীভাবে অ্যাক্সেস টোকেন পাবেন

অ্যাক্সেস টোকেন পেতে edgemicro-auth প্রক্সি কীভাবে ব্যবহার করতে হয় তা এই বিভাগে ব্যাখ্যা করা হয়েছে।

এছাড়াও, আপনি edgemicro token CLI কমান্ড ব্যবহার করে অ্যাক্সেস টোকেন পেতে পারেন। CLI সম্পর্কে আরও জানতে, টোকেন ম্যানেজ করা দেখুন।

API ১: বডি প্যারামিটার হিসেবে ক্রেডেনশিয়াল পাঠানো

URL-এ আপনার সংস্থা ও এনভায়রনমেন্টের নাম লিখুন এবং Apigee Edge-এ ডেভেলপার অ্যাপ থেকে পাওয়া কনজিউমার আইডি ও কনজিউমার সিক্রেট ভ্যালু client_id ও client_secret বডি প্যারামিটারের জায়গায় লিখুন:

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

API ২: Basic Auth হেডার হিসেবে ক্রেডেনশিয়াল পাঠানো

ক্লায়েন্ট ক্রেডেনশিয়ালকে সাধারণ যাচাইকরণ হেডার হিসেবে এবং grant_type ফর্ম প্যারামিটার হিসেবে পাঠান। এই কমান্ড ফর্মটি RFC 6749: OAuth 2.0 অনুমোদন ফ্রেমওয়ার্ক-এও আলোচনা করা হয়েছে।

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"

আউটপুটের নমুনা

API একটি JSON রেসপন্স রিটার্ন করে। মনে রাখবেন, token এবং access_token প্রপার্টির মধ্যে কোনও পার্থক্য নেই। আপনি যেকোনও একটি ব্যবহার করতে পারেন। মনে রাখবেন, expires_in হল সেকেন্ডে নির্দিষ্ট করা একটি পূর্ণসংখ্যা মান।
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": 1799
}

রিফ্রেশ টোকেন কীভাবে পাবেন

রিফ্রেশ টোকেন পেতে, edgemicro-auth প্রক্সির /token এন্ডপয়েন্টে API কল করুন। আপনাকে অবশ্যই password গ্রান্টের ধরন সহ এই API কল করতে হবে। নিচে উল্লেখ করা ধাপগুলি অনুসরণ করে এই প্রসেসটি সম্পূর্ণ করুন।

  1. /token API-এর মাধ্যমে অ্যাক্সেস ও রিফ্রেশ টোকেন পান। মনে রাখবেন যে গ্রান্টের ধরন হল 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"
    }'

    API একটি অ্যাক্সেস টোকেন ও একটি রিফ্রেশ টোকেন রিটার্ন করে। উত্তরটি এর মতো। মনে রাখবেন, 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. আপনি এখন রিফ্রেশ টোকেন ব্যবহার করে একই API-এর /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"
    }'

    API একটি নতুন অ্যাক্সেস টোকেন রিটার্ন করে। উত্তরটি অনেকটা এরকম দেখতে হবে:

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

সর্বদা মনিটর করা

কনফিগ ফাইল এন্ডপয়েন্ট নির্দিষ্ট করা

আপনি একাধিক Edge Microgateway ইনস্ট্যান্স চালালে, একটি লোকেশন থেকে সেগুলির কনফিগারেশন ম্যানেজ করতে পারেন। আপনি এটি একটি HTTP এন্ডপয়েন্ট নির্দিষ্ট করে করতে পারেন, যেখানে 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.

TCP কানেকশন ডেটা বাফারিং বন্ধ করা

Edge Microgateway-এর ব্যবহার করা TCP কানেকশনের জন্য ডেটা বাফারিং বন্ধ করতে আপনি nodelay কনফিগারেশন অ্যাট্রিবিউট ব্যবহার করতে পারবেন।

ডেটা পাঠানোর আগে তা বাফার করার জন্য TCP কানেকশন ডিফল্ট হিসেবে Nagle অ্যালগরিদম ব্যবহার করে। nodelay-এর মান true হিসেবে সেট করলে, এই আচরণ বন্ধ হয়ে যায় (socket.write() কল করা হলে, ডেটা সঙ্গে সঙ্গে পাঠানো হয়)। আরও বিবরণের জন্য Node.js ডকুমেন্টেশন দেখুন।

nodelay চালু করতে, Edge Micro কনফিগারেশন ফাইল নিম্নলিখিতভাবে এডিট করুন:

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

স্ট্যান্ডঅ্যালোন মোডে Edge Microgateway চালানো

আপনি যেকোনও Apigee Edge নির্ভরতা থেকে সম্পূর্ণ ডিসকানেক্ট করা Edge Microgateway চালাতে পারবেন। এই পরিস্থিতিকে স্ট্যান্ডঅ্যালোন মোড বলা হয়, এটি আপনাকে ইন্টারনেট কানেকশন ছাড়াই Edge Microgateway রান ও টেস্ট করতে দেয়।

স্ট্যান্ডঅলোন মোডে, নিম্নলিখিত ফিচার কাজ করে না, কারণ এগুলির জন্য Apigee Edge-এর সাথে কানেকশন প্রয়োজন:

  • OAuth ও API key
  • কোটা
  • Analytics

অন্যদিকে, কাস্টম প্লাগ-ইন ও স্পাইক অ্যারেস্ট সাধারণত কাজ করে, কারণ এগুলির জন্য Apigee Edge-এর সাথে কানেকশন প্রয়োজন হয় না। এছাড়াও, extauth নামের একটি নতুন প্লাগ-ইন আপনাকে স্ট্যান্ডঅ্যালোন মোডে থাকাকালীন JWT সহ মাইক্রোগেটওয়েতে API কল অনুমোদন করতে দেয়।

গেটওয়ে কনফিগার ও চালু করা

স্ট্যান্ডঅ্যালোন মোডে 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. "১" ভ্যালু সহ নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করুন:
    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 হল প্রক্সি টার্গেটের 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" }

    foo-bar-config.yaml ফাইলে extauth প্লাগ-ইন থাকার কারণে, আপনি "missing_authorization" সমস্যা দেখতে পাবেন। এই প্লাগ-ইন একটি JWT যাচাই করে যা API কলের Authorization হেডারে থাকতে হবে। পরবর্তী বিভাগে, আপনি একটি JWT পাবেন যা API কলগুলিকে কোনও সমস্যা ছাড়াই যেতে দেবে।

যেমন: অনুমোদন টোকেন পাওয়া

নিচের উদাহরণে দেখানো হয়েছে, কীভাবে Apigee Edge (edgemicro-auth/jwkPublicKeys)-এ Edge Microgateway JWT এন্ডপয়েন্ট থেকে JWT পেতে হয়। আপনি Edge Microgateway-এর স্ট্যান্ডার্ড সেট-আপ ও কনফিগারেশন করলে এই এন্ডপয়েন্ট ডিপ্লয় করা হয়। Apigee এন্ডপয়েন্ট থেকে JWT পেতে, আপনাকে প্রথমে স্ট্যান্ডার্ড Edge Microgateway সেট-আপ করতে হবে এবং ইন্টারনেটের সাথে কানেক্ট থাকতে হবে। এখানে Apigee এন্ডপয়েন্টটি শুধুমাত্র উদাহরণ হিসেবে ব্যবহার করা হয়েছে এবং এটি আবশ্যক নয়। আপনি চাইলে অন্য JWT টোকেন এন্ডপয়েন্ট ব্যবহার করতে পারেন। আপনি যদি তা করেন, তাহলে আপনাকে সেই এন্ডপয়েন্টের জন্য প্রদত্ত API ব্যবহার করে 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 রিস্টার্ট করেছিলেন, সেইভাবে কনফিগারেশন ফাইলের নামে ব্যবহৃত org/env নাম ব্যবহার করে রিস্টার্ট করুন। যেমন:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. অনুমোদন এন্ডপয়েন্ট থেকে JWT টোকেন পান। আপনি যেহেতু edgemicro-auth/jwkPublicKeys এন্ডপয়েন্ট ব্যবহার করছেন, তাই এই CLI কমান্ড ব্যবহার করতে পারবেন:

আপনি edgemicro token কমান্ড বা API ব্যবহার করে 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 তৈরি করতে বলে যা API কল যাচাই করতে ব্যবহার করা যেতে পারে।

এছাড়াও, টোকেন তৈরি করুন দেখুন।

স্ট্যান্ডঅলোন কনফিগারেশন পরীক্ষা করা

কনফিগারেশন পরীক্ষা করতে, নিম্নলিখিত পদ্ধতিতে Authorization হেডারে টোকেন যোগ করে API কল করুন:

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-এ মাইক্রোগেটওয়ে-অ্যাওয়ার প্রক্সি ডেপ্লয় করার প্রয়োজন নেই। এর পরিবর্তে, আপনি মাইক্রোগেটওয়ে চালু করার সময় একটি লোকাল প্রক্সি নাম, বেসপাথ ও টার্গেট URL প্রদান করে একটি "লোকাল প্রক্সি" কনফিগার করেন। মাইক্রোগেটওয়েতে করা এপিআই কলগুলি তারপরে লোকাল প্রক্সির টার্গেট URL-এ পাঠানো হয়। অন্যান্য সব দিক থেকে, লোকাল প্রক্সি মোড ঠিক সেইভাবেই কাজ করে যেভাবে Edge Microgateway সাধারণ মোডে চলে। যাচাইকরণ একই পদ্ধতিতে কাজ করে, সেইসাথে স্পাইক অ্যারেস্ট ও কোটা এনফোর্সমেন্ট, কাস্টম প্লাগ-ইন ইত্যাদিও একই পদ্ধতিতে কাজ করে।

ব্যবহারের ক্ষেত্র ও উদাহরণ

Edge Microgateway ইনস্ট্যান্সের সাথে শুধুমাত্র একটি প্রক্সি অ্যাসোসিয়েট করার প্রয়োজন হলে, লোকাল প্রক্সি মোড কাজে লাগে। যেমন, আপনি Kubernetes-এ Edge Microgateway ইনজেক্ট করতে পারেন। এটি সাইডকার প্রক্সি হিসেবে কাজ করে। এখানে, একটি মাইক্রোগেটওয়ে ও একটি পরিষেবা, দু'টিই একটি পডে রান করে এবং মাইক্রোগেটওয়ে, এর কম্প্যানিয়ন পরিষেবায় আসা ও সেখান থেকে যাওয়া ট্রাফিক ম্যানেজ করে। নিচের ছবিতে এই আর্কিটেকচার দেখানো হয়েছে, যেখানে Kubernetes ক্লাস্টারে Edge Microgateway একটি সাইডকার প্রক্সি হিসেবে কাজ করে। প্রতিটি মাইক্রোগেটওয়ে ইনস্ট্যান্স শুধুমাত্র এর কম্প্যানিয়ন পরিষেবার একটি এন্ডপয়েন্টের সাথে কথা বলে:

Sidecar হিসেবে Edgemicro

এই ধরনের আর্কিটেকচারের একটি সুবিধা হল, Edge Microgateway, কন্টেনার এনভায়রনমেন্টে ডেপ্লয় করা স্বতন্ত্র পরিষেবার জন্য API ম্যানেজমেন্ট প্রদান করে, যেমন Kubernetes ক্লাস্টার।

লোকাল প্রক্সি মোড কনফিগার করা

লোকাল প্রক্সি মোডে চালানোর জন্য Edge Microgateway কনফিগার করতে, এইসব ধাপ অনুসরণ করুন:

  1. আপনার লোকাল কনফিগারেশন এনভায়রনমেন্ট সেট-আপ করতে edgemicro init রান করুন, ঠিক যেমন আপনি সাধারণ Edge Microgateway সেট-আপে করেন। এছাড়াও দেখুন Edge Microgateway কনফিগার করুন।
  2. সাধারণ Edge Microgateway সেট-আপ প্রক্রিয়ায় যেভাবে edgemicro configure রান করান, সেইভাবে রান করান। যেমন:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    এই কমান্ড Edge-এ edgemicro-auth নীতি প্রয়োগ করে এবং একটি কী ও সিক্রেট রিটার্ন করে যা আপনাকে মাইক্রোগেটওয়ে চালু করার জন্য প্রয়োজন হবে। আপনার সাহায্যের প্রয়োজন হলে, Edge Microgateway কনফিগার করুন দেখুন।

  3. Apigee Edge-এ, একটি API প্রোডাক্ট তৈরি করুন এবং নিম্নলিখিত বাধ্যতামূলক কনফিগারেশন প্রয়োজনীয়তা (আপনি নিজের ইচ্ছামতো অন্যান্য সব কনফিগারেশন ম্যানেজ করতে পারবেন) মেনে চলুন:
    • প্রোডাক্টে আপনাকে অবশ্যই edgemicro-auth প্রক্সি যোগ করতে হবে। আপনি edgemicro configure চালানোর সময় এই প্রক্সি অটোমেটিক ডেপ্লয় করা হয়েছে।
    • আপনাকে অবশ্যই রিসোর্স পাথ দিতে হবে। Apigee এই পাথটি প্রোডাক্টে যোগ করার সাজেশন দেয়: /**. আরও জানতে, রিসোর্স পাথের আচরণ কনফিগার করা দেখুন। Edge ডকুমেন্টেশনে API প্রোডাক্ট তৈরি করুন লিঙ্কে গিয়েও দেখুন।
  4. Apigee Edge-এ, কোনও ডেভেলপার তৈরি করুন অথবা আপনি চাইলে আগে থেকেই থাকা ডেভেলপার ব্যবহার করতে পারেন। সাহায্যের জন্য, Edge ম্যানেজমেন্ট UI ব্যবহার করে ডেভেলপার যোগ করা দেখুন।

  5. Apigee Edge-এ, ডেভেলপার অ্যাপ তৈরি করুন। আপনি যে API প্রোডাক্ট এইমাত্র তৈরি করেছেন সেটি অ্যাপে অবশ্যই যোগ করতে হবে। সাহায্যের জন্য, Edge ম্যানেজমেন্ট UI-তে অ্যাপ রেজিস্টার করা দেখুন।
  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 হল প্রক্সির টার্গেটের 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"
}

আপনি সঠিক API কী না দেওয়ায় এই প্রাথমিক API কলে সমস্যা হয়েছে। আপনি আগে তৈরি করা ডেভেলপার অ্যাপে কী খুঁজে পেতে পারেন। Edge UI-তে অ্যাপটি খুলুন, Consumer Key কপি করুন এবং সেই কীটি নিম্নলিখিতভাবে ব্যবহার করুন:

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":""
}

সিঙ্ক্রোনাইজার ব্যবহার করা

এই বিভাগে কীভাবে সিঙ্ক্রোনাইজার ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে। এটি একটি ঐচ্ছিক ফিচার যা Apigee Edge থেকে কনফিগারেশন ডেটা নিয়ে আসতে এবং এটিকে লোকাল Redis ডেটাবেসে লিখতে দিয়ে Edge Microgateway-এর স্থিতিস্থাপকতা উন্নত করে। একটি সিঙ্ক্রোনাইজার ইনস্ট্যান্স চালু থাকলে, অন্যান্য Edge Microgateway ইনস্ট্যান্স, যা আলাদা আলাদা নোডে চালু আছে, সেগুলি সরাসরি এই ডেটাবেস থেকে নিজেদের কনফিগারেশন রিট্রিভ করতে পারে।

সিঙ্ক্রোনাইজার ফিচার বর্তমানে Redis 5.0.x-এর সাথে কাজ করে।

সিনক্রোনাইজার কী?

সিঙ্ক্রোনাইজার Edge Microgateway-এর জন্য এক লেভেলের স্থিতিশীলতা প্রদান করে। এটি নিশ্চিত করতে সাহায্য করে যে Edge Microgateway-এর প্রতিটি ইনস্ট্যান্স একই কনফিগারেশন ব্যবহার করে এবং ইন্টারনেট কানেকশন বিচ্ছিন্ন হয়ে গেলেও, Edge Microgateway ইনস্ট্যান্স চালু হতে এবং সঠিকভাবে চলতে পারে।

ডিফল্ট হিসেবে, Edge Microgateway ইনস্ট্যান্সকে অবশ্যই Apigee Edge-এর সাথে যোগাযোগ করতে হবে, যাতে API প্রক্সি ও API প্রোডাক্ট কনফিগারেশনের মতো কনফিগারেশন ডেটা রিট্রিভ ও রিফ্রেশ করা যায়। Edge-এর সাথে ইন্টারনেট কানেকশন বিচ্ছিন্ন হয়ে গেলেও, মাইক্রোগেটওয়ে ইনস্ট্যান্স কাজ করা চালিয়ে যেতে পারে, কারণ লেটেস্ট কনফিগারেশন ডেটা ক্যাশে করা থাকে। তবে, স্পষ্ট কানেকশন না থাকলে নতুন মাইক্রোগেটওয়ে ইনস্ট্যান্স স্টার্ট-আপ হতে পারে না। এছাড়াও, ইন্টারনেট ডিসরাপশনের ফলে এক বা একাধিক মাইক্রোগেটওয়ে ইনস্ট্যান্স এমন কনফিগারেশন তথ্য সহ চলতে পারে যা অন্যান্য ইনস্ট্যান্সের সাথে সিঙ্ক করা নেই।

Edge Microgateway সিঙ্ক্রোনাইজার, Edge Microgateway ইনস্ট্যান্সের জন্য কনফিগারেশন ডেটা পাওয়ার একটি বিকল্প মেকানিজম প্রদান করে। API প্রক্সি ট্রাফিক শুরু ও প্রসেস করার জন্য এই ডেটা প্রয়োজন হয়। Apigee Edge-এ করা কল থেকে পাওয়া কনফিগারেশন ডেটার মধ্যে এগুলি অন্তর্ভুক্ত: jwk_public_keys কল, jwt_public_key কল, বুটস্ট্র্যাপ কল ও API প্রোডাক্ট কল। সিঙ্ক্রোনাইজার, বিভিন্ন নোডে রান করা Edge Microgateway-এর সব ইনস্ট্যান্সকে সঠিকভাবে চালু করতে এবং Edge Microgateway ও Apigee Edge-এর মধ্যে ইন্টারনেট কানেকশন বিঘ্নিত হলেও সিঙ্ক করা অবস্থায় রাখতে সাহায্য করে।

সিঙ্ক্রোনাইজার হল Edge Microgateway-এর একটি বিশেষ কনফিগার করা ইনস্ট্যান্স। এর একমাত্র উদ্দেশ্য হল Apigee Edge-কে পোল করা (টাইমিং কনফিগার করা যায়), কনফিগারেশন ডেটা রিট্রিভ করা এবং সেটি স্থানীয় Redis ডেটাবেসে লেখা। সিঙ্ক্রোনাইজার ইনস্ট্যান্স নিজে API প্রক্সি ট্রাফিক প্রসেস করতে পারে না। অন্যান্য নোডে Edge Microgateway-এর অন্যান্য ইনস্ট্যান্স রান করলে, সেগুলি Apigee Edge-এর পরিবর্তে Redis ডেটাবেস থেকে কনফিগারেশন ডেটা পাওয়ার জন্য কনফিগার করা যেতে পারে। কারণ, সব মাইক্রোগেটওয়ে ইনস্ট্যান্স তাদের কনফিগারেশন ডেটা লোকাল ডেটাবেস থেকে নেয়, তাই ইন্টারনেট বিঘ্নিত হলেও সেগুলি চালু হতে এবং API অনুরোধ প্রসেস করতে পারে।

সিঙ্ক্রোনাইজার ইনস্ট্যান্স কনফিগার করা

আপনি যে 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
Option বিবরণ
redisHost যে হোস্টের মধ্যে আপনার Redis ইনস্ট্যান্স চলছে। ডিফল্ট: 127.0.0.1
redisPort Redis ইন্সট্যান্সের পোর্ট। ডিফল্ট: ৬৩৭৯
redisDb ব্যবহার করার জন্য Redis DB. ডিফল্ট: ০
redisPassword আপনার ডেটাবেস পাসওয়ার্ড।

সবশেষে, কনফিগারেশন ফাইল সেভ করুন এবং Edge Microgateway ইনস্ট্যান্স চালু করুন। এটি Apigee Edge-কে পোল করা এবং Redis ডেটাবেসে ডাউনলোড করা কনফিগারেশন ডেটা স্টোর করা শুরু করবে।

সাধারণ Edge Microgateway ইনস্ট্যান্স কনফিগার করা

সিনক্রোনাইজার চালু থাকলে, আপনি API প্রক্সি ট্রাফিক প্রসেস করার জন্য নিয়মিত মাইক্রোগেটওয়ে ইনস্ট্যান্স চালানোর জন্য অতিরিক্ত Edge Microgateway নোড কনফিগার করতে পারবেন। তবে, আপনি Apigee Edge-এর পরিবর্তে Redis ডেটাবেস থেকে কনফিগারেশন ডেটা পেতে এইসব ইনস্ট্যান্স কনফিগার করেন।

প্রতিটি অতিরিক্ত Edge Microgateway নোডের org-env/config.yaml ফাইলে নিম্নলিখিত কনফিগারেশন যোগ করুন। মনে রাখবেন যে synchronizerMode প্রপার্টি 0-এ সেট করা আছে। এই প্রপার্টি, ইনস্ট্যান্সটিকে একটি সাধারণ Edge Microgateway ইনস্ট্যান্স হিসেবে কাজ করার জন্য সেট করে যা API প্রক্সি ট্রাফিক প্রসেস করে এবং ইনস্ট্যান্সটি 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 ০ বা ১

০ (ডিফল্ট) হলে, Edge Microgateway তার স্ট্যান্ডার্ড মোডে কাজ করে।

১ হলে, সিঙ্ক্রোনাইজার হিসেবে কাজ করার জন্য Edge Microgateway ইনস্ট্যান্স চালু করুন। এই মোডে, ইনস্ট্যান্স Apigee Edge থেকে কনফিগারেশন ডেটা নিয়ে আসবে এবং এটি একটি লোকাল Redis ডেটাবেসে স্টোর করবে। এই ইনস্ট্যান্স API প্রক্সি অনুরোধ প্রসেস করতে পারে না; এর একমাত্র উদ্দেশ্য হল কনফিগারেশন ডেটার জন্য Apigee Edge-কে পোল করা এবং এটি লোকাল ডেটাবেসে লেখা। তারপরে, আপনাকে অবশ্যই ডেটাবেস থেকে রিড করার জন্য অন্যান্য মাইক্রোগেটওয়ে ইনস্ট্যান্স কনফিগার করতে হবে।

edge_config.redisBasedConfigCache ঠিক বা ভুল সত্য হলে, Edge Microgateway ইনস্ট্যান্স Apigee Edge-এর পরিবর্তে Redis ডেটাবেস থেকে এর কনফিগারেশন ডেটা সংগ্রহ করে। যে Redis ডেটাবেসে সিঙ্ক্রোনাইজার ডেটা লেখে, সেটিই ব্যবহার করতে হবে। Redis ডেটাবেস উপলভ্য না থাকলে অথবা ডেটাবেস খালি থাকলে, মাইক্রোগেটওয়ে কনফিগারেশনের জন্য আগে থেকে থাকা cache-config.yaml ফাইল খোঁজে।

এটি false (ডিফল্ট) হলে, Edge Microgateway ইনস্ট্যান্স Apigee Edge থেকে যথারীতি কনফিগারেশন ডেটা নিয়ে আসে।

edgemicro.config_change_poll_interval সময়ের ব্যবধান, সেকেন্ডে Apigee Edge থেকে ডেটা পুল করার জন্য সিঙ্ক্রোনাইজারের পোলিং ইন্টারভ্যাল নির্দিষ্ট করে।

প্লাগ-ইনের জন্য বাদ দেওয়ার URL কনফিগার করা

আপনি নির্দিষ্ট URL-এর জন্য প্লাগ-ইন প্রসেস করা এড়িয়ে যেতে মাইক্রোগেটওয়ে কনফিগার করতে পারবেন। আপনি এই "বাদ দেওয়া" URL গ্লোবালি (সব প্লাগ-ইনের জন্য) অথবা নির্দিষ্ট প্লাগ-ইনের জন্য কনফিগার করতে পারবেন।

যেমন:

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

এই উদাহরণে, প্লাগ-ইনগুলি /hello বা /proxy_one পাথ সহ ইনকামিং API প্রক্সি কল প্রসেস করবে না। এছাড়াও, json2xml প্লাগ-ইন, পাথ-এ /hello/xml থাকা API-এর জন্য এড়িয়ে যাওয়া হবে।

এনভায়রনমেন্ট ভেরিয়েবল ভ্যালু সহ সেটিং কনফিগারেশন অ্যাট্রিবিউট

আপনি কনফিগারেশন ফাইলে ট্যাগ ব্যবহার করে এনভায়রনমেন্ট ভেরিয়েবল নির্দিষ্ট করতে পারবেন। নির্দিষ্ট এনভায়রনমেন্ট ভেরিয়েবল ট্যাগগুলি আসল এনভায়রনমেন্ট ভেরিয়েবল ভ্যালু দিয়ে পরিবর্তন করা হয়। পরিবর্তিত মান শুধুমাত্র মেমরিতে সেভ করা হয় এবং আসল কনফিগারেশন বা ক্যাশে ফাইলে সেভ করা হয় না।

এই উদাহরণে, 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>