আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
Edge Microgateway v. 3.1.x
এই অংশে এজ মাইক্রোগেটওয়ে কীভাবে পরিচালনা ও কনফিগার করতে হয়, তা আলোচনা করা হয়েছে।
ইন্টারনেট সংযোগ থাকলে Edge Microgateway আপগ্রেড করা
এই বিভাগে Edge Microgateway-এর একটি বিদ্যমান ইনস্টলেশন কীভাবে আপগ্রেড করতে হয় তা ব্যাখ্যা করা হয়েছে। আপনি যদি ইন্টারনেট সংযোগ ছাড়াই কাজ করেন, তাহলে ‘আমি কি ইন্টারনেট সংযোগ ছাড়া Edge Microgateway ইনস্টল করতে পারি?’ অংশটি দেখুন।
Apigee পরামর্শ দেয় যে, আপনার প্রোডাকশন এনভায়রনমেন্ট আপগ্রেড করার আগে নতুন ভার্সন দিয়ে আপনার বিদ্যমান কনফিগারেশনটি পরীক্ষা করে নিন।
- Edge Microgateway-এর সর্বশেষ সংস্করণে আপগ্রেড করতে নিম্নলিখিত
npmকমান্ডটি চালান:npm upgrade edgemicro -g
Edge Microgateway-এর একটি নির্দিষ্ট সংস্করণে আপগ্রেড করতে, আপনাকে আপগ্রেড কমান্ডে সংস্করণ নম্বরটি উল্লেখ করতে হবে। আপনি যদি সংস্করণ নম্বর উল্লেখ না করেন, তাহলে সর্বশেষ সংস্করণটি ইনস্টল হবে। উদাহরণস্বরূপ, সংস্করণ 3.1.0-এ আপগ্রেড করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
npm upgrade edgemicro@3.1.0 -g
- ভার্সন নম্বরটি যাচাই করুন। উদাহরণস্বরূপ, যদি আপনি ভার্সন ৩.১.০ ইনস্টল করে থাকেন:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.1.0 - অবশেষে, edgemicro-auth প্রক্সির সর্বশেষ সংস্করণে আপগ্রেড করুন:
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
কনফিগারেশন পরিবর্তন করা
যেসব কনফিগারেশন ফাইল সম্পর্কে আপনার জানা প্রয়োজন, সেগুলো হলো:
- ডিফল্ট সিস্টেম কনফিগারেশন ফাইল
- নতুনভাবে চালু করা এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সের জন্য ডিফল্ট কনফিগারেশন ফাইল
- চলমান ইনস্ট্যান্সগুলির জন্য ডায়নামিক কনফিগারেশন ফাইল
এই অংশে এই ফাইলগুলো এবং সেগুলো পরিবর্তন করার জন্য আপনার যা জানা প্রয়োজন, তা আলোচনা করা হয়েছে।
ডিফল্ট সিস্টেম কনফিগারেশন ফাইল
আপনি যখন Edge Microgateway ইনস্টল করেন, তখন একটি ডিফল্ট সিস্টেম কনফিগারেশন ফাইল এখানে রাখা হয়:
prefix/lib/node_modules/edgemicro/config/default.yaml
যেখানে prefix হলো npm প্রিফিক্স ডিরেক্টরি। আপনি যদি এই ডিরেক্টরিটি খুঁজে না পান, তাহলে “Where is Edge Microgateway installed” দেখুন।
আপনি যদি সিস্টেম কনফিগারেশন ফাইল পরিবর্তন করেন, তাহলে আপনাকে অবশ্যই Edge Microgateway পুনরায় ইনিশিয়ালাইজ, রিকনফিগার এবং রিস্টার্ট করতে হবে:
edgemicro initedgemicro configure [params]edgemicro start [params]
নতুনভাবে চালু করা এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সগুলির জন্য ডিফল্ট কনফিগারেশন ফাইল
যখন আপনি edgemicro init চালান, তখন উপরে বর্ণিত সিস্টেম কনফিগারেশন ফাইল default.yaml ~/.edgemicro ডিরেক্টরিতে রাখা হয়।
যদি আপনি ~/.edgemicro তে থাকা কনফিগারেশন ফাইলটি পরিবর্তন করেন, তাহলে আপনাকে অবশ্যই Edge Microgateway পুনরায় কনফিগার করে রিস্টার্ট করতে হবে:
edgemicro stopedgemicro configure [params]edgemicro start [params]
চলমান ইনস্ট্যান্সগুলির জন্য ডায়নামিক কনফিগারেশন ফাইল
যখন আপনি edgemicro configure [params] চালান, তখন ~/.edgemicro ফোল্ডারে একটি ডাইনামিক কনফিগারেশন ফাইল তৈরি হয়। ফাইলটির নামকরণ এই প্যাটার্ন অনুযায়ী করা হয়: org - env -config.yaml , যেখানে org এবং env হলো আপনার `Apigee Edge` অর্গানাইজেশন এবং এনভায়রনমেন্টের নাম। আপনি এই ফাইলটি ব্যবহার করে কনফিগারেশনে পরিবর্তন আনতে পারেন এবং তারপর কোনো ডাউনটাইম ছাড়াই তা রিলোড করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি প্লাগইন যোগ এবং কনফিগার করেন, তাহলে আপনি কোনো ডাউনটাইম ছাড়াই কনফিগারেশনটি রিলোড করতে পারেন, যেমনটি নিচে ব্যাখ্যা করা হয়েছে।
যদি Edge Microgateway চালু থাকে (জিরো-ডাউনটাইম বিকল্প):
- Edge Microgateway কনফিগারেশন পুনরায় লোড করুন:
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
কোথায়:
- $ORG হলো আপনার Edge অর্গানাইজেশনের নাম (আপনাকে অবশ্যই অর্গানাইজেশন অ্যাডমিনিস্ট্রেটর হতে হবে)।
- $ENV হলো আপনার অর্গের একটি এনভায়রনমেন্ট (যেমন "test" বা "prod")।
- $KEY হলো সেই কী, যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
- $SECRET হলো সেই কী, যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
উদাহরণস্বরূপ
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
যদি Edge Microgateway বন্ধ করা হয়:
- Edge মাইক্রোগেটওয়ে পুনরায় চালু করুন:
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
কোথায়:
- $ORG হলো আপনার Edge অর্গানাইজেশনের নাম (আপনাকে অবশ্যই অর্গানাইজেশন অ্যাডমিনিস্ট্রেটর হতে হবে)।
- $ENV হলো আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন "test" বা "prod")।
- $KEY হলো সেই কী, যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
- $SECRET হলো সেই কী, যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
উদাহরণস্বরূপ:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
এখানে একটি নমুনা কনফিগারেশন ফাইল দেওয়া হলো। কনফিগারেশন ফাইলের সেটিংস সম্পর্কে বিস্তারিত জানতে, এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স দেখুন।
edge_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 চালু করার জন্য প্রয়োজনীয় কী (key) ও সিক্রেট (secret) এই এনভায়রনমেন্ট ভেরিয়েবলগুলোতে সংরক্ষণ করা যেতে পারে:
-
EDGEMICRO_ORG -
EDGEMICRO_ENV -
EDGEMICRO_KEY -
EDGEMICRO_SECRET
এই ভেরিয়েবলগুলো সেট করা ঐচ্ছিক। যদি আপনি এগুলো সেট করেন, তাহলে কমান্ড-লাইন ইন্টারফেস (CLI) ব্যবহার করে এজ মাইক্রোগেটওয়ে কনফিগার ও চালু করার সময় এগুলোর মান উল্লেখ করার প্রয়োজন নেই।
এজ মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করা
Apigee Edge Microgateway-তে TLS কনফিগার করার বিষয়ে জানতে নিম্নলিখিত ভিডিওগুলো দেখুন:
| ভিডিও | বর্ণনা |
|---|---|
| একমুখী উত্তরমুখী টিএলএস কনফিগার করুন | Apigee Edge Microgateway-তে TLS কনফিগার করা সম্পর্কে জানুন। এই ভিডিওটিতে TLS ও এর গুরুত্ব সম্পর্কে একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে, Edge Microgateway-তে TLS-এর পরিচিতি তুলে ধরা হয়েছে এবং Northbound One-Way TLS কীভাবে কনফিগার করতে হয় তা দেখানো হয়েছে। |
| দ্বিমুখী উত্তরমুখী টিএলএস কনফিগার করুন | Apigee Edge Microgateway-তে TLS কনফিগার করার উপর এটি দ্বিতীয় ভিডিও। এই ভিডিওতে নর্থবাউন্ড ২-ওয়ে TLS কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। |
| একমুখী এবং দ্বিমুখী দক্ষিণমুখী টিএলএস কনফিগার করুন | Apigee Edge Microgateway-তে TLS কনফিগার করার উপর এই তৃতীয় ভিডিওটিতে সাউথবাউন্ড ১-ওয়ে এবং ২-ওয়ে TLS কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। |
আপনি SSL ব্যবহার করার জন্য মাইক্রোগেটওয়ে সার্ভারটি কনফিগার করতে পারেন। উদাহরণস্বরূপ, SSL কনফিগার করা থাকলে, আপনি এজ মাইক্রোগেটওয়ের মাধ্যমে "https" প্রোটোকল ব্যবহার করে API কল করতে পারেন, যেমন:
https://localhost:8000/myapi
মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করতে, এই ধাপগুলো অনুসরণ করুন:
- openssl ইউটিলিটি ব্যবহার করে অথবা আপনার পছন্দের যেকোনো পদ্ধতি অবলম্বন করে একটি SSL সার্টিফিকেট ও কী তৈরি বা সংগ্রহ করুন।
- 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
- Edge Microgateway পুনরায় চালু করুন। আপনি কোন কনফিগারেশন ফাইলটি সম্পাদনা করেছেন (ডিফল্ট ফাইল নাকি রানটাইম কনফিগারেশন ফাইল), তার উপর নির্ভর করে 'কনফিগারেশন পরিবর্তন করা' অংশে বর্ণিত পদক্ষেপগুলি অনুসরণ করুন।
এখানে কনফিগারেশন ফাইলের edgemicro অংশের একটি উদাহরণ দেওয়া হলো, যেখানে SSL কনফিগার করা আছে:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
এখানে সকল সমর্থিত সার্ভার বিকল্পগুলির একটি তালিকা দেওয়া হল:
| বিকল্প | বর্ণনা |
|---|---|
key | একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)। |
cert | একটি ca.cert ফাইলের পাথ (PEM ফরম্যাটে)। |
pfx | PFX ফরম্যাটে ক্লায়েন্টের প্রাইভেট কী, সার্টিফিকেট এবং CA সার্টিফিকেট সম্বলিত একটি pfx ফাইলের পাথ। |
passphrase | প্রাইভেট কী বা PFX-এর পাসফ্রেজ সম্বলিত একটি স্ট্রিং। |
ca | PEM ফরম্যাটে বিশ্বস্ত সার্টিফিকেটগুলোর তালিকা সম্বলিত ফাইলের পাথ। |
ciphers | ব্যবহারযোগ্য সাইফারগুলোর বর্ণনা সম্বলিত একটি স্ট্রিং, যা একটি কোলন (:) দ্বারা পৃথক করা থাকবে। |
rejectUnauthorized | যদি সত্য হয়, তাহলে সরবরাহকৃত CA-এর তালিকার সাথে সার্ভার সার্টিফিকেটটি যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি বার্তা দেখানো হয়। |
secureProtocol | ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণস্বরূপ, SSL-কে সংস্করণ ৩-এ বাধ্যতামূলক করতে SSLv3_method ব্যবহার করা যেতে পারে। |
servername | SNI (সার্ভার নেম ইন্ডিকেশন) TLS এক্সটেনশনের জন্য সার্ভারের নাম। |
requestCert | দ্বিমুখী SSL এর জন্য true; একমুখী SSL এর জন্য false |
ক্লায়েন্ট SSL/TLS বিকল্প ব্যবহার করে
টার্গেট এন্ডপয়েন্টগুলিতে সংযোগ করার সময় আপনি এজ মাইক্রোগেটওয়েকে একটি TLS বা SSL ক্লায়েন্ট হিসেবে কনফিগার করতে পারেন। মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে, 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এখানে সকল সমর্থিত ক্লায়েন্ট অপশনগুলোর একটি তালিকা দেওয়া হলো:
| বিকল্প | বর্ণনা |
|---|---|
pfx | PFX ফরম্যাটে ক্লায়েন্টের প্রাইভেট কী, সার্টিফিকেট এবং CA সার্টিফিকেট সম্বলিত একটি pfx ফাইলের পাথ। |
key | একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)। |
passphrase | প্রাইভেট কী বা PFX-এর পাসফ্রেজ সম্বলিত একটি স্ট্রিং। |
cert | একটি ca.cert ফাইলের পাথ (PEM ফরম্যাটে)। |
ca | PEM ফরম্যাটে বিশ্বস্ত সার্টিফিকেটগুলোর তালিকা সম্বলিত ফাইলের পাথ। |
ciphers | ব্যবহারযোগ্য সাইফারগুলোর বর্ণনা সম্বলিত একটি স্ট্রিং, যা একটি কোলন (:) দ্বারা পৃথক করা থাকবে। |
rejectUnauthorized | যদি সত্য হয়, তাহলে সরবরাহকৃত CA-এর তালিকার সাথে সার্ভার সার্টিফিকেটটি যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি বার্তা দেখানো হয়। |
secureProtocol | ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণস্বরূপ, SSL-কে সংস্করণ ৩-এ বাধ্যতামূলক করতে SSLv3_method ব্যবহার করা যেতে পারে। |
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 তে সংরক্ষিত হয়।
ডিফল্ট লগ ফাইল ডিরেক্টরি কীভাবে পরিবর্তন করবেন
যে ডিরেক্টরিতে লগ ফাইলগুলো সংরক্ষিত হয়, তা এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নির্দিষ্ট করা থাকে। আরও দেখুন ‘কনফিগারেশন পরিবর্তন করা’ ।
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 ফ্ল্যাগটি true-তে সেট করুন, যেভাবে নিচে দেখানো হয়েছে:
edgemicro:
logging:
to_console: trueএই সেটিংটির মাধ্যমে লগগুলো স্ট্যান্ডার্ড আউটপুটে পাঠানো হবে। বর্তমানে, আপনি একই সাথে স্ট্যান্ডার্ড আউটপুট (stdout) এবং একটি লগ ফাইলে লগ পাঠাতে পারবেন না।
লগিং লেভেল কীভাবে সেট করবেন
আপনি এই লগ লেভেলগুলো সেট করতে পারেন: info , warn , এবং error । info লেভেলটি ব্যবহার করার পরামর্শ দেওয়া হয়। এটি সমস্ত API অনুরোধ এবং প্রতিক্রিয়া লগ করে এবং এটিই ডিফল্ট।
লগ ব্যবধান কীভাবে পরিবর্তন করবেন
আপনি Edge Microgateway কনফিগারেশন ফাইলে এই ব্যবধানগুলো নির্ধারণ করতে পারেন। আরও দেখুন ‘কনফিগারেশন পরিবর্তন করা’ ।
পরিবর্তনযোগ্য বৈশিষ্ট্যগুলো হলো:
- stats_log_interval : (ডিফল্ট: ৬০) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ডটি এপিআই লগ ফাইলে লেখা হয়।
- rotate_interval : (ডিফল্ট: ২৪) লগ ফাইল ঘোরানোর ব্যবধান, ঘণ্টায়। উদাহরণস্বরূপ:
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
লগ ফাইল রক্ষণাবেক্ষণের ভালো অভ্যাস
সময়ের সাথে সাথে লগ ফাইলের ডেটা জমা হতে থাকায়, Apigee আপনাকে নিম্নলিখিত পদ্ধতিগুলো অবলম্বন করার পরামর্শ দেয়:
- যেহেতু লগ ফাইলগুলো বেশ বড় হয়ে যেতে পারে, তাই নিশ্চিত করুন যে লগ ফাইল ডিরেক্টরিতে পর্যাপ্ত জায়গা আছে। নিম্নলিখিত বিভাগগুলো দেখুন: লগ ফাইলগুলো কোথায় সংরক্ষিত হয় এবং কীভাবে ডিফল্ট লগ ফাইল ডিরেক্টরি পরিবর্তন করবেন ।
- সপ্তাহে অন্তত একবার লগ ফাইলগুলো মুছে ফেলুন অথবা একটি আলাদা আর্কাইভ ডিরেক্টরিতে সরিয়ে নিন।
- আপনার নীতি যদি লগ মুছে ফেলা হয়, তাহলে আপনি পুরোনো লগগুলো সরিয়ে (পরিষ্কার করতে)
edgemicro log -cCLI কমান্ডটি ব্যবহার করতে পারেন।
লগ ফাইলের নামকরণের নিয়ম
প্রতিটি Edge Microgateway ইনস্ট্যান্স তিন ধরনের লগ ফাইল তৈরি করে:
- api - Edge Microgateway-এর মাধ্যমে প্রবাহিত সমস্ত অনুরোধ এবং প্রতিক্রিয়া লগ করে। API কাউন্টার (পরিসংখ্যান) এবং ত্রুটিগুলিও এই ফাইলে লগ করা হয়।
- err - stderr-এ পাঠানো যেকোনো কিছু লগ করে।
- out - stdout-এ পাঠানো যেকোনো কিছু লগ করে।
এই হলো নামকরণের রীতি:
edgemicro-<Host Name>-<Instance ID>-<Log Type>.log
উদাহরণস্বরূপ:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log
লগ ফাইলের বিষয়বস্তু সম্পর্কে
যোগ করা হয়েছে: v2.3.3
ডিফল্টরূপে, লগিং পরিষেবা ডাউনলোড করা প্রক্সি, প্রোডাক্ট এবং JSON ওয়েব টোকেন (JWT)-এর JSON বাদ দেয়। আপনি যদি এই অবজেক্টগুলো লগ ফাইলে আউটপুট করতে চান, তাহলে Edge Microgateway চালু করার সময় DEBUG=* সেট করুন। উদাহরণস্বরূপ:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
'api' লগ ফাইলের বিষয়বস্তু
'api' লগ ফাইলে Edge Microgateway-এর মাধ্যমে অনুরোধ এবং প্রতিক্রিয়ার প্রবাহ সম্পর্কে বিস্তারিত তথ্য থাকে। 'api' লগ ফাইলগুলোর নামকরণ এইভাবে করা হয়:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
Edge Microgateway-তে করা প্রতিটি অনুরোধের জন্য, 'api' লগ ফাইলে চারটি ইভেন্ট রেকর্ড করা হয়:
- ক্লায়েন্টের কাছ থেকে আগত অনুরোধ
- লক্ষ্যবস্তুর কাছে বহির্গামী অনুরোধ করা হয়েছে
- লক্ষ্যবস্তু থেকে আগত প্রতিক্রিয়া
- ক্লায়েন্টের কাছে বহির্গামী প্রতিক্রিয়া
লগ ফাইলগুলোকে আরও সংক্ষিপ্ত করার জন্য এই প্রতিটি আলাদা এন্ট্রিকে একটি সংক্ষিপ্ত সংকেতে উপস্থাপন করা হয়। এখানে চারটি ইভেন্টের প্রত্যেকটির প্রতিনিধিত্বকারী চারটি নমুনা এন্ট্রি দেওয়া হলো। লগ ফাইলে, এগুলো দেখতে এইরকম (লাইন নম্বরগুলো শুধুমাত্র ডকে রেফারেন্সের জন্য, এগুলো লগ ফাইলে দেখা যায় না)।
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
চলুন, এক এক করে সেগুলো দেখা যাক:
১. ক্লায়েন্টের কাছ থেকে আসা অনুরোধের নমুনা:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- req - ঘটনাটিকে শনাক্ত করে। এক্ষেত্রে, ক্লায়েন্টের পক্ষ থেকে করা অনুরোধ।
- m - অনুরোধে ব্যবহৃত HTTP ভার্ব।
- u - URL-এর বেসপ্যাথের পরবর্তী অংশ।
- h - যে হোস্ট এবং পোর্ট নম্বরে Edge Microgateway শুনছে।
- r - দূরবর্তী হোস্ট এবং পোর্ট যেখান থেকে ক্লায়েন্টের অনুরোধটি পাঠানো হয়েছিল।
- i - অনুরোধ আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে। প্রতিটি অনুরোধকে একটি অনন্য অনুরোধ আইডি দেওয়া হয়। অনুরোধ আইডি দ্বারা লগ রেকর্ডগুলোর মধ্যে সম্পর্ক স্থাপন করলে টার্গেটের লেটেন্সি সম্পর্কে মূল্যবান ধারণা পাওয়া যেতে পারে।
- d - এজ মাইক্রোগেটওয়ে দ্বারা অনুরোধটি গৃহীত হওয়ার পর থেকে অতিবাহিত সময় (মিলিসেকেন্ডে)। উপরের উদাহরণে, অনুরোধ ০-এর জন্য টার্গেটের প্রতিক্রিয়া ৭ মিলিসেকেন্ড পরে গৃহীত হয়েছিল (লাইন ৩), এবং অতিরিক্ত ৪ মিলিসেকেন্ড পরে প্রতিক্রিয়াটি ক্লায়েন্টের কাছে পাঠানো হয়েছিল (লাইন ৪)। অন্য কথায়, মোট অনুরোধ লেটেন্সি ছিল ১১ মিলিসেকেন্ড, যার মধ্যে ৭ মিলিসেকেন্ড সময় নিয়েছিল টার্গেট এবং ৪ মিলিসেকেন্ড সময় নিয়েছিল এজ মাইক্রোগেটওয়ে নিজে।
২. লক্ষ্যবস্তুর কাছে পাঠানো বহির্গামী অনুরোধের নমুনা:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- treq - ইভেন্টটি শনাক্ত করে। এক্ষেত্রে, এটি হলো টার্গেট রিকোয়েস্ট।
- m - লক্ষ্য অনুরোধে ব্যবহৃত HTTP ভার্ব।
- u - URL-এর বেসপ্যাথের পরবর্তী অংশ।
- h - ব্যাকএন্ড টার্গেটের হোস্ট এবং পোর্ট নম্বর।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে।
৩. লক্ষ্যবস্তু থেকে আগত প্রতিক্রিয়ার নমুনা
1436403888672 info tres s=200, d=7, i=0
1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- tres - ঘটনাটিকে চিহ্নিত করে। এক্ষেত্রে, লক্ষ্য প্রতিক্রিয়া।
- s - HTTP প্রতিক্রিয়ার স্থিতি।
- d - সময়কাল (মিলিসেকেন্ডে)। টার্গেট কর্তৃক এপিআই কলটি সম্পন্ন হতে যে সময় লাগে।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে।
৪. ক্লায়েন্টের প্রতি বহির্গামী প্রতিক্রিয়ার নমুনা
1436403888676 info res s=200, d=11, i=0
1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- res - ঘটনাটিকে শনাক্ত করে। এক্ষেত্রে, ক্লায়েন্টের প্রতি প্রতিক্রিয়া।
- s - HTTP প্রতিক্রিয়ার স্থিতি।
- d - সময়কাল, মিলিসেকেন্ডে। এটি হলো এপিআই কলটির মোট সময়, যার মধ্যে টার্গেট এপিআই এবং এজ মাইক্রোগেটওয়ের নিজস্ব সময় অন্তর্ভুক্ত।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে।
লগ ফাইল সময়সূচী
`rotate_interval` কনফিগারেশন অ্যাট্রিবিউট দ্বারা নির্দিষ্ট বিরতিতে লগ ফাইলগুলি ঘোরানো হয়। ঘূর্ণন বিরতির মেয়াদ শেষ না হওয়া পর্যন্ত একই লগ ফাইলে এন্ট্রি যুক্ত হতে থাকবে। তবে, প্রতিবার Edge Microgateway পুনরায় চালু হলে এটি একটি নতুন UID পায় এবং এই UID দিয়ে নতুন এক সেট লগ ফাইল তৈরি করে। আরও দেখুন ‘লগ ফাইল রক্ষণাবেক্ষণের উত্তম অভ্যাস’ ।
ত্রুটির বার্তা
কিছু লগ এন্ট্রিতে ত্রুটির বার্তা থাকবে। ত্রুটিগুলো কোথায় এবং কেন ঘটছে তা শনাক্ত করতে, এজ মাইক্রোগেটওয়ে ত্রুটি রেফারেন্সটি দেখুন।
এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স
কনফিগারেশন ফাইলের অবস্থান
এই বিভাগে বর্ণিত কনফিগারেশন অ্যাট্রিবিউটগুলো এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে অবস্থিত। আরও দেখুন ‘কনফিগারেশন পরিবর্তন করা’ ।
edge_config অ্যাট্রিবিউট
এই সেটিংসগুলো Edge Microgateway ইনস্ট্যান্স এবং Apigee Edge-এর মধ্যেকার মিথস্ক্রিয়া কনফিগার করতে ব্যবহৃত হয়।
- বুটস্ট্র্যাপ : (ডিফল্ট: কোনোটি নয়) একটি ইউআরএল যা Apigee Edge-এ চলমান একটি Edge Microgateway-নির্দিষ্ট পরিষেবাকে নির্দেশ করে। Edge Microgateway, Apigee Edge-এর সাথে যোগাযোগের জন্য এই পরিষেবাটি ব্যবহার করে। আপনি যখন পাবলিক/প্রাইভেট কী পেয়ার তৈরি করার জন্য `
edgemicro genkeysকমান্ডটি চালান, তখন এই ইউআরএলটি ফেরত আসে। বিস্তারিত জানার জন্য “ Setting up and configuring Edge Microgateway” দেখুন। - jwt_public_key : (ডিফল্ট: কোনোটি নয়) একটি URL যা Apigee Edge-এ ডেপ্লয় করা Edge Microgateway প্রক্সিকে নির্দেশ করে। এই প্রক্সিটি ক্লায়েন্টদের স্বাক্ষরিত অ্যাক্সেস টোকেন দেওয়ার জন্য একটি অথেনটিকেশন এন্ডপয়েন্ট হিসেবে কাজ করে। প্রক্সি ডেপ্লয় করার জন্য ` edgemicro configure` কমান্ডটি চালালে এই URL-টি ফেরত আসে। বিস্তারিত জানতে “ Setting up and configuring Edge Microgateway” দেখুন।
- quotaUri : আপনি যদি আপনার অর্গে ডেপ্লয় করা
edgemicro-authপ্রক্সির মাধ্যমে কোটা পরিচালনা করতে চান, তাহলে এই কনফিগ প্রপার্টিটি সেট করুন। এই প্রপার্টিটি সেট করা না থাকলে, কোটা এন্ডপয়েন্ট ডিফল্টভাবে অভ্যন্তরীণ Edge Microgateway এন্ডপয়েন্ট ব্যবহার করবে।edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
এজমাইক্রো বৈশিষ্ট্য
এই সেটিংগুলো এজ মাইক্রোগেটওয়ে প্রসেসকে কনফিগার করে।
- পোর্ট : (ডিফল্ট: ৮০০০) যে পোর্ট নম্বরে এজ মাইক্রোগেটওয়ে প্রসেসটি শোনে।
- max_connections : (ডিফল্ট: -1) এটি নির্দিষ্ট করে যে Edge Microgateway একই সাথে সর্বোচ্চ কতগুলো ইনকামিং কানেকশন গ্রহণ করতে পারবে। এই সংখ্যা অতিক্রম করা হলে, নিম্নলিখিত স্ট্যাটাসটি ফেরত দেওয়া হয়:
res.statusCode = 429; // Too many requests - max_connections_hard : (ডিফল্ট: -1) সংযোগটি বন্ধ করে দেওয়ার আগে Edge Microgateway একযোগে সর্বাধিক যতগুলো অনুরোধ গ্রহণ করতে পারে। এই সেটিংটি ডিনায়াল অফ সার্ভিস আক্রমণ প্রতিরোধ করার জন্য তৈরি করা হয়েছে। সাধারণত, এটিকে max_connections-এর চেয়ে বড় কোনো সংখ্যায় সেট করুন।
- লগিং :
- স্তর : (ডিফল্ট: ত্রুটি)
- তথ্য - একটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সের মধ্য দিয়ে প্রবাহিত সমস্ত অনুরোধ এবং প্রতিক্রিয়া লগ করে।
- সতর্ক - শুধুমাত্র সতর্কতামূলক বার্তা লগ করে।
- ত্রুটি - শুধুমাত্র ত্রুটির বার্তা লগ করে।
- ডিরেক্টরি : (ডিফল্ট: /var/tmp) যে ডিরেক্টরিতে লগ ফাইলগুলো সংরক্ষিত হয়।
- stats_log_interval : (ডিফল্ট: ৬০) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ডটি এপিআই লগ ফাইলে লেখা হয়।
- rotate_interval : (ডিফল্ট: ২৪) লগ ফাইল ঘোরানোর ব্যবধান, ঘণ্টায়।
- স্তর : (ডিফল্ট: ত্রুটি)
- প্লাগইন : প্লাগইনগুলি এজ মাইক্রোগেটওয়েতে কার্যকারিতা যোগ করে। প্লাগইন তৈরি করার বিষয়ে বিস্তারিত জানতে, কাস্টম প্লাগইন তৈরি করুন দেখুন।
- dir : ./gateway ডিরেক্টরি থেকে ./plugins ডিরেক্টরি পর্যন্ত একটি আপেক্ষিক পথ, অথবা একটি পরম পথ।
- ক্রম : আপনার এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সে যোগ করার জন্য প্লাগইন মডিউলগুলির একটি তালিকা। মডিউলগুলি এখানে নির্দিষ্ট করা ক্রমেই কার্যকর হবে।
- ডিবাগ: এজ মাইক্রোগেটওয়ে প্রসেসে রিমোট ডিবাগিং যোগ করে।
- পোর্ট : যে পোর্ট নম্বরে লিসেন করতে হবে। উদাহরণস্বরূপ, আপনার IDE ডিবাগারকে এই পোর্টে লিসেন করার জন্য সেট করুন।
- args : ডিবাগ প্রক্রিয়ার জন্য আর্গুমেন্ট। উদাহরণস্বরূপ:
args --nolazy
- config_change_poll_interval: (ডিফল্ট: ৬০০ সেকেন্ড) Edge Microgateway পর্যায়ক্রমে একটি নতুন কনফিগারেশন লোড করে এবং কোনো পরিবর্তন হলে রিলোড করে। এই পোলিং Edge-এ করা যেকোনো পরিবর্তন (যেমন প্রোডাক্ট, মাইক্রোগেটওয়ে-অ্যাওয়্যার প্রক্সি ইত্যাদির পরিবর্তন) এবং সেইসাথে স্থানীয় কনফিগারেশন ফাইলে করা পরিবর্তনগুলোও শনাক্ত করে।
- disable_config_poll_interval: (ডিফল্ট: 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-এ যোগ করা হয়েছে)
হেডার অ্যাট্রিবিউট
এই সেটিংসগুলো নির্ধারণ করে যে নির্দিষ্ট HTTP হেডারগুলোকে কীভাবে বিবেচনা করা হবে।
- x-forwarded-for : (ডিফল্ট: true) টার্গেটে x-forwarded-for হেডার পাঠানো আটকাতে এটিকে false-এ সেট করুন। মনে রাখবেন, যদি রিকোয়েস্টে কোনো x-forwarded-for হেডার থাকে, তাহলে Edge Analytics-এ এর ভ্যালু client-ip ভ্যালুতে সেট করা হবে।
- x-forwarded-host : (ডিফল্ট: true) টার্গেটে x-forwarded-host হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
- x-request-id : (ডিফল্ট: true) টার্গেটে x-request-id হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
- x-response-time : (ডিফল্ট: true) টার্গেটে x-response-time হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
- via : (ডিফল্ট: true) টার্গেটে via হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
ওঅথ অ্যাট্রিবিউট
এই সেটিংগুলো নির্ধারণ করে যে এজ মাইক্রোগেটওয়ে কীভাবে ক্লায়েন্ট প্রমাণীকরণ প্রয়োগ করবে।
- allowNoAuthorization : (ডিফল্ট: false) যদি এটি true সেট করা হয়, তাহলে API কলগুলো কোনো Authorization হেডার ছাড়াই Edge Microgateway-এর মধ্য দিয়ে যেতে পারবে। Authorization হেডার আবশ্যক করতে এটি false সেট করুন (ডিফল্ট)।
- allowInvalidAuthorization : (ডিফল্ট: false) যদি এটি true সেট করা হয়, তাহলে Authorization হেডারে দেওয়া টোকেনটি অবৈধ বা মেয়াদোত্তীর্ণ হলেও API কলগুলোকে পাস করার অনুমতি দেওয়া হবে। বৈধ টোকেন আবশ্যক করতে এটি false সেট করুন (ডিফল্ট)।
- অথরাইজেশন-হেডার : (ডিফল্ট: Authorization: Bearer) এজ মাইক্রোগেটওয়েতে অ্যাক্সেস টোকেন পাঠানোর জন্য ব্যবহৃত হেডার। যদি টার্গেটের অন্য কোনো উদ্দেশ্যে Authorization হেডারটি ব্যবহার করার প্রয়োজন হয়, তবে আপনি ডিফল্টটি পরিবর্তন করতে চাইতে পারেন।
- api-key-header : (ডিফল্ট: x-api-key) Edge Microgateway-তে একটি API কী পাঠানোর জন্য ব্যবহৃত হেডার বা কোয়েরি প্যারামিটারের নাম। আরও দেখুন একটি API কী ব্যবহার করা ।
- keep-authorization-header : (ডিফল্ট: false) যদি এটি true সেট করা হয়, তাহলে অনুরোধে পাঠানো Authorization হেডারটি টার্গেটে পাঠানো হয় (এটি সংরক্ষিত থাকে)।
- allowOAuthOnly -- যদি এটি 'true' সেট করা হয়, তাহলে প্রতিটি API-কে অবশ্যই একটি Bearer Access Token সহ Authorization হেডার বহন করতে হবে। এটি আপনাকে শুধুমাত্র OAuth নিরাপত্তা মডেল ব্যবহারের অনুমতি দেয় (পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যতা বজায় রেখে)। (২.৪.x সংস্করণে যুক্ত করা হয়েছে)
- allowAPIKeyOnly -- যদি এটি 'true' সেট করা হয়, তাহলে প্রতিটি API-কে অবশ্যই একটি x-api-key হেডার (অথবা একটি কাস্টম লোকেশন) এবং একটি API Key বহন করতে হবে। এটি আপনাকে শুধুমাত্র API key নিরাপত্তা মডেলকে অনুমতি দেওয়ার সুযোগ দেয় (ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রেখে)। (২.৪.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":[
]
}
]
}অ্যানালিটিক্স পুশ ফ্রিকোয়েন্সি কনফিগার করা
Edge Microgateway কত ঘন ঘন Apigee-তে অ্যানালিটিক্স ডেটা পাঠাবে তা নিয়ন্ত্রণ করতে এই কনফিগারেশন প্যারামিটারগুলি ব্যবহার করুন:
- বাফারসাইজ (ঐচ্ছিক): সবচেয়ে পুরোনো রেকর্ডগুলো বাদ দেওয়া শুরু করার আগে বাফারটি সর্বাধিক যতগুলো অ্যানালিটিক্স রেকর্ড ধারণ করতে পারে। ডিফল্ট: ১০০০০
- batchSize (ঐচ্ছিক): Apigee-তে পাঠানো অ্যানালিটিক্স রেকর্ডের ব্যাচের সর্বোচ্চ আকার। ডিফল্ট: ৫০০
- flushInterval (ঐচ্ছিক): Apigee-তে পাঠানো অ্যানালিটিক্স রেকর্ডের প্রতিটি ব্যাচ ফ্লাশ করার মধ্যবর্তী মিলিসেকেন্ডের সংখ্যা। ডিফল্ট: ৫০০০
উদাহরণস্বরূপ:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
মাস্কিং অ্যানালিটিক্স ডেটা
নিম্নলিখিত কনফিগারেশনটি এজ অ্যানালিটিক্সে রিকোয়েস্ট পাথের তথ্য প্রদর্শিত হওয়া থেকে বিরত রাখে। রিকোয়েস্ট URI এবং/অথবা রিকোয়েস্ট পাথ মাস্ক করতে মাইক্রোগেটওয়ে কনফিগারেশনে নিম্নলিখিতটি যোগ করুন। মনে রাখবেন যে, URI-টি রিকোয়েস্টের হোস্টনেম এবং পাথ অংশ নিয়ে গঠিত।
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
এজ অ্যানালিটিক্সে এপিআই কল পৃথকীকরণ
আপনি অ্যানালিটিক্স প্লাগইনটি কনফিগার করে একটি নির্দিষ্ট API পাথকে আলাদা করতে পারেন, যাতে এটি Edge Analytics ড্যাশবোর্ডগুলিতে একটি পৃথক প্রক্সি হিসাবে প্রদর্শিত হয়। উদাহরণস্বরূপ, আপনি ড্যাশবোর্ডে একটি হেলথ চেক API-কে আলাদা করতে পারেন, যাতে এটিকে আসল API প্রক্সি কলের সাথে গুলিয়ে ফেলা না হয়। অ্যানালিটিক্স ড্যাশবোর্ডে, আলাদা করা প্রক্সিগুলি এই নামকরণের ধরণ অনুসরণ করে:
edgemicro_proxyname-health
নিম্নলিখিত চিত্রটি অ্যানালিটিক্স ড্যাশবোর্ডে দুটি পৃথক প্রক্সি দেখাচ্ছে: edgemicro_hello-health এবং edgemicro_mock-health :

অ্যানালিটিক্স ড্যাশবোর্ডে রিলেটিভ এবং অ্যাবসোলিউট পাথকে আলাদা প্রক্সি হিসেবে পৃথক করতে এই প্যারামিটারগুলো ব্যবহার করুন:
- relativePath (ঐচ্ছিক): অ্যানালিটিক্স ড্যাশবোর্ডে আলাদা করার জন্য একটি আপেক্ষিক পথ নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি আপনি
/healthcheckনির্দিষ্ট করেন, তাহলে/healthcheckপথযুক্ত সমস্ত API কল ড্যাশবোর্ডেedgemicro_ proxyname -healthহিসাবে প্রদর্শিত হবে। মনে রাখবেন যে এই ফ্ল্যাগটি প্রক্সি বেসপাথকে উপেক্ষা করে। বেসপাথ সহ একটি সম্পূর্ণ পথের উপর ভিত্তি করে আলাদা করতে,proxyPathফ্ল্যাগটি ব্যবহার করুন। - proxyPath (ঐচ্ছিক): অ্যানালিটিক্স ড্যাশবোর্ডে আলাদা করার জন্য, প্রক্সি বেসপাথ সহ একটি সম্পূর্ণ API প্রক্সি পাথ নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি আপনি
/mocktarget/healthcheckনির্দিষ্ট করেন, যেখানে/mocktargetহলো প্রক্সি বেসপাথ, তাহলে/mocktarget/healthcheckপাথের সমস্ত API কল ড্যাশবোর্ডেedgemicro_ proxyname -healthহিসাবে প্রদর্শিত হবে।
উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনে, যে কোনো API পাথ যাতে /healthcheck অন্তর্ভুক্ত থাকবে, তা অ্যানালিটিক্স প্লাগইন দ্বারা পৃথক করা হবে। এর মানে হলো, অ্যানালিটিক্স ড্যাশবোর্ডে /foo/healthcheck এবং /foo/bar/healthcheck 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কোম্পানির ফায়ারওয়ালের পিছনে এজ মাইক্রোগেটওয়ে স্থাপন করা
Apigee Edge-এর সাথে যোগাযোগের জন্য একটি HTTP প্রক্সি ব্যবহার করুন।
সংস্করণ ৩.১.২-এ যোগ করা হয়েছে।
Edge Microgateway এবং Apigee Edge-এর মধ্যে যোগাযোগের জন্য একটি HTTP প্রক্সি ব্যবহার করতে, নিম্নলিখিতগুলি করুন:
-
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
- Edge Microgateway পুনরায় চালু করুন।
লক্ষ্যবস্তুর সাথে যোগাযোগের জন্য HTTP প্রক্সি ব্যবহার করুন
সংস্করণ ৩.১.২-এ যোগ করা হয়েছে।
Edge Microgateway এবং ব্যাকএন্ড টার্গেটগুলির মধ্যে যোগাযোগের জন্য একটি HTTP প্রক্সি ব্যবহার করতে, নিম্নলিখিতগুলি করুন:
- মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নিম্নলিখিত কনফিগারেশনটি যোগ করুন:
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | falseকোথায়:
- টানেল : (ঐচ্ছিক) যখন 'true' হয়, এজ মাইক্রোগেটওয়ে একটিমাত্র TCP সংযোগের মাধ্যমে HTTP অনুরোধগুলিকে টানেল করতে HTTP CONNECT পদ্ধতি ব্যবহার করে। (নিচে উল্লিখিত প্রক্সি কনফিগার করার জন্য এনভায়রনমেন্ট ভেরিয়েবলগুলি TLS সক্রিয় করা থাকলেও একই কথা প্রযোজ্য)। ডিফল্ট:
false - url : HTTP প্রক্সি ইউআরএল।
- বাইপাস : (ঐচ্ছিক) এক বা একাধিক কমা-দ্বারা-বিভক্ত টার্গেট হোস্ট ইউআরএল নির্দিষ্ট করে, যেগুলো HTTP প্রক্সিকে বাইপাস করবে। যদি এই প্রপার্টিটি সেট করা না থাকে, তাহলে কোন টার্গেট ইউআরএলগুলো বাইপাস করতে হবে তা নির্দিষ্ট করার জন্য NO_PROXY এনভায়রনমেন্ট ভেরিয়েবলটি ব্যবহার করুন।
- enabled : যদি true হয় এবং
proxy.urlসেট করা থাকে, তাহলে HTTP প্রক্সির জন্যproxy.urlভ্যালুটি ব্যবহার করুন। যদি true হয় এবংproxy.urlসেট করা না থাকে, তাহলে "Use an HTTP proxy for communication with Apigee Edge" অংশে বর্ণিত HTTP প্রক্সি এনভায়রনমেন্ট ভেরিয়েবলHTTP_PROXYএবংHTTPS_PROXYতে নির্দিষ্ট করা প্রক্সিগুলো ব্যবহার করুন।
উদাহরণস্বরূপ:
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true - টানেল : (ঐচ্ছিক) যখন 'true' হয়, এজ মাইক্রোগেটওয়ে একটিমাত্র TCP সংযোগের মাধ্যমে HTTP অনুরোধগুলিকে টানেল করতে HTTP CONNECT পদ্ধতি ব্যবহার করে। (নিচে উল্লিখিত প্রক্সি কনফিগার করার জন্য এনভায়রনমেন্ট ভেরিয়েবলগুলি TLS সক্রিয় করা থাকলেও একই কথা প্রযোজ্য)। ডিফল্ট:
- Edge Microgateway পুনরায় চালু করুন।
মাইক্রোগেটওয়ে-সচেতন প্রক্সিতে ওয়াইল্ডকার্ড ব্যবহার
আপনি একটি edgemicro_* (মাইক্রোগেটওয়ে-অ্যাওয়ার) প্রক্সির বেস পাথে এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, /team/*/members- এর একটি বেস পাথ ক্লায়েন্টদেরকে https://[host]/team/blue/members এবং https://[host]/team/green/members কল করার সুযোগ দেয়, যার জন্য নতুন টিমগুলোকে সাপোর্ট করার জন্য আপনাকে নতুন এপিআই প্রক্সি তৈরি করতে হয় না। উল্লেখ্য যে /**/ সমর্থিত নয়।
গুরুত্বপূর্ণ: Apigee বেস পাথের প্রথম উপাদান হিসেবে ওয়াইল্ডকার্ড "*" ব্যবহার সমর্থন করে না। উদাহরণস্বরূপ, এটি সমর্থিত নয়: /*/ search।
ঘূর্ণায়মান JWT কী
প্রাথমিকভাবে একটি JWT তৈরি করার কিছু সময় পরে, Edge এনক্রিপ্টেড KVM-এ সংরক্ষিত পাবলিক/প্রাইভেট কী পেয়ারটি পরিবর্তন করার প্রয়োজন হতে পারে। নতুন কী পেয়ার তৈরি করার এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়।
Edge Microgateway কীভাবে JWT ব্যবহার করে
JSON ওয়েব টোকেন (JWT) হলো RFC7519- এ বর্ণিত একটি টোকেন স্ট্যান্ডার্ড। JWT একগুচ্ছ ক্লেইম স্বাক্ষর করার একটি উপায় প্রদান করে, যা JWT-এর প্রাপক দ্বারা নির্ভরযোগ্যভাবে যাচাই করা যায়।
Edge Microgateway, OAuth নিরাপত্তার জন্য বিয়ারার টোকেন হিসেবে JWT ব্যবহার করে। যখন আপনি Edge Microgateway-এর জন্য একটি OAuth টোকেন তৈরি করেন, তখন আপনি একটি JWT ফেরত পান। এরপর আপনি API কলের Authorization হেডারে সেই JWT ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
একটি নতুন JWT তৈরি করা হচ্ছে
আপনি edgemicro token কমান্ড অথবা একটি API ব্যবহার করে Edge Microgateway-এর জন্য একটি JWT তৈরি করতে পারেন। উদাহরণস্বরূপ:
edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
এই কমান্ডটি Apigee Edge-কে একটি JWT তৈরি করতে বলে, যা পরবর্তীতে API কল যাচাই করার জন্য ব্যবহার করা যেতে পারে। -i এবং -s প্যারামিটারগুলো হলো আপনার Apigee Edge অর্গানাইজেশনের অন্তর্ভুক্ত কোনো ডেভেলপার অ্যাপের কনজিউমার আইডি এবং সিক্রেট ভ্যালু।
অথবা, আপনি ম্যানেজমেন্ট এপিআই ব্যবহার করেও একটি JWT তৈরি করতে পারেন:
curl -i -X POST "http://$ORG-$ENV.apigee.net/edgemicro-auth/token" \ -H "Content-Type: application/json" \ -d '{ "$CLIENT_ID": "your consumer key", "$CLIENT_SECRET": "your consumer secret", "grant_type": "client_credentials" }'
কোথায়:
- $ORG হলো আপনার Edge অর্গানাইজেশনের নাম (আপনাকে অবশ্যই একজন অর্গ অ্যাডমিনিস্ট্রেটর হতে হবে)।
- $ENV হলো আপনার অর্গের একটি এনভায়রনমেন্ট (যেমন "test" বা "prod")।
- $CLIENT_ID হলো আপনার পূর্বে তৈরি করা ডেভেলপার অ্যাপের কনজিউমার আইডি।
- $CLIENT_SECRET হলো আপনার পূর্বে তৈরি করা ডেভেলপার অ্যাপের কনজিউমার সিক্রেট।
কী রোটেশন কী?
প্রাথমিকভাবে একটি JWT তৈরি করার কিছু সময় পরে, আপনার Edge এনক্রিপ্টেড KVM-এ সংরক্ষিত পাবলিক/প্রাইভেট কী পেয়ার পরিবর্তন করার প্রয়োজন হতে পারে। নতুন কী পেয়ার তৈরি করার এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়। যখন আপনি কী রোটেশন করেন, তখন একটি নতুন প্রাইভেট/পাবলিক কী পেয়ার তৈরি হয় এবং আপনার Apigee Edge অর্গানাইজেশন/এনভায়রনমেন্টের "মাইক্রোগেটওয়ে" KVM-এ সংরক্ষিত হয়। এছাড়াও, পুরানো পাবলিক কী-টি তার আসল কী আইডি মান সহ সংরক্ষিত থাকে।
একটি JWT তৈরি করতে, Edge এনক্রিপ্টেড KVM-এ সংরক্ষিত তথ্য ব্যবহার করে। আপনি যখন প্রথমবার Edge মাইক্রোগেটওয়ে সেট আপ (কনফিগার) করেন, তখন microgateway নামক একটি KVM তৈরি করা হয় এবং কী (key) দিয়ে তা পূর্ণ করা হয়। KVM-এর কীগুলো একটি JWT-কে সাইন ও এনক্রিপ্ট করতে ব্যবহৃত হয়।
KVM কীগুলির মধ্যে রয়েছে:
private_key - JWT-তে স্বাক্ষর করতে ব্যবহৃত সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) RSA প্রাইভেট কী।
পাবলিক_কী - প্রাইভেট_কী দিয়ে স্বাক্ষরিত JWT-গুলো যাচাই করার জন্য ব্যবহৃত সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) সার্টিফিকেট।
private_key_kid - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি করা) প্রাইভেট কী আইডি। এই কী আইডিটি private_key ভ্যালুর সাথে যুক্ত থাকে এবং কী রোটেশন সমর্থন করার জন্য ব্যবহৃত হয়।
public_key1_kid - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি করা) পাবলিক কী আইডি। এই কী-টি public_key1 ভ্যালুর সাথে যুক্ত থাকে এবং কী রোটেশন সমর্থন করার জন্য ব্যবহৃত হয়। এই ভ্যালুটি প্রাইভেট কী কিড-এর সমান।
public_key1 - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি করা) পাবলিক কী।
যখন আপনি কী রোটেশন করেন, তখন ম্যাপে বিদ্যমান কী ভ্যালুগুলো প্রতিস্থাপিত হয় এবং পুরোনো পাবলিক কীগুলো ধরে রাখার জন্য নতুন কী যোগ করা হয়। উদাহরণস্বরূপ:
public_key2_kid - পুরোনো পাবলিক কী আইডি। এই কী-টি public_key2 ভ্যালুর সাথে যুক্ত এবং কী রোটেশন সমর্থন করার জন্য ব্যবহৃত হয়।
public_key2 - পুরাতন পাবলিক কী।
যাচাইয়ের জন্য উপস্থাপিত JWT-গুলো নতুন পাবলিক কী ব্যবহার করে যাচাই করা হবে। যদি যাচাইকরণ ব্যর্থ হয়, তাহলে পুরোনো পাবলিক কী-টি ব্যবহার করা হবে, যতক্ষণ না সেটির মেয়াদ শেষ হয় (৩০ মিনিট পর)। এইভাবে, আপনি API ট্র্যাফিককে তাৎক্ষণিকভাবে ব্যাহত না করেই কী-গুলো "পরিবর্তন" করতে পারেন।
কী রোটেশন কীভাবে করবেন
এই অংশে কী রোটেশন কীভাবে করতে হয় তা ব্যাখ্যা করা হয়েছে।
আপনি যদি আপনার Edge Microgateway ইনস্ট্যান্সটি সংস্করণ 2.5.2-এর আগে কনফিগার করে থাকেন
যদি আপনি আপনার Edge Microgateway ইনস্ট্যান্সটি সংস্করণ 2.5.2-এর আগে কনফিগার করে থাকেন, তাহলে KVM এবং প্রমাণীকরণ নীতি আপগ্রেড করার জন্য আপনাকে অবশ্যই নিম্নলিখিত দুটি কমান্ড চালাতে হবে:
upgradekvm -o $ORG -e $ENV -u $USERNAME
এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, KVM আপগ্রেড করা দেখুন।
পরবর্তী কমান্ডটি edgemicro-oauth প্রক্সিটিকে আপগ্রেড করে, যেটি আপনি Edge Microgateway কনফিগার করার সময় আপনার Apigee অর্গে স্থাপন করা হয়েছিল। এই প্রক্সিটি টোকেন তৈরি করার জন্য প্রয়োজনীয় পরিষেবাগুলো সরবরাহ করে।
upgradeauth -o $ORG -e $ENV -u $USERNAME
এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, edgemicro-auth প্রক্সি আপগ্রেড করা দেখুন।
কীগুলো ঘোরানো
আপনার ~/.edgemicro/org-env-config.yaml ফাইলে নিম্নলিখিত লাইনটি যোগ করুন, যেখানে আপনাকে অবশ্যই সেই একই অর্গানাইজেশন এবং এনভায়রনমেন্ট উল্লেখ করতে হবে যা আপনি মাইক্রোগেটওয়ে ব্যবহারের জন্য কনফিগার করেছেন:
jwk_public_keys: 'https://org-env.apigee.net/edgemicro-auth/jwkPublicKeys'
কীগুলো ঘোরানোর জন্য কী রোটেশন কমান্ডটি চালান। (এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, ‘কী ঘোরানো’ দেখুন।)
edgemicro rotatekey -o $ORG -e $ENV -u $USERNAME -k $KID_VALUE
উদাহরণস্বরূপ:
edgemicro rotatekey -o jdoe -e test -u jdoe@google.com -k 2 current nodejs version is v12.5.0 current edgemicro version is 3.1.0 password: Checking if private key exists in the KVM... Checking for certificate... Found Certificate Generating New key/cert pair... Extract new public key Key Rotation successfully completed!
-k প্যারামিটারটি একটি কী আইডি (kid) নির্দিষ্ট করে। এই আইডিটি একটি নির্দিষ্ট কী মেলানোর জন্য ব্যবহৃত হয়। কী রোটেশনের সময় একগুচ্ছ কী-এর মধ্য থেকে বেছে নেওয়ার জন্য এজ মাইক্রোগেটওয়ে এই মানটি ব্যবহার করে। আরও তথ্যের জন্য, JSON ওয়েব কী স্পেসিফিকেশনের ৪.৫ অনুচ্ছেদ দেখুন।
কী রোটেশনের পরে, Edge, Edge মাইক্রোগেটওয়েতে একাধিক কী ফেরত দেয়। নিচের উদাহরণে লক্ষ্য করুন, প্রতিটি কী-এর একটি অনন্য "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"
}
]
}ডাউনলোড করা প্রক্সি ফিল্টার করা
ডিফল্টরূপে, Edge Microgateway আপনার Edge অর্গানাইজেশনের সেই সমস্ত প্রক্সি ডাউনলোড করে, যেগুলোর নাম "edgemicro_" প্রিফিক্স দিয়ে শুরু হয়। আপনি এই ডিফল্টটি পরিবর্তন করে এমন প্রক্সি ডাউনলোড করতে পারেন, যেগুলোর নাম একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে।
- আপনার Edge Micro কনফিগারেশন ফাইলটি খুলুন:
~/.edgemicro/org-env-config.yaml - edge_config-এর অধীনে proxyPattern এলিমেন্টটি যোগ করুন। উদাহরণস্বরূপ, নিম্নলিখিত প্যাটার্নটি edgemicro_foo, edgemicro_fast, এবং edgemicro_first-এর মতো প্রক্সিগুলো ডাউনলোড করবে।
edge_config: … proxyPattern: edgemicro_f*
এপিআই প্রক্সি ছাড়া পণ্য নির্দিষ্ট করা
Apigee Edge-এ, আপনি এমন একটি API প্রোডাক্ট তৈরি করতে পারেন যাতে কোনো API প্রক্সি থাকে না। এই প্রোডাক্ট কনফিগারেশনটি সেই প্রোডাক্টের সাথে যুক্ত একটি API কী-কে আপনার প্রতিষ্ঠানে স্থাপন করা যেকোনো প্রক্সির সাথে কাজ করার সুযোগ দেয়। সংস্করণ ২.৫.৪ থেকে, Edge Microgateway এই প্রোডাক্ট কনফিগারেশনটি সমর্থন করে।
ডিবাগিং এবং সমস্যা সমাধান
ডিবাগারের সাথে সংযোগ স্থাপন
আপনি নোড-ইনস্পেক্টরের মতো একটি ডিবাগারের সাহায্যে এজ মাইক্রোগেটওয়ে চালাতে পারেন। এটি কাস্টম প্লাগইনগুলির সমস্যা সমাধান এবং ডিবাগ করার জন্য উপযোগী।
- 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
- আপনার ডিবাগারটি চালু করুন এবং ডিবাগিং প্রক্রিয়ার জন্য এটিকে নির্দিষ্ট পোর্ট নম্বরে শোনার জন্য সেট করুন।
- এখন আপনি Edge Microgateway কোডের প্রতিটি ধাপ পরীক্ষা করতে, ব্রেকপয়েন্ট সেট করতে, এক্সপ্রেশন পর্যবেক্ষণ করতে এবং আরও অনেক কিছু করতে পারবেন।
আপনি ডিবাগ মোড সম্পর্কিত সাধারণ Node.js ফ্ল্যাগগুলো নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ, --nolazy অ্যাসিঙ্ক্রোনাস কোড ডিবাগ করতে সাহায্য করে।
লগ ফাইল পরীক্ষা করা হচ্ছে
যদি আপনার কোনো সমস্যা হয়, তাহলে কার্য সম্পাদনের বিবরণ এবং ত্রুটির তথ্যের জন্য লগ ফাইলগুলো অবশ্যই পরীক্ষা করুন। বিস্তারিত জানতে, ‘লগ ফাইল ব্যবস্থাপনা’ দেখুন।
এপিআই কী নিরাপত্তা ব্যবহার করে
এজ মাইক্রোগেটওয়েতে অনুরোধকারী ক্লায়েন্টদের প্রমাণীকরণের জন্য এপিআই কী একটি সহজ পদ্ধতি প্রদান করে। এজ মাইক্রোগেটওয়ে প্রমাণীকরণ প্রক্সি অন্তর্ভুক্ত রয়েছে এমন একটি Apigee Edge প্রোডাক্ট থেকে কনজিউমার কী (যাকে ক্লায়েন্ট আইডি-ও বলা হয়) ভ্যালুটি কপি করে আপনি একটি এপিআই কী পেতে পারেন।
কীগুলির ক্যাশিং
এপিআই কী-এর বিনিময়ে বেয়ারার টোকেন দেওয়া হয়, যা ক্যাশ করা থাকে। এজ মাইক্রোগেটওয়েতে আসা রিকোয়েস্টগুলোতে Cache-Control: no-cache হেডার সেট করে আপনি ক্যাশিং নিষ্ক্রিয় করতে পারেন।
একটি এপিআই কী ব্যবহার করে
আপনি একটি এপিআই অনুরোধে এপিআই কী-টি কোয়েরি প্যারামিটার হিসেবে অথবা হেডারে পাস করতে পারেন। ডিফল্টরূপে, হেডার এবং কোয়েরি প্যারামিটারের নাম উভয়ই x-api-key হয়ে থাকে।
কোয়েরি প্যারামিটারের উদাহরণ:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
হেডারের উদাহরণ:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
এপিআই কী-এর নাম কনফিগার করা
ডিফল্টরূপে, x-api-key নামটি এপিআই কী হেডার এবং কোয়েরি প্যারামিটার উভয়ের জন্যই ব্যবহৃত হয়। কনফিগারেশন ফাইলে আপনি এই ডিফল্টটি পরিবর্তন করতে পারেন, যেমনটি "কনফিগারেশন পরিবর্তন করা " অংশে ব্যাখ্যা করা হয়েছে। উদাহরণস্বরূপ, নামটি apiKey- তে পরিবর্তন করতে:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
এই উদাহরণে, কোয়েরি প্যারামিটার এবং হেডার নেম উভয়ই apiKey তে পরিবর্তন করা হয়েছে। x-api-key নামটি কোনো ক্ষেত্রেই আর কাজ করবে না। আরও দেখুন কনফিগারেশন পরিবর্তন করা ।
উদাহরণস্বরূপ:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
প্রক্সি অনুরোধের সাথে এপিআই কী ব্যবহার সম্পর্কে আরও তথ্যের জন্য, সিকিউর এজ মাইক্রোগেটওয়ে দেখুন।
আপস্ট্রিম প্রতিক্রিয়া কোডগুলি সক্রিয় করুন
ডিফল্টরূপে, রেসপন্সের স্ট্যাটাস 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 সম্পর্কে বিস্তারিত জানতে, Managing tokens দেখুন।
এপিআই ১: বডি প্যারামিটার হিসেবে ক্রেডেনশিয়াল পাঠান
URL-এ আপনার org এবং environment-এর নাম বসান, এবং Apigee Edge-এর একটি ডেভেলপার অ্যাপ থেকে প্রাপ্ত Consumer Id ও Consumer Secret-এর মানগুলি 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"
এপিআই ২: বেসিক অথেন্টিকেশন হেডারে ক্রেডেনশিয়াল পাঠান
ক্লায়েন্টের ক্রেডেনশিয়ালগুলো বেসিক অথেনটিকেশন হেডার হিসেবে এবং grant_type ফর্ম প্যারামিটার হিসেবে পাঠান। এই কমান্ড ফর্মটি RFC 6749: The OAuth 2.0 Authorization Framework- এও আলোচনা করা হয়েছে।
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
নমুনা আউটপুট
এপিআইটি একটি JSON রেসপন্স ফেরত দেয়। উল্লেখ্য যে,token এবং access_token প্রপার্টিগুলোর মধ্যে কোনো পার্থক্য নেই। আপনি যেকোনো একটি ব্যবহার করতে পারেন। { "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": "108000" }
কীভাবে একটি রিফ্রেশ টোকেন পাবেন
একটি রিফ্রেশ টোকেন পেতে, edgemicro-auth প্রক্সির /token এন্ডপয়েন্টে একটি API কল করুন। আপনাকে অবশ্যই password গ্রান্ট টাইপ ব্যবহার করে এই API কলটি করতে হবে। নিম্নলিখিত ধাপগুলোতে এই প্রক্রিয়াটি বর্ণনা করা হলো।
-
/tokenAPI ব্যবহার করে একটি অ্যাক্সেস এবং রিফ্রেশ টোকেন পান। মনে রাখবেন যে গ্রান্ট টাইপটি হলো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" }'এপিআইটি একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন ফেরত দেয়। প্রতিক্রিয়াটি দেখতে অনেকটা এইরকম:
{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": "108000", "refresh_token": "your-refresh-token", "refresh_token_expires_in": "431999", "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" } - এখন আপনি একই 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" }'এপিআই একটি নতুন অ্যাক্সেস টোকেন ফেরত দেয়। প্রতিক্রিয়াটি দেখতে অনেকটা এইরকম:
{ "token": "your-new-access-token" }
চিরস্থায়ী পর্যবেক্ষণ
Forever হলো একটি Node.js টুল যা কোনো প্রসেস বন্ধ হয়ে গেলে বা তাতে কোনো ত্রুটি দেখা দিলে স্বয়ংক্রিয়ভাবে একটি Node.js অ্যাপ পুনরায় চালু করে। Edge Microgateway-এর একটি forever.json ফাইল আছে, যা কনফিগার করে নিয়ন্ত্রণ করা যায় যে Edge Microgateway কতবার এবং কী বিরতিতে পুনরায় চালু হবে। এই ফাইলটি forever-monitor নামক একটি Forever সার্ভিস কনফিগার করে, যা প্রোগ্রাম্যাটিকভাবে Forever-কে পরিচালনা করে।
আপনি Edge Microgateway-এর রুট ইনস্টল ডিরেক্টরিতে forever.json ফাইলটি খুঁজে পাবেন। Edge Microgateway কোথায় ইনস্টল করা আছে তা দেখুন। কনফিগারেশন অপশনগুলোর বিস্তারিত জানতে, forever-monitor ডকুমেন্টেশন দেখুন।
edgemicro forever কমান্ডে এমন কিছু ফ্ল্যাগ রয়েছে যা দিয়ে আপনি forever.json ফাইলের অবস্থান নির্দিষ্ট করতে পারেন ( -f ফ্ল্যাগ), এবং Forever মনিটরিং প্রসেসটি চালু/বন্ধ করতে পারেন ( -a ফ্ল্যাগ)। উদাহরণস্বরূপ:
edgemicro forever -f ~/mydir/forever.json -a start
আরও তথ্যের জন্য, CLI রেফারেন্সে Forever monitoring দেখুন।
একটি কনফিগারেশন ফাইল এন্ডপয়েন্ট নির্দিষ্ট করা
আপনি যদি একাধিক Edge Microgateway ইনস্ট্যান্স চালান, তাহলে আপনি সেগুলোর কনফিগারেশন একটিমাত্র জায়গা থেকে পরিচালনা করতে চাইতে পারেন। Edge Micro যেখান থেকে তার কনফিগারেশন ফাইলটি ডাউনলোড করতে পারে, সেই HTTP এন্ডপয়েন্টটি নির্দিষ্ট করে দিয়ে আপনি এটি করতে পারেন। Edge Micro চালু করার সময় -u ফ্ল্যাগ ব্যবহার করে আপনি এই এন্ডপয়েন্টটি নির্দিষ্ট করতে পারেন।
উদাহরণস্বরূপ:
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 সক্রিয় করতে, এজ মাইক্রো কনফিগ ফাইলটি নিম্নরূপভাবে সম্পাদনা করুন:
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
স্ট্যান্ডঅ্যালোন মোডে এজ মাইক্রোগেটওয়ে চালানো
আপনি যেকোনো Apigee Edge নির্ভরতা থেকে সম্পূর্ণভাবে বিচ্ছিন্ন হয়ে Edge Microgateway চালাতে পারেন। এই পরিস্থিতি, যা স্ট্যান্ডঅ্যালোন মোড নামে পরিচিত, আপনাকে ইন্টারনেট সংযোগ ছাড়াই Edge Microgateway চালানো এবং পরীক্ষা করার সুযোগ দেয়।
স্ট্যান্ডঅ্যালোন মোডে নিম্নলিখিত ফিচারগুলো কাজ করে না, কারণ এগুলোর জন্য Apigee Edge-এর সাথে সংযোগ প্রয়োজন:
- OAuth এবং API কী
- কোটা
- বিশ্লেষণ
অন্যদিকে, কাস্টম প্লাগইন এবং স্পাইক অ্যারেস্ট স্বাভাবিকভাবে কাজ করে, কারণ এগুলোর জন্য Apigee Edge-এর সাথে সংযোগের প্রয়োজন হয় না। এছাড়াও, extauth নামক একটি নতুন প্লাগইন আপনাকে স্ট্যান্ডঅ্যালোন মোডে থাকাকালীন একটি JWT ব্যবহার করে মাইক্রোগেটওয়েতে API কল অনুমোদন করার সুযোগ দেয়।
গেটওয়ে কনফিগার এবং চালু করা
Edge Microgateway-কে স্ট্যান্ডঅ্যালোন মোডে চালানোর জন্য:
- নিম্নলিখিত নামে একটি কনফিগারেশন ফাইল তৈরি করুন:
$HOME/.edgemicro/ $ORG-$ENV -config.yamlউদাহরণস্বরূপ:
vi $HOME/.edgemicro/foo-bar-config.yaml
- নিম্নলিখিত কোডটি ফাইলে পেস্ট করুন:
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 - নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলটি "1" মান দিয়ে এক্সপোর্ট করুন:
export EDGEMICRO_LOCAL=1
- নিম্নলিখিত
startকমান্ডটি চালান, যেখানে আপনি লোকাল প্রক্সি ইনস্ট্যানশিয়েট করার জন্য ভ্যালু প্রদান করবেন:edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
কোথায়:
- $ORG হলো সেই "org" নামটি যা আপনি কনফিগারেশন ফাইলের নামে ব্যবহার করেছেন।
- $ENV হলো "env" নামটি যা আপনি কনফিগারেশন ফাইলের নামে ব্যবহার করেছেন।
- $LOCAL_PROXY_NAME হলো যে লোকাল প্রক্সিটি তৈরি করা হবে তার নাম। আপনি আপনার পছন্দমতো যেকোনো নাম ব্যবহার করতে পারেন।
- $LOCAL_PROXY_VERSION হলো প্রক্সির সংস্করণ নম্বর।
- $TARGET_URL হলো প্রক্সির টার্গেটের ইউআরএল। ( টার্গেট হলো সেই সার্ভিস যাকে প্রক্সি কল করে।)
- $BASE_PATH হলো প্রক্সির বেস পাথ। এই মানটি অবশ্যই একটি ফরওয়ার্ড স্ল্যাশ দিয়ে শুরু হতে হবে। রুট বেস পাথের জন্য, শুধু একটি ফরওয়ার্ড স্ল্যাশ উল্লেখ করুন; উদাহরণস্বরূপ, "/"।
উদাহরণস্বরূপ:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- কনফিগারেশনটি পরীক্ষা করুন।
curl http://localhost:8000/echo { "error" : "missing_authorization" }যেহেতু
extauthপ্লাগইনটিfoo-bar-config.yamlফাইলে রয়েছে, তাই আপনি একটি "missing_authorization" ত্রুটি পাচ্ছেন। এই প্লাগইনটি একটি JWT যাচাই করে, যা API কলের Authorization হেডারে অবশ্যই উপস্থিত থাকতে হবে। পরবর্তী অংশে, আপনি এমন একটি JWT পাবেন যা API কলগুলোকে ত্রুটি ছাড়াই সম্পন্ন করতে দেবে।
উদাহরণ: একটি অনুমোদন টোকেন প্রাপ্তি
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে Apigee Edge-এর Edge Microgateway JWT এন্ডপয়েন্ট ( edgemicro-auth/jwkPublicKeys ) থেকে একটি JWT সংগ্রহ করতে হয়। আপনি যখন Edge Microgateway-এর একটি সাধারণ সেটআপ এবং কনফিগারেশন করেন, তখন এই এন্ডপয়েন্টটি স্থাপন করা হয়। Apigee এন্ডপয়েন্ট থেকে JWT সংগ্রহ করার জন্য, আপনাকে প্রথমে Edge Microgateway-এর সাধারণ সেটআপ করতে হবে এবং ইন্টারনেটের সাথে সংযুক্ত থাকতে হবে। এখানে Apigee এন্ডপয়েন্টটি শুধুমাত্র উদাহরণের জন্য ব্যবহার করা হয়েছে এবং এটি আবশ্যক নয়। আপনি চাইলে অন্য কোনো JWT টোকেন এন্ডপয়েন্ট ব্যবহার করতে পারেন। সেক্ষেত্রে, আপনাকে সেই এন্ডপয়েন্টের জন্য প্রদত্ত API ব্যবহার করে JWT সংগ্রহ করতে হবে।
নিম্নলিখিত ধাপগুলিতে edgemicro-auth/jwkPublicKeys এন্ডপয়েন্ট ব্যবহার করে কীভাবে একটি টোকেন পেতে হয় তা ব্যাখ্যা করা হয়েছে:
- Apigee Edge-এ আপনার সংস্থা/পরিবেশে
edgemicro-authপ্রক্সি স্থাপন করার জন্য আপনাকে অবশ্যই Edge Microgateway-এর একটি সাধারণ সেটআপ এবং কনফিগারেশন সম্পন্ন করতে হবে। আপনি যদি এই ধাপটি পূর্বে করে থাকেন, তবে এটি পুনরাবৃত্তি করার প্রয়োজন নেই। - আপনি যদি Apigee Cloud-এ Edge Microgateway স্থাপন করে থাকেন, তাহলে এই এন্ডপয়েন্ট থেকে একটি JWT পাওয়ার জন্য আপনাকে অবশ্যই ইন্টারনেটের সাথে সংযুক্ত থাকতে হবে।
- এজ মাইক্রোগেটওয়ে বন্ধ করুন:
edgemicro stop
- আপনার পূর্বে তৈরি করা কনফিগারেশন ফাইলে (
$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'
- কনফিগারেশন ফাইলের নামে ব্যবহৃত org/env নামগুলো ব্যবহার করে, আগের মতোই Edge Microgateway রিস্টার্ট করুন। উদাহরণস্বরূপ:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- অথরাইজেশন এন্ডপয়েন্ট থেকে একটি 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":""
}স্থানীয় প্রক্সি মোড ব্যবহার করে
লোকাল প্রক্সি মোডে, Apigee Edge-এ Edge Microgateway-এর জন্য কোনো মাইক্রোগেটওয়ে-অ্যাওয়্যার প্রক্সি স্থাপন করার প্রয়োজন হয় না। এর পরিবর্তে, মাইক্রোগেটওয়ে চালু করার সময় আপনি একটি লোকাল প্রক্সির নাম, বেসপাথ এবং টার্গেট ইউআরএল দিয়ে একটি "লোকাল প্রক্সি" কনফিগার করেন। এরপর মাইক্রোগেটওয়েতে করা এপিআই কলগুলো লোকাল প্রক্সির টার্গেট ইউআরএল-এ পাঠানো হয়। অন্য সব দিক থেকে, লোকাল প্রক্সি মোড ঠিক Edge Microgateway-কে তার সাধারণ মোডে চালানোর মতোই কাজ করে। অথেনটিকেশন একইভাবে কাজ করে, এবং স্পাইক অ্যারেস্ট ও কোটা এনফোর্সমেন্ট, কাস্টম প্লাগইন ইত্যাদিও একইভাবে কাজ করে।
ব্যবহারের ক্ষেত্র এবং উদাহরণ
লোকাল প্রক্সি মোড তখন উপযোগী হয় যখন আপনাকে একটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সের সাথে শুধুমাত্র একটি প্রক্সি যুক্ত করতে হয়। উদাহরণস্বরূপ, আপনি এজ মাইক্রোগেটওয়েকে একটি সাইডকার প্রক্সি হিসেবে কুবারনেটিসে ইনজেক্ট করতে পারেন, যেখানে একটি মাইক্রোগেটওয়ে এবং একটি সার্ভিস প্রতিটি একটিমাত্র পডে চলে এবং যেখানে মাইক্রোগেটওয়েটি তার সহযোগী সার্ভিসের সাথে আসা-যাওয়ার ট্র্যাফিক পরিচালনা করে। নিচের চিত্রটি এই আর্কিটেকচারটি তুলে ধরেছে যেখানে এজ মাইক্রোগেটওয়ে একটি কুবারনেটিস ক্লাস্টারে সাইডকার প্রক্সি হিসেবে কাজ করে। প্রতিটি মাইক্রোগেটওয়ে ইনস্ট্যান্স তার সহযোগী সার্ভিসের শুধুমাত্র একটিমাত্র এন্ডপয়েন্টের সাথে যোগাযোগ করে:

এই ধরনের আর্কিটেকচারের একটি সুবিধা হলো, এজ মাইক্রোগেটওয়ে একটি কন্টেইনার পরিবেশে, যেমন কুবারনেটিস ক্লাস্টারে, ডেপ্লয় করা স্বতন্ত্র সার্ভিসগুলোর জন্য এপিআই ম্যানেজমেন্ট প্রদান করে।
স্থানীয় প্রক্সি মোড কনফিগার করা
Edge Microgateway-কে লোকাল প্রক্সি মোডে চালানোর জন্য কনফিগার করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার স্থানীয় কনফিগারেশন পরিবেশ সেট আপ করতে
edgemicro initচালান, ঠিক যেমনটি আপনি একটি সাধারণ Edge Microgateway সেটআপে করে থাকেন। আরও দেখুন Edge Microgateway কনফিগার করুন । - একটি সাধারণ এজ মাইক্রোগেটওয়ে সেটআপ পদ্ধতির মতোই
edgemicro configureচালান। উদাহরণস্বরূপ:edgemicro configure -o your_org -e your_env -u your_apigee_username
এই কমান্ডটি Edge-এ edgemicro-auth পলিসি স্থাপন করে এবং একটি কী ও সিক্রেট ফেরত দেয় যা আপনার মাইক্রোগেটওয়ে শুরু করার জন্য প্রয়োজন হবে। আপনার সাহায্যের প্রয়োজন হলে, Edge মাইক্রোগেটওয়ে কনফিগার করুন দেখুন।
- Apigee Edge-এ, একটি API প্রোডাক্ট তৈরি করুন এবং নিম্নলিখিত আবশ্যিক কনফিগারেশনগুলো পূরণ করুন (অন্যান্য সমস্ত কনফিগারেশন আপনি আপনার ইচ্ছামতো পরিচালনা করতে পারেন):
- আপনাকে অবশ্যই প্রোডাক্টটিতে edgemicro-auth প্রক্সিটি যোগ করতে হবে। আপনি যখন
edgemicro configureচালিয়েছিলেন, তখন এই প্রক্সিটি স্বয়ংক্রিয়ভাবে স্থাপন করা হয়েছিল। - আপনাকে অবশ্যই একটি রিসোর্স পাথ প্রদান করতে হবে। Apigee প্রোডাক্টে এই পাথটি যোগ করার পরামর্শ দেয়:
/**। আরও জানতে, রিসোর্স পাথের আচরণ কনফিগার করা দেখুন। Edge ডকুমেন্টেশনে API প্রোডাক্ট তৈরি করাও দেখুন।
- আপনাকে অবশ্যই প্রোডাক্টটিতে edgemicro-auth প্রক্সিটি যোগ করতে হবে। আপনি যখন
Apigee Edge-এ একজন ডেভেলপার তৈরি করুন, অথবা আপনি চাইলে বিদ্যমান কোনো ডেভেলপারকেও ব্যবহার করতে পারেন। সাহায্যের জন্য, Edge ম্যানেজমেন্ট UI ব্যবহার করে ডেভেলপার যুক্ত করা দেখুন।
- Apigee Edge-এ একটি ডেভেলপার অ্যাপ তৈরি করুন। আপনাকে অবশ্যই এইমাত্র তৈরি করা API প্রোডাক্টটি অ্যাপটিতে যুক্ত করতে হবে। সাহায্যের জন্য, Edge ম্যানেজমেন্ট UI-তে একটি অ্যাপ রেজিস্টার করা দেখুন।
- যে মেশিনে Edge Microgateway ইনস্টল করা আছে, সেখানে নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলটি "1" মান দিয়ে এক্সপোর্ট করুন।
export EDGEMICRO_LOCAL_PROXY=1
- নিম্নলিখিত
startকমান্ডটি চালান:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_pathকোথায়:
- your_org হলো আপনার Apigee অর্গানাইজেশন।
- your_environment হলো আপনার প্রতিষ্ঠানের একটি পরিবেশ।
- your_key হলো সেই কী, যা
edgemicro configureচালানোর পর ফেরত এসেছিল। - your_secret হলো সেই সিক্রেট যা আপনি
edgemicro configureচালানোর পর ফেরত পেয়েছিলেন। - local_proxy_name হলো সেই লোকাল প্রক্সির নাম যা তৈরি করা হবে।
- local_proxy_version হলো প্রক্সির সংস্করণ নম্বর।
- target_url হলো প্রক্সির টার্গেটের ইউআরএল (অর্থাৎ যে সার্ভিসটিকে প্রক্সি কল করবে)।
- base_path হলো প্রক্সির বেস পাথ। এই মানটি অবশ্যই একটি ফরওয়ার্ড স্ল্যাশ দিয়ে শুরু হতে হবে। রুট বেস পাথের জন্য, শুধু একটি ফরওয়ার্ড স্ল্যাশ উল্লেখ করুন; উদাহরণস্বরূপ, "/"।
উদাহরণস্বরূপ:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
কনফিগারেশন পরীক্ষা করা হচ্ছে
আপনি প্রক্সি এন্ডপয়েন্টে কল করে স্থানীয় প্রক্সি কনফিগারেশন পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, যদি আপনি /echo বেসপাথ নির্দিষ্ট করে থাকেন, তাহলে আপনি নিম্নলিখিতভাবে প্রক্সিতে কল করতে পারেন:
curl http://localhost:8000/echo
{
"error" : "missing_authorization",
"error_description" : "Missing Authorization header"
}এই প্রাথমিক 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 মাইক্রোগেটওয়ে ইনস্ট্যান্সগুলোকে তাদের কনফিগারেশন ডেটা, যেমন API প্রক্সি এবং API প্রোডাক্ট কনফিগারেশন, পুনরুদ্ধার ও রিফ্রেশ করার জন্য Apigee Edge-এর সাথে যোগাযোগ করতে সক্ষম হতে হয়। যদি Edge-এর সাথে ইন্টারনেট সংযোগ বিচ্ছিন্ন হয়ে যায়, তাহলেও মাইক্রোগেটওয়ে ইনস্ট্যান্সগুলো কাজ চালিয়ে যেতে পারে, কারণ সর্বশেষ কনফিগারেশন ডেটা ক্যাশ করা থাকে। তবে, একটি পরিষ্কার সংযোগ ছাড়া নতুন মাইক্রোগেটওয়ে ইনস্ট্যান্স চালু হতে পারে না। এছাড়াও, ইন্টারনেট সংযোগ বিচ্ছিন্ন হওয়ার ফলে এক বা একাধিক মাইক্রোগেটওয়ে ইনস্ট্যান্স এমন কনফিগারেশন তথ্য নিয়ে চলতে পারে যা অন্যান্য ইনস্ট্যান্সের সাথে সামঞ্জস্যপূর্ণ নয়।
Edge Microgateway সিঙ্ক্রোনাইজার, Edge Microgateway ইনস্ট্যান্সগুলোকে তাদের চালু হতে এবং API প্রক্সি ট্র্যাফিক প্রসেস করার জন্য প্রয়োজনীয় কনফিগারেশন ডেটা পুনরুদ্ধার করার একটি বিকল্প ব্যবস্থা প্রদান করে। এই সিঙ্ক্রোনাইজারটি বিভিন্ন নোডে চলমান সমস্ত Edge Microgateway ইনস্ট্যান্সকে সঠিকভাবে চালু হতে এবং সিঙ্কে থাকতে সক্ষম করে, এমনকি যদি Edge Microgateway এবং Apigee Edge-এর মধ্যে ইন্টারনেট সংযোগ বিচ্ছিন্ন হয়ে যায়।
সিঙ্ক্রোনাইজার হলো এজ মাইক্রোগেটওয়ের একটি বিশেষভাবে কনফিগার করা ইনস্ট্যান্স। এর একমাত্র উদ্দেশ্য হলো অ্যাপিজি এজ-কে পোল করা (এর সময় কনফিগারযোগ্য), কনফিগারেশন ডেটা সংগ্রহ করা এবং তা একটি স্থানীয় রেডিস ডেটাবেসে লিখে রাখা। সিঙ্ক্রোনাইজার ইনস্ট্যান্সটি নিজে এপিআই প্রক্সি ট্র্যাফিক প্রসেস করতে পারে না। বিভিন্ন নোডে চলমান এজ মাইক্রোগেটওয়ের অন্যান্য ইনস্ট্যান্সগুলোকে অ্যাপিজি এজ-এর পরিবর্তে রেডিস ডেটাবেস থেকে কনফিগারেশন ডেটা সংগ্রহ করার জন্য কনফিগার করা যেতে পারে। যেহেতু সমস্ত মাইক্রোগেটওয়ে ইনস্ট্যান্স তাদের কনফিগারেশন ডেটা স্থানীয় ডেটাবেস থেকে সংগ্রহ করে, তাই ইন্টারনেট সংযোগ বিচ্ছিন্ন হলেও সেগুলো চালু হতে এবং এপিআই অনুরোধগুলো প্রসেস করতে পারে।
একটি সিঙ্ক্রোনাইজার ইনস্ট্যান্স কনফিগার করা
যে Edge Microgateway ইনস্টলেশনটিকে আপনি সিঙ্ক্রোনাইজার হিসেবে ব্যবহার করতে চান, তার org-env /config.yaml ফাইলে নিম্নলিখিত কনফিগারেশনটি যোগ করুন:
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
উদাহরণস্বরূপ:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
| বিকল্প | বর্ণনা |
|---|---|
redisHost | যে হোস্টে আপনার Redis ইনস্ট্যান্সটি চলছে। ডিফল্ট: 127.0.0.1 |
redisPort | রেডিস ইনস্ট্যান্সের পোর্ট। ডিফল্ট: ৬৩৭৯ |
redisDb | ব্যবহার করার জন্য রেডিস ডিবি। ডিফল্ট: ০ |
redisPassword | আপনার ডাটাবেস পাসওয়ার্ড। |
অবশেষে, কনফিগারেশন ফাইলটি সেভ করুন এবং Edge Microgateway ইনস্ট্যান্সটি চালু করুন। এটি Apigee Edge থেকে ডেটা সংগ্রহ করা শুরু করবে এবং ডাউনলোড করা কনফিগারেশন ডেটা Redis ডেটাবেসে সংরক্ষণ করবে।
নিয়মিত এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স কনফিগার করা
সিঙ্ক্রোনাইজার চালু থাকা অবস্থায়, আপনি এপিআই প্রক্সি ট্র্যাফিক প্রসেসকারী সাধারণ মাইক্রোগেটওয়ে ইনস্ট্যান্স চালানোর জন্য অতিরিক্ত এজ মাইক্রোগেটওয়ে নোড কনফিগার করতে পারেন। তবে, এই ইনস্ট্যান্সগুলোকে 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 | ০ অথবা ১ | যদি ০ (ডিফল্ট) হয়, এজ মাইক্রোগেটওয়ে তার স্ট্যান্ডার্ড মোডে কাজ করে। If 1, start the Edge Microgateway instance to operate as a synchronizer. In this mode, the instance will pull configuration data from Apigee Edge and store it in a local Redis database. This instance is not able to process API proxy requests; its only purpose is to poll Apigee Edge for configuration data and write it to the local database. You must then configure other microgateway instances to read from the database. |
edge_config.redisBasedConfigCache | সত্য বা মিথ্যা | If true, the Edge Microgateway instance fetches its configuration data from the Redis database instead of from Apigee Edge. The Redis database must be the same one that the synchronizer is configured to write to. If the Redis database is unavailable or if the database is empty, the microgateway looks for an existing cache-config.yaml file for its configuration.If false (the default), the Edge Microgateway instance fetches configuration data from Apigee Edge as usual. |
edgemicro.config_change_poll_interval | Time interval, in seconds | Specifies the polling interval for the synchronizer to pull data from Apigee Edge. |