আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
Apigee Edge একাধিক ব্যাকএন্ড সার্ভার দৃষ্টান্ত জুড়ে লোড ব্যালেন্সিং এবং ফেইলওভারের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে আপনার API-এর প্রাপ্যতা বাড়ায়।
TargetServer কনফিগারেশন টার্গেটএন্ডপয়েন্ট কনফিগারেশন থেকে কংক্রিট এন্ডপয়েন্ট ইউআরএলগুলিকে দ্বিগুণ করে। প্রতিটি টার্গেট সার্ভার একটি TargetEndpoint HTTP সংযোগে নাম দ্বারা উল্লেখ করা হয়। কনফিগারেশনে একটি কংক্রিট URL সংজ্ঞায়িত করার পরিবর্তে, আপনি TargetEndpoint বিভাগে বর্ণিত এক বা একাধিক নামের TargetServers কনফিগার করতে পারেন।
একটি টার্গেট সার্ভারের সংজ্ঞা একটি নাম, একটি হোস্ট এবং একটি পোর্ট নিয়ে গঠিত, যার মধ্যে একটি অতিরিক্ত উপাদান থাকে যা নির্দেশ করে যে টার্গেট সার্ভার সক্ষম বা অক্ষম করা হয়েছে।
ভিডিও
টার্গেট সার্ভার ব্যবহার করে API রাউটিং এবং লোড ব্যালেন্সিং সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিওগুলি দেখুন
ভিডিও | বর্ণনা |
---|---|
লক্ষ্য সার্ভার ব্যবহার করে ভারসাম্য লোড | লক্ষ্য সার্ভার জুড়ে ভারসাম্য API লোড করুন। |
টার্গেট সার্ভার ব্যবহার করে পরিবেশের উপর ভিত্তি করে API রাউটিং | পরিবেশের উপর ভিত্তি করে একটি ভিন্ন লক্ষ্য সার্ভারে একটি API রুট করুন। |
টার্গেট সার্ভার ব্যবহার করে API রাউটিং এবং লোড ব্যালেন্সিং (ক্লাসিক এজ) | পরিবেশের উপর ভিত্তি করে একটি ভিন্ন লক্ষ্য সার্ভারে একটি API রুট করুন এবং ক্লাসিক এজ UI-তে লক্ষ্য সার্ভার জুড়ে আপনার API ভারসাম্য লোড করুন। |
টার্গেট সার্ভার কনফিগারেশনের নমুনা
নিম্নলিখিত কোড একটি লক্ষ্য সার্ভার সংজ্ঞায়িত করে:
<TargetServer name="target1"> <Host>1.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer >
টার্গেট সার্ভার কনফিগারেশন উপাদান
নিম্নলিখিত টেবিলটি একটি টার্গেট সার্ভার তৈরি এবং কনফিগার করতে ব্যবহৃত উপাদানগুলি বর্ণনা করে:
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
name | টার্গেট সার্ভার কনফিগারেশনের নাম, যা পরিবেশের মধ্যে অনন্য হতে হবে। TargetServer নামের শুধুমাত্র বর্ণসংখ্যার অক্ষর থাকতে পারে। | N/A | হ্যাঁ |
Host | ব্যাকএন্ড পরিষেবার হোস্ট URL (প্রটোকল ছাড়া)। | N/A | হ্যাঁ |
Port | যে পোর্টে ব্যাকএন্ড পরিষেবা শুনছে | N/A | হ্যাঁ |
IsEnabled | একটি বুলিয়ান যা নির্দেশ করে যে টার্গেট সার্ভার কনফিগারেশন সক্ষম বা অক্ষম করা হয়েছে। এটি আপনাকে API প্রক্সি কনফিগারেশন পরিবর্তন না করেই টার্গেট সার্ভারকে ঘূর্ণনের বাইরে নিয়ে যেতে সক্ষম করে। একটি সাধারণ ব্যবহার একটি অ্যাপ বা স্ক্রিপ্ট লিখতে হবে যা প্রত্যাশিত ক্ষমতার প্রয়োজনীয়তা, রক্ষণাবেক্ষণের সময়সূচী ইত্যাদির উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে টার্গেট সার্ভারকে সক্ষম বা নিষ্ক্রিয় করে। | true | হ্যাঁ |
UI ব্যবহার করে লক্ষ্য সার্ভার পরিচালনা করা
লক্ষ্য সার্ভার পরিচালনা করুন, নীচে বর্ণিত হিসাবে..
প্রান্ত
এজ UI ব্যবহার করে লক্ষ্য সার্ভার পরিচালনা করতে:
- apigee.com/edge এ সাইন ইন করুন।
- বাম নেভিগেশন বারে অ্যাডমিন > পরিবেশ > টার্গেট সার্ভার নির্বাচন করুন।
- পছন্দসই পরিবেশ নির্বাচন করুন, যেমন পরীক্ষা বা পণ্য ।
- একটি লক্ষ্য সার্ভার তৈরি করতে:
- + টার্গেট সার্ভারে ক্লিক করুন।
- টার্গেট সার্ভারের জন্য একটি নাম, হোস্ট এবং পোর্ট লিখুন।
যেমন:
- নাম: টার্গেট 1
- হোস্ট: 1.mybackendservice.com
- পোর্ট: 80
- প্রয়োজনে SSL নির্বাচন করুন।
- টার্গেট সার্ভার সক্রিয় করতে সক্ষম নির্বাচন করুন।
- যোগ করুন ক্লিক করুন.
- লক্ষ্য সার্ভার সম্পাদনা করতে:
- অ্যাকশন মেনু প্রদর্শন করতে আপনি যে টার্গেট সার্ভারটি সম্পাদনা করতে চান তার উপর আপনার কার্সার রাখুন।
- ক্লিক করুন
.
- টার্গার সার্ভার মান সম্পাদনা করুন.
- আপডেট ক্লিক করুন.
- লক্ষ্য সার্ভার মুছে ফেলতে:
- আপনার কার্সার টার্গেট সার্ভারের উপর রাখুন যা আপনি অ্যাকশন মেনু প্রদর্শন করতে মুছতে চান।
- ক্লিক করুন
.
- অপারেশন নিশ্চিত করতে মুছুন ক্লিক করুন.
ক্লাসিক এজ (ব্যক্তিগত ক্লাউড)
ক্লাসিক এজ UI ব্যবহার করে প্রক্সি তৈরি করুন উইজার্ড অ্যাক্সেস করতে:
-
http:// ms-ip :9000
এ সাইন ইন করুন, যেখানে ms-ip হল ম্যানেজমেন্ট সার্ভার নোডের IP ঠিকানা বা DNS নাম। - বাম নেভিগেশন বারে APIs > এনভায়রনমেন্ট কনফিগারেশন > টার্গেট সার্ভার নির্বাচন করুন।
- পছন্দসই পরিবেশ নির্বাচন করুন, যেমন পরীক্ষা বা পণ্য ।
- একটি লক্ষ্য সার্ভার তৈরি করতে:
- সম্পাদনা ক্লিক করুন.
- + টার্গেট সার্ভারে ক্লিক করুন।
- টার্গেট সার্ভারের জন্য একটি নাম, হোস্ট এবং পোর্ট লিখুন।
যেমন:
- নাম: টার্গেট 1
- হোস্ট: 1.mybackendservice.com
- পোর্ট: 80
- টার্গেট সার্ভার সক্রিয় করতে সক্ষম নির্বাচন করুন।
- Save এ ক্লিক করুন।
- লক্ষ্য সার্ভার সম্পাদনা করতে:
- সম্পাদনা ক্লিক করুন.
- টার্গার সার্ভার মান সম্পাদনা করুন.
- Save এ ক্লিক করুন।
- লক্ষ্য সার্ভার মুছে ফেলতে:
- সম্পাদনা ক্লিক করুন.
- মুছুন ক্লিক করুন।
API ব্যবহার করে লক্ষ্য সার্ভার পরিচালনা করা
আপনি এজ এপিআই ব্যবহার করতে পারেন, তৈরি করতে, মুছতে, আপডেট করতে, পেতে এবং টার্গেট সার্ভারের তালিকা করতে। আরও তথ্যের জন্য, টার্গেট সার্ভার দেখুন।
একটি লক্ষ্য সার্ভার তৈরি করতে নিম্নলিখিত API কল ব্যবহার করুন:
$ curl -H "Content-Type:text/xml" -X POST -d \ '<TargetServer name="target1"> <Host>1.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>' \ -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
নমুনা প্রতিক্রিয়া:
{ "host" : "1.mybackendservice.com", "isEnabled" : true, "name" : "target1", "port" : 80 }
আপনি প্রথম টার্গেট সার্ভার তৈরি করার পরে, তারপরে একটি দ্বিতীয় টার্গেট সার্ভার তৈরি করতে নিম্নলিখিত API কল ব্যবহার করুন। দুটি টার্গেট সার্ভার সংজ্ঞায়িত করে, আপনি দুটি URL প্রদান করেন যা একটি TargetEndpoint লোড ব্যালেন্সিংয়ের জন্য ব্যবহার করতে পারে:
$ curl -H "Content-type:text/xml" -X POST -d \ '<TargetServer name="target2"> <Host>2.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer >' \ -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
নমুনা প্রতিক্রিয়া:
{ "host" : "2.mybackendservice.com", "isEnabled" : true, "name" : "target2", "port" : 80 }
একটি পরিবেশে টার্গেট সার্ভারের একটি তালিকা পুনরুদ্ধার করতে নিম্নলিখিত API কল ব্যবহার করুন:
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
নমুনা প্রতিক্রিয়া:
[ "target2", "target1" ]
পরীক্ষার পরিবেশে মোতায়েন করা API প্রক্সি দ্বারা ব্যবহারের জন্য এখন দুটি টার্গেট সার্ভার উপলব্ধ। এই TargetServers জুড়ে ভারসাম্য ট্রাফিক লোড করতে, আপনি TargetServers ব্যবহার করার জন্য একটি API প্রক্সির টার্গেট এন্ডপয়েন্টে HTTP সংযোগ কনফিগার করুন।
প্রতি পরিবেশে 500 টার্গেট সার্ভারের একটি সীমা রয়েছে, যেমন লিমিটস বিষয়ে নথিভুক্ত করা হয়েছে।
নামযুক্ত TargetServers জুড়ে ব্যালেন্স লোড করতে একটি TargetEndpoint কনফিগার করা হচ্ছে
এখন আপনার কাছে দুটি টার্গেট সার্ভার উপলব্ধ রয়েছে, আপনি নামের দ্বারা সেই দুটি টার্গেট সার্ভারকে উল্লেখ করতে TargetEndpoint HTTP সংযোগ সেটিং পরিবর্তন করতে পারেন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
উপরের কনফিগারেশন হল সবচেয়ে মৌলিক লোড ব্যালেন্সিং কনফিগারেশন। লোড ব্যালেন্সার তিনটি লোড ব্যালেন্সিং অ্যালগরিদম, রাউন্ড রবিন, ওয়েটেড এবং ন্যূনতম সংযোগ সমর্থন করে। রাউন্ড রবিন হল ডিফল্ট অ্যালগরিদম। যেহেতু উপরের কনফিগারেশনে কোনো অ্যালগরিদম নির্দিষ্ট করা নেই, তাই API প্রক্সি থেকে ব্যাকএন্ড সার্ভারগুলিতে আউটবাউন্ড অনুরোধগুলি একের পর এক, টার্গেট1 এবং টার্গেট 2-এর মধ্যে বিকল্প হবে।
<Path>
উপাদানটি সমস্ত টার্গেট সার্ভারের জন্য TargetEndpoint URI-এর বেসপাথ গঠন করে। এটি শুধুমাত্র ব্যবহার করা হয় যখন <LoadBalancer>
ব্যবহার করা হয়। অন্যথায়, এটি উপেক্ষা করা হয়। উপরের উদাহরণে, "টার্গেট1"-এ পৌঁছানোর অনুরোধটি হবে http://target1/test
এবং অন্যান্য টার্গেট সার্ভারের জন্য।
লোড ব্যালেন্সার বিকল্প সেট করা হচ্ছে
আপনি লোড ব্যালেন্সিং এবং লোড ব্যালেন্সার এবং টার্গেট সার্ভার স্তরে লোড ব্যালেন্সিং এবং ফেইলওভারের বিকল্পগুলি ব্যবহার করে প্রাপ্যতা টিউন করতে পারেন। এই বিভাগে এই বিকল্পগুলি বর্ণনা করে।
অ্যালগরিদম
<LoadBalancer>
দ্বারা ব্যবহৃত অ্যালগরিদম সেট করে। উপলব্ধ অ্যালগরিদমগুলি হল RoundRobin
, Weighted
, এবং LeastConnections
, যার প্রত্যেকটি নীচে নথিভুক্ত করা হয়েছে৷
রাউন্ড রবিন
ডিফল্ট অ্যালগরিদম, রাউন্ড রবিন, প্রতিটি টার্গেট সার্ভারের কাছে একটি অনুরোধ ফরোয়ার্ড করে যে ক্রমে সার্ভারগুলি টার্গেট এন্ডপয়েন্ট HTTP সংযোগে তালিকাভুক্ত করা হয়। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
ওজনযুক্ত
ওজনযুক্ত লোড ব্যালেন্সিং অ্যালগরিদম আপনাকে আপনার টার্গেট সার্ভারগুলির জন্য আনুপাতিক ট্র্যাফিক লোডগুলি কনফিগার করতে সক্ষম করে৷ ওজনযুক্ত লোডব্যালেন্সার প্রতিটি টার্গেট সার্ভারের ওজনের সরাসরি অনুপাতে আপনার টার্গেট সার্ভারে অনুরোধ বিতরণ করে। অতএব, ওজনযুক্ত অ্যালগরিদমের জন্য আপনাকে প্রতিটি টার্গেট সার্ভারের জন্য একটি weight
বৈশিষ্ট্য সেট করতে হবে। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>Weighted</Algorithm> <Server name="target1"> <Weight>1</Weight> </Server> <Server name="target2"> <Weight>2</Weight> </Server> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
এই উদাহরণে, টার্গেট1-এ রাউট করা প্রতিটি অনুরোধের জন্য দুটি অনুরোধ টার্গেট2-তে পাঠানো হবে।
সর্বনিম্ন সংযোগ
LoadBalancers সর্বনিম্ন কানেকশন অ্যালগরিদম রুট আউটবাউন্ড রিকোয়েস্ট ব্যবহার করার জন্য কনফিগার করা হয়েছে টার্গেট সার্ভারে সবচেয়ে কম খোলা HTTP সংযোগের সাথে। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>LeastConnections</Algorithm> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> </HTTPTargetConnection> <Path>/test</Path> </TargetEndpoint>
সর্বাধিক ব্যর্থতা
এপিআই প্রক্সি থেকে টার্গেট সার্ভারে সর্বাধিক সংখ্যক ব্যর্থ অনুরোধ যার ফলে অনুরোধটি অন্য টার্গেট সার্ভারে পুনঃনির্দেশিত হয়।
একটি প্রতিক্রিয়া ব্যর্থতার মানে Apigee একটি টার্গেট সার্ভার থেকে কোনো প্রতিক্রিয়া পায় না। যখন এটি ঘটে, ব্যর্থতার পাল্টা একের পর এক বৃদ্ধি পায়।
যাইহোক, যখন Apigee একটি লক্ষ্য থেকে একটি প্রতিক্রিয়া পায়, এমনকি যদি প্রতিক্রিয়াটি একটি HTTP ত্রুটি (যেমন 500
) হয়, যা লক্ষ্য সার্ভার থেকে একটি প্রতিক্রিয়া হিসাবে গণনা করা হয় এবং ব্যর্থতার কাউন্টারটি পুনরায় সেট করা হয়। খারাপ HTTP প্রতিক্রিয়াগুলি (যেমন 500
) লোড ব্যালেন্সিং ঘূর্ণন থেকে একটি অস্বাস্থ্যকর সার্ভারকে যত তাড়াতাড়ি সম্ভব বের করতে ব্যর্থতার কাউন্টারকে বৃদ্ধি করে তা নিশ্চিত করতে, আপনি আপনার লোড ব্যালেন্সার কনফিগারেশনে <ServerUnhealthyResponse>
উপাদান <ResponseCode>
চাইল্ড এলিমেন্ট যোগ করতে পারেন। এজ সেই কোডগুলির সাথে প্রতিক্রিয়াগুলিকে ব্যর্থতা হিসাবে গণনা করবে।
নিম্নলিখিত উদাহরণে, লক্ষ্য সার্ভার থেকে কিছু 5XX
প্রতিক্রিয়া সহ পাঁচটি ব্যর্থ অনুরোধের পরে target1
ঘূর্ণন থেকে সরানো হবে।
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> <MaxFailures>5</MaxFailures> <ServerUnhealthyResponse> <ResponseCode>500</ResponseCode> <ResponseCode>502</ResponseCode> <ResponseCode>503</ResponseCode> </ServerUnhealthyResponse> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
MaxFailures ডিফল্ট হল 0। এর মানে হল এজ সবসময় প্রতিটি অনুরোধের জন্য টার্গেটের সাথে সংযোগ করার চেষ্টা করে এবং ঘূর্ণন থেকে টার্গেট সার্ভারকে কখনই সরিয়ে দেয় না।
একটি HealthMonitor এর সাথে MaxFailures > 0 ব্যবহার করা সবচেয়ে ভালো। আপনি যদি MaxFailures > 0 কনফিগার করেন, টার্গেট সার্ভারটি ঘূর্ণন থেকে সরানো হয় যখন লক্ষ্যটি আপনার নির্দেশিত সংখ্যায় ব্যর্থ হয়। যখন একটি হেলথ মনিটর থাকে, তখন Apigee স্বয়ংক্রিয়ভাবে টার্গেট সার্ভারকে আবার ঘূর্ণায়মান করে দেয় যখন টার্গেট আপ হয়ে যায় এবং পুনরায় চালু হয়, সেই হেলথ মনিটরের কনফিগারেশন অনুযায়ী। আরও তথ্যের জন্য স্বাস্থ্য পর্যবেক্ষণ দেখুন।
বিকল্পভাবে, আপনি যদি MaxFailures > 0 কনফিগার করেন এবং আপনি একটি হেলথ মনিটর কনফিগার না করেন, Apigee স্বয়ংক্রিয়ভাবে লক্ষ্য সার্ভারটিকে ঘূর্ণনের বাইরে নিয়ে যাবে যখন প্রথম ব্যর্থতা শনাক্ত হবে। Apigee প্রতি পাঁচ মিনিটে টার্গেট সার্ভারের স্বাস্থ্য পরীক্ষা করবে এবং যখন এটি স্বাভাবিকভাবে সাড়া দেবে তখন এটিকে ঘূর্ণনে ফিরিয়ে দেবে।
আবার চেষ্টা করুন
যদি পুনঃপ্রয়াস সক্ষম করা হয়, যখনই একটি প্রতিক্রিয়া ব্যর্থতা (I/O ত্রুটি বা HTTP সময়সীমা) ঘটে বা প্রাপ্ত প্রতিক্রিয়া <ServerUnhealthyResponse>
দ্বারা সেট করা একটি মানের সাথে মেলে তখন একটি অনুরোধ পুনরায় চেষ্টা করা হবে। <ServerUnhealthyResponse>
সেট করার বিষয়ে আরও জানতে উপরে সর্বাধিক ব্যর্থতা দেখুন।
ডিফল্টরূপে <RetryEnabled>
true
সেট করা আছে। পুনরায় চেষ্টা অক্ষম করতে false
সেট করুন৷ যেমন:
<RetryEnabled>false</RetryEnabled>
ইসফলব্যাক
একটি (এবং শুধুমাত্র একটি) টার্গেট সার্ভারকে 'ফলব্যাক' সার্ভার হিসাবে সেট করা যেতে পারে। ফলব্যাক টার্গেট সার্ভার লোড ব্যালেন্সিং রুটিনে অন্তর্ভুক্ত নয় যতক্ষণ না অন্য সব টার্গেট সার্ভার লোড ব্যালেন্সার দ্বারা অনুপলব্ধ হিসাবে চিহ্নিত করা হয়। যখন লোড ব্যালেন্সার নির্ধারণ করে যে সমস্ত টার্গেট সার্ভার অনুপলব্ধ, তখন সমস্ত ট্র্যাফিক ফলব্যাক সার্ভারে পাঠানো হয়। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> <Server name="target3"> <IsFallback>true</IsFallback> </Server> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
উপরের কনফিগারেশনের ফলে লক্ষ্য 1 এবং 2 এর মধ্যে রাউন্ড রবিন লোড ভারসাম্য বজায় থাকে যতক্ষণ না উভয় লক্ষ্য 1 এবং 2 অনুপলব্ধ হয়। লক্ষ্য 1 এবং 2 অনুপলব্ধ হলে, সমস্ত ট্র্যাফিক লক্ষ্য 3 এ রুট করা হয়।
পথ
পাথ একটি URI খণ্ডকে সংজ্ঞায়িত করে যা ব্যাকএন্ড সার্ভারে TargetServer দ্বারা জারি করা সমস্ত অনুরোধের সাথে যুক্ত করা হবে।
এই উপাদানটি একটি আক্ষরিক স্ট্রিং পাথ বা একটি বার্তা টেমপ্লেট গ্রহণ করে। একটি বার্তা টেমপ্লেট আপনাকে রানটাইমে পরিবর্তনশীল স্ট্রিং প্রতিস্থাপন করতে দেয়। উদাহরণ স্বরূপ, নিম্নলিখিত টার্গেট এন্ডপয়েন্ট সংজ্ঞায়, পথের জন্য {mypath}
এর মান ব্যবহার করা হয়েছে:
<HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <LoadBalancer> <Server name="testserver"/> </LoadBalancer> <Path>{mypath}</Path> </HTTPTargetConnection>
TLS/SSL এর জন্য একটি টার্গেট সার্ভার কনফিগার করা হচ্ছে
আপনি যদি ব্যাকএন্ড পরিষেবা সংজ্ঞায়িত করার জন্য একটি টার্গেট সার্ভার ব্যবহার করেন এবং ব্যাকএন্ড পরিষেবাটির HTTPS প্রোটোকল ব্যবহার করার জন্য সংযোগের প্রয়োজন হয়, তাহলে আপনাকে অবশ্যই TargetServer সংজ্ঞায় TLS/SSL সক্ষম করতে হবে। এটি প্রয়োজনীয় কারণ <Host>
ট্যাগ আপনাকে সংযোগ প্রোটোকল নির্দিষ্ট করতে দেয় না। নীচে দেখানো হয়েছে একমুখী TLS/SSL এর জন্য টার্গেট সার্ভার সংজ্ঞা যেখানে এজ ব্যাকএন্ড পরিষেবাতে HTTPS অনুরোধ করে:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
যদি ব্যাকএন্ড পরিষেবার জন্য দ্বিমুখী, বা পারস্পরিক, TLS/SSL প্রয়োজন হয়, তাহলে আপনি TargetEndpoints হিসাবে একই TLS/SSL কনফিগারেশন সেটিংস ব্যবহার করে TargetServer কনফিগার করুন:
<TargetServer name="TargetServer 1"> <IsEnabled>true</IsEnabled> <Host>www.example.com</Host> <Port>443</Port> <SSLInfo> <Ciphers/> <ClientAuthEnabled>true</ClientAuthEnabled> <Enabled>true</Enabled> <IgnoreValidationErrors>false</IgnoreValidationErrors> <KeyAlias>keystore-alias</KeyAlias> <KeyStore>keystore-name</KeyStore> <Protocols/> <TrustStore>truststore-name</TrustStore> </SSLInfo> </TargetServer >
<SSLInfo>
বৈশিষ্ট্যের তথ্যের জন্য, যেমন <Ciphers>
এবং <ClientAuthEnabled>
, প্রাইভেট ক্লাউডের জন্য একটি API-তে TLS অ্যাক্সেস কনফিগার করার সময় ভার্চুয়াল হোস্টের জন্য সেই বৈশিষ্ট্যগুলি সেট করার তথ্য দেখুন।
আউটবাউন্ড TLS/SSL কনফিগার করার সম্পূর্ণ নির্দেশাবলীর জন্য, এজ থেকে ব্যাকএন্ডে TLS কনফিগার করা দেখুন (ক্লাউড এবং প্রাইভেট ক্লাউড) ।
টার্গেট সার্ভার স্কিমা
GitHub- এ TargetServer এবং অন্যান্য সত্তার স্কিমা দেখুন।
স্বাস্থ্য পর্যবেক্ষণ
স্বাস্থ্য পর্যবেক্ষণ আপনাকে টার্গেট সার্ভার কনফিগারেশনে সংজ্ঞায়িত ব্যাকএন্ড পরিষেবা URL গুলি সক্রিয়ভাবে পোলিং করে লোড ব্যালেন্সিং কনফিগারেশনগুলিকে উন্নত করতে সক্ষম করে৷ স্বাস্থ্য মনিটরিং সক্ষম করার সাথে, একটি ব্যর্থ টার্গেট সার্ভার স্বয়ংক্রিয়ভাবে ঘূর্ণায়মান হয় যখন HealthMonitor নির্ধারণ করে যে TargetServer সক্রিয় আছে।
স্বাস্থ্য পর্যবেক্ষণ <MaxFailures>
এর সাথে কাজ করে। স্বাস্থ্য পর্যবেক্ষণ সক্ষম না করে, <MaxFailures>
API প্রক্সি থেকে টার্গেট সার্ভারে ব্যর্থ অনুরোধের সংখ্যা নির্দিষ্ট করে যার ফলে অনুরোধটি অন্য টার্গেট সার্ভারে পুনঃনির্দেশিত হয়। ব্যর্থ TargetServer তারপর ঘূর্ণন থেকে সরানো হয় যতক্ষণ না আপনি প্রক্সি পুনরায় স্থাপন করেন।
স্বাস্থ্য পর্যবেক্ষণ সক্ষম করার সাথে, একটি ব্যর্থ টার্গেট সার্ভার স্বয়ংক্রিয়ভাবে ঘূর্ণায়মান হয়ে যায় এবং কোনও প্রক্সি পুনরায় স্থাপনের প্রয়োজন হয় না।
HealthMonitor একটি সাধারণ ক্লায়েন্ট হিসাবে কাজ করে যেটি TCP বা HTTP-র মাধ্যমে একটি ব্যাকএন্ড পরিষেবা চালু করে:
- একটি TCP ক্লায়েন্ট সহজভাবে নিশ্চিত করে যে একটি সকেট খোলা যাবে।
- আপনি ব্যাকএন্ড পরিষেবাতে একটি বৈধ HTTP অনুরোধ জমা দেওয়ার জন্য HTTP ক্লায়েন্ট কনফিগার করেন। আপনি HTTP GET, PUT, POST, বা DELETE অপারেশন সংজ্ঞায়িত করতে পারেন। HTTP মনিটর কলের প্রতিক্রিয়া অবশ্যই
<SuccessResponse>
ব্লকের কনফিগার করা সেটিংসের সাথে মেলে।
সাফল্য এবং ব্যর্থতা
আপনি যখন স্বাস্থ্য পর্যবেক্ষণ সক্ষম করেন, তখন এজ আপনার লক্ষ্য সার্ভারে স্বাস্থ্য পরীক্ষা পাঠাতে শুরু করে। একটি স্বাস্থ্য পরীক্ষা হল টার্গেট সার্ভারে পাঠানো একটি অনুরোধ যা লক্ষ্য সার্ভারটি সুস্থ কিনা তা নির্ধারণ করে।
স্বাস্থ্য পরীক্ষার দুটি সম্ভাব্য ফলাফলের একটি হতে পারে:
- সাফল্য: একটি সফল স্বাস্থ্য পরীক্ষা ঘটলে লক্ষ্য সার্ভারকে সুস্থ বলে মনে করা হয়। এটি সাধারণত নিম্নলিখিত এক বা একাধিকের ফলাফল:
- টার্গেট সার্ভার নির্দিষ্ট পোর্টে একটি নতুন সংযোগ গ্রহণ করে, সেই পোর্টে একটি অনুরোধে সাড়া দেয় এবং তারপর নির্দিষ্ট সময়সীমার মধ্যে পোর্টটি বন্ধ করে দেয়। লক্ষ্য সার্ভার থেকে প্রতিক্রিয়া "সংযোগ: বন্ধ" রয়েছে
- টার্গেট সার্ভার একটি 200 (ওকে) বা অন্য HTTP স্ট্যাটাস কোড সহ স্বাস্থ্য পরীক্ষার অনুরোধে সাড়া দেয় যা আপনি গ্রহণযোগ্য বলে নির্ধারণ করেন।
- টার্গেট সার্ভার প্রত্যাশিত মেসেজ বডির সাথে মেলে এমন একটি মেসেজ বডি সহ স্বাস্থ্য পরীক্ষার অনুরোধে সাড়া দেয়।
যখন এজ নির্ধারণ করে যে একটি সার্ভার সুস্থ, তখন এজ এটিকে অনুরোধ পাঠানো অব্যাহত রাখে বা পুনরায় শুরু করে।
- ব্যর্থতা: লক্ষ্য সার্ভার বিভিন্ন উপায়ে একটি স্বাস্থ্য পরীক্ষা ব্যর্থ করতে পারে, চেকের ধরনের উপর নির্ভর করে। একটি ব্যর্থতা লগ করা যেতে পারে যখন লক্ষ্য সার্ভার:
- এজ থেকে হেলথ চেক পোর্টে সংযোগ প্রত্যাখ্যান করে।
- একটি নির্দিষ্ট সময়ের মধ্যে স্বাস্থ্য পরীক্ষার অনুরোধে সাড়া দেয় না।
- একটি অপ্রত্যাশিত HTTP স্থিতি কোড প্রদান করে।
- প্রত্যাশিত বার্তার মূল অংশের সাথে মেলে না এমন একটি বার্তার অংশের সাথে প্রতিক্রিয়া জানায়৷
যখন একটি লক্ষ্য সার্ভার একটি স্বাস্থ্য পরীক্ষা ব্যর্থ হয়, Edge যে সার্ভারের ব্যর্থতা গণনা বৃদ্ধি. যদি সেই সার্ভারের ব্যর্থতার সংখ্যা পূর্বনির্ধারিত থ্রেশহোল্ড পূরণ করে বা অতিক্রম করে (
<MaxFailures>
), এজ সেই সার্ভারে অনুরোধ পাঠানো বন্ধ করে দেয়।
একটি হেলথ মনিটর সক্রিয় করা হচ্ছে
একটি HealthMonitor তৈরি করতে, আপনি একটি প্রক্সির জন্য TargetEndpoint-এর HTTP সংযোগ কনফিগারেশনে <HealthMonitor>
উপাদান যোগ করুন। আপনি UI এ এটি করতে পারবেন না। পরিবর্তে, আপনি একটি প্রক্সি কনফিগারেশন তৈরি করুন এবং এটিকে একটি জিপ ফাইল হিসাবে এজ এ আপলোড করুন। একটি প্রক্সি কনফিগারেশন হল একটি API প্রক্সির সমস্ত দিকগুলির একটি কাঠামোগত বিবরণ৷ প্রক্সি কনফিগারেশন একটি পূর্ব-নির্ধারিত ডিরেক্টরি কাঠামোতে XML ফাইল নিয়ে গঠিত। আরও তথ্যের জন্য, API প্রক্সি কনফিগারেশন রেফারেন্স দেখুন।
একটি সাধারণ HealthMonitor একটি TCPMonitor বা একটি HTTPMonitor এর সাথে মিলিত একটি IntervalInSec
সংজ্ঞায়িত করে। <MaxFailures>
উপাদানটি API প্রক্সি থেকে টার্গেট সার্ভারে সর্বাধিক সংখ্যক ব্যর্থ অনুরোধ নির্দিষ্ট করে যার ফলে অনুরোধটি অন্য টার্গেট সার্ভারে পুনঃনির্দেশিত হয়। ডিফল্টরূপে <MaxFailures>
হল 0, যার মানে Edge কোনো সংশোধনমূলক কাজ করে না। একটি স্বাস্থ্য মনিটর কনফিগার করার সময়, নিশ্চিত করুন যে আপনি <TargetEndpoint>
ট্যাগের <HTTPTargetConnection>
ট্যাগে <MaxFailures>
সেট করেছেন একটি অ-শূন্য মান।
টিসিপি মনিটর
নীচের কনফিগারেশনটি একটি হেলথ মনিটরকে সংজ্ঞায়িত করে যা প্রতি পাঁচ সেকেন্ডে পোর্ট 80 এ একটি সংযোগ খোলার মাধ্যমে প্রতিটি টার্গেট সার্ভারকে পোল করে। (পোর্টটি ঐচ্ছিক। নির্দিষ্ট না থাকলে, TCPMonitor পোর্ট হল টার্গেট সার্ভার পোর্ট।)
- যদি সংযোগ ব্যর্থ হয় বা সংযোগ হতে 10 সেকেন্ডের বেশি সময় নেয়, তাহলে সেই টার্গেট সার্ভারের জন্য ব্যর্থতার গণনা 1 দ্বারা বৃদ্ধি পাবে।
- যদি সংযোগ সফল হয়, তাহলে টার্গেট সার্ভারের ব্যর্থতার গণনা 0 এ পুনরায় সেট করা হয়।
আপনি TargetEndpoint এর HTTPTargetConnetion এলিমেন্টের একটি শিশু উপাদান হিসাবে একটি HealthMonitor যোগ করতে পারেন, যেমনটি নীচে দেখানো হয়েছে:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> <MaxFailures>5</MaxFailures> </LoadBalancer> <Path>/test</Path> <HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <TCPMonitor> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <Port>80</Port> </TCPMonitor> </HealthMonitor> </HTTPTargetConnection> . . .
TCPMonitor কনফিগারেশন উপাদান সহ HealthMonitor
নিম্নলিখিত টেবিলটি TCPMonitor কনফিগারেশন উপাদানগুলি বর্ণনা করে:
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
IsEnabled | একটি বুলিয়ান যা হেলথ মনিটরকে সক্ষম বা নিষ্ক্রিয় করে। | মিথ্যা | না |
IntervalInSec | প্রতিটি পোলিং TCP অনুরোধের মধ্যে সময়ের ব্যবধান, সেকেন্ডে। | 0 | হ্যাঁ |
ConnectTimeoutInSec | যে সময়ে TCP পোর্টের সাথে সংযোগ স্থাপন করতে হবে সেটিকে সফল বলে গণ্য করতে হবে। নির্দিষ্ট ব্যবধানে সংযোগ করতে ব্যর্থতা একটি ব্যর্থতা হিসাবে গণনা করে, টার্গেট সার্ভারের জন্য লোড ব্যালেন্সারের ব্যর্থতার সংখ্যা বৃদ্ধি করে। | 0 | হ্যাঁ |
Port | ঐচ্ছিক। যে পোর্টে TCP সংযোগ স্থাপন করা হবে। নির্দিষ্ট করা না থাকলে, TCPMonitor পোর্ট হল TargetServer পোর্ট। | 0 | না |
HTTP মনিটর
একটি নমুনা স্বাস্থ্য মনিটর যা একটি HTTP মনিটর ব্যবহার করে প্রতি পাঁচ সেকেন্ডে একবার ব্যাকএন্ড পরিষেবাতে একটি GET অনুরোধ জমা দেবে। নীচের নমুনা অনুরোধ বার্তায় একটি HTTP মৌলিক অনুমোদন শিরোনাম যোগ করে। প্রতিক্রিয়া কনফিগারেশন সেটিংস সংজ্ঞায়িত করে যা ব্যাকএন্ড পরিষেবা থেকে প্রকৃত প্রতিক্রিয়ার সাথে তুলনা করা হবে। নীচের উদাহরণে, প্রত্যাশিত প্রতিক্রিয়া হল একটি HTTP প্রতিক্রিয়া কোড 200
এবং একটি কাস্টম HTTP শিরোনাম ImOK
যার মান হল YourOK
। যদি প্রতিক্রিয়া মেলে না, তাহলে অনুরোধটি লোড ব্যালেন্সার কনফিগারেশনের ব্যর্থতা হিসাবে বিবেচিত হবে।
HTTPMonitor HTTP এবং একমুখী HTTPS প্রোটোকল ব্যবহার করার জন্য কনফিগার করা ব্যাকএন্ড পরিষেবাগুলিকে সমর্থন করে। যাইহোক, এটি নিম্নলিখিত সমর্থন করে না:
- দ্বি-মুখী HTTPS (একে দ্বি-মুখী TLS/SSLও বলা হয়)
- স্ব-স্বাক্ষরিত শংসাপত্র।
মনে রাখবেন যে একটি HTTP মনিটরের সমস্ত অনুরোধ এবং প্রতিক্রিয়া সেটিংস ব্যাকএন্ড পরিষেবার জন্য নির্দিষ্ট হবে যা অবশ্যই আহ্বান করা উচিত।
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <IsSSL>true</IsSSL> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Port>80</Port> <Verb>GET</Verb> <Path>/healthcheck</Path> <Header name="Authorization">Basic 12e98yfw87etf</Header> <IncludeHealthCheckIdHeader>true</IncludeHealthCheckIdHeader> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> <Header name="ImOK">YourOK</Header> </SuccessResponse> </HTTPMonitor> </HealthMonitor>
HTTPMonitor কনফিগারেশন উপাদান সহ HealthMonitor
নিম্নলিখিত টেবিলটি HTTP মনিটর কনফিগারেশন উপাদানগুলি বর্ণনা করে:
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
IsEnabled | একটি বুলিয়ান যা হেলথ মনিটরকে সক্ষম বা নিষ্ক্রিয় করে। | মিথ্যা | না |
IntervalInSec | প্রতিটি পোলিং অনুরোধের মধ্যে সময়ের ব্যবধান, সেকেন্ডে। | 0 | হ্যাঁ |
Request | আউটবাউন্ড অনুরোধ বার্তার জন্য কনফিগারেশন বিকল্পগুলি হেলথ মনিটর দ্বারা আবর্তনের মধ্যে টার্গেট সার্ভারগুলিতে পাঠানো হয়েছে৷ পাথ ভেরিয়েবল সমর্থন করে না। | N/A | হ্যাঁ |
IsSSL | সংযোগ পর্যবেক্ষণের জন্য HTTPS (নিরাপদ HTTP) ব্যবহার করবেন কিনা তা নির্দিষ্ট করে। সম্ভাব্য মান:
| মিথ্যা | না |
ConnectTimeoutInSec | সময়, সেকেন্ডের মধ্যে, যেখানে HTTP পরিষেবার সাথে TCP সংযোগ হ্যান্ডশেক সফল বলে বিবেচিত হতে হবে। নির্দিষ্ট ব্যবধানে সংযোগ করতে ব্যর্থতা একটি ব্যর্থতা হিসাবে গণনা করে, টার্গেট সার্ভারের জন্য লোডব্যালেন্সারের ব্যর্থতার সংখ্যা বৃদ্ধি করে। | 0 | না |
SocketReadTimeoutInSec | সময়, সেকেন্ডে, যেখানে HTTP পরিষেবা থেকে ডেটা পড়তে হবে একটি সাফল্য হিসাবে বিবেচিত হবে৷ নির্দিষ্ট ব্যবধানে পড়তে ব্যর্থতা একটি ব্যর্থতা হিসাবে গণনা করে, টার্গেট সার্ভারের জন্য লোডব্যালেন্সারের ব্যর্থতার সংখ্যা বৃদ্ধি করে। | 0 | না |
Port | যে পোর্টে ব্যাকএন্ড পরিষেবার HTTP সংযোগ স্থাপন করা হবে। | N/A | না |
Verb | ব্যাকএন্ড পরিষেবাতে প্রতিটি পোলিং HTTP অনুরোধের জন্য ব্যবহৃত HTTP ক্রিয়া। | N/A | না |
Path | টার্গেট সার্ভারে সংজ্ঞায়িত URL-এর সাথে পাথ যুক্ত করা হয়েছে। আপনার HTTP পরিষেবাতে একটি 'পোলিং এন্ডপয়েন্ট' কনফিগার করতে পাথ উপাদানটি ব্যবহার করুন৷ | N/A | না |
| আপনাকে আপস্ট্রিম সিস্টেমে স্বাস্থ্য পরীক্ষার অনুরোধগুলি ট্র্যাক করার অনুমতি দেয়। IncludeHealthCheckIdHeader একটি বুলিয়ান মান নেয় এবং ডিফল্ট করে false । যদি আপনি এটি true সেট করেন, তাহলে X-Apigee-Healthcheck-Id নামে একটি Header রয়েছে যা হেলথচেক অনুরোধে ইনজেক্ট করা হয়। হেডারের মানটি গতিশীলভাবে বরাদ্দ করা হয় এবং ORG/ENV/SERVER_UUID/N ফর্ম নেয়, যেখানে ORG হল প্রতিষ্ঠানের নাম, ENV হল পরিবেশের নাম, SERVER_UUID হল একটি অনন্য ID যা এমপিকে চিহ্নিত করে এবং N হল 1 জানুয়ারী, 1970 সাল থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যা৷নমুনা ফলে অনুরোধ শিরোনাম: X-Apigee-Healthcheck-Id: orgname/envname/E8C4D2EE-3A69-428A-8616-030ABDE864E0/1586802968123 | মিথ্যা | না |
Payload | প্রতিটি পোলিং HTTP অনুরোধের জন্য HTTP বডি তৈরি করা হয়েছে। মনে রাখবেন GET অনুরোধের জন্য এই উপাদানটির প্রয়োজন নেই। | N/A | না |
SuccessResponse | পোল করা ব্যাকএন্ড পরিষেবা দ্বারা উত্পন্ন ইনবাউন্ড HTTP প্রতিক্রিয়া বার্তার জন্য ম্যাচিং বিকল্পগুলি। যে প্রতিক্রিয়াগুলি মেলে না সেগুলি ব্যর্থতার সংখ্যা 1 দ্বারা বৃদ্ধি করে৷ | N/A | না |
ResponseCode | এইচটিটিপি প্রতিক্রিয়া কোডটি পোল করা টার্গেট সার্ভার থেকে প্রাপ্ত হবে বলে আশা করা হচ্ছে। নির্দিষ্ট করা কোডের থেকে ভিন্ন একটি কোড ব্যর্থতার কারণ হয়, এবং পোল করা ব্যাকএন্ড পরিষেবার জন্য গণনা বৃদ্ধি পায়। আপনি একাধিক রেসপন্সকোড উপাদান সংজ্ঞায়িত করতে পারেন। | N/A | না |
Headers | এক বা একাধিক HTTP শিরোনাম এবং মানগুলির একটি তালিকা যা পোল করা ব্যাকএন্ড পরিষেবা থেকে প্রাপ্ত হবে বলে প্রত্যাশিত৷ যে কোনো HTTP শিরোনাম বা প্রতিক্রিয়ার মান যা নির্দিষ্ট করা ফলাফল থেকে ভিন্ন তা ব্যর্থতায় পরিণত হয়, এবং পোল করা টার্গেট সার্ভারের গণনা 1 দ্বারা বৃদ্ধি পায়। আপনি একাধিক হেডার উপাদান সংজ্ঞায়িত করতে পারেন। | N/A | না |
আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
Apigee Edge একাধিক ব্যাকএন্ড সার্ভার দৃষ্টান্ত জুড়ে লোড ব্যালেন্সিং এবং ফেইলওভারের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে আপনার API-এর প্রাপ্যতা বাড়ায়।
TargetServer কনফিগারেশন টার্গেটএন্ডপয়েন্ট কনফিগারেশন থেকে কংক্রিট এন্ডপয়েন্ট ইউআরএলগুলিকে দ্বিগুণ করে। প্রতিটি টার্গেট সার্ভার একটি TargetEndpoint HTTP সংযোগে নাম দ্বারা উল্লেখ করা হয়। কনফিগারেশনে একটি কংক্রিট URL সংজ্ঞায়িত করার পরিবর্তে, আপনি TargetEndpoint বিভাগে বর্ণিত এক বা একাধিক নামের TargetServers কনফিগার করতে পারেন।
একটি টার্গেট সার্ভারের সংজ্ঞা একটি নাম, একটি হোস্ট এবং একটি পোর্ট নিয়ে গঠিত, যার মধ্যে একটি অতিরিক্ত উপাদান থাকে যা নির্দেশ করে যে টার্গেট সার্ভার সক্ষম বা অক্ষম করা হয়েছে।
ভিডিও
টার্গেট সার্ভার ব্যবহার করে API রাউটিং এবং লোড ব্যালেন্সিং সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিওগুলি দেখুন
ভিডিও | বর্ণনা |
---|---|
লক্ষ্য সার্ভার ব্যবহার করে ভারসাম্য লোড | লক্ষ্য সার্ভার জুড়ে ভারসাম্য API লোড করুন। |
টার্গেট সার্ভার ব্যবহার করে পরিবেশের উপর ভিত্তি করে API রাউটিং | পরিবেশের উপর ভিত্তি করে একটি ভিন্ন লক্ষ্য সার্ভারে একটি API রুট করুন। |
টার্গেট সার্ভার ব্যবহার করে API রাউটিং এবং লোড ব্যালেন্সিং (ক্লাসিক এজ) | পরিবেশের উপর ভিত্তি করে একটি ভিন্ন লক্ষ্য সার্ভারে একটি API রুট করুন এবং ক্লাসিক এজ UI-তে লক্ষ্য সার্ভার জুড়ে আপনার API ভারসাম্য লোড করুন। |
টার্গেট সার্ভার কনফিগারেশনের নমুনা
নিম্নলিখিত কোড একটি লক্ষ্য সার্ভার সংজ্ঞায়িত করে:
<TargetServer name="target1"> <Host>1.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer >
টার্গেট সার্ভার কনফিগারেশন উপাদান
নিম্নলিখিত টেবিলটি একটি টার্গেট সার্ভার তৈরি এবং কনফিগার করতে ব্যবহৃত উপাদানগুলি বর্ণনা করে:
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
name | টার্গেট সার্ভার কনফিগারেশনের নাম, যা পরিবেশের মধ্যে অনন্য হতে হবে। TargetServer নামের শুধুমাত্র বর্ণসংখ্যার অক্ষর থাকতে পারে। | N/A | হ্যাঁ |
Host | ব্যাকএন্ড পরিষেবার হোস্ট URL (প্রটোকল ছাড়া)। | N/A | হ্যাঁ |
Port | যে পোর্টে ব্যাকএন্ড পরিষেবা শুনছে | N/A | হ্যাঁ |
IsEnabled | একটি বুলিয়ান যা নির্দেশ করে যে টার্গেট সার্ভার কনফিগারেশন সক্ষম বা অক্ষম করা হয়েছে। এটি আপনাকে API প্রক্সি কনফিগারেশন পরিবর্তন না করেই টার্গেট সার্ভারকে ঘূর্ণনের বাইরে নিয়ে যেতে সক্ষম করে। একটি সাধারণ ব্যবহার একটি অ্যাপ বা স্ক্রিপ্ট লিখতে হবে যা প্রত্যাশিত ক্ষমতার প্রয়োজনীয়তা, রক্ষণাবেক্ষণের সময়সূচী ইত্যাদির উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে টার্গেট সার্ভারকে সক্ষম বা নিষ্ক্রিয় করে। | true | হ্যাঁ |
UI ব্যবহার করে লক্ষ্য সার্ভার পরিচালনা করা
লক্ষ্য সার্ভার পরিচালনা করুন, নীচে বর্ণিত হিসাবে..
প্রান্ত
এজ UI ব্যবহার করে লক্ষ্য সার্ভার পরিচালনা করতে:
- apigee.com/edge এ সাইন ইন করুন।
- বাম নেভিগেশন বারে অ্যাডমিন > পরিবেশ > টার্গেট সার্ভার নির্বাচন করুন।
- পছন্দসই পরিবেশ নির্বাচন করুন, যেমন পরীক্ষা বা পণ্য ।
- একটি লক্ষ্য সার্ভার তৈরি করতে:
- + টার্গেট সার্ভারে ক্লিক করুন।
- টার্গেট সার্ভারের জন্য একটি নাম, হোস্ট এবং পোর্ট লিখুন।
যেমন:
- নাম: টার্গেট 1
- হোস্ট: 1.mybackendservice.com
- পোর্ট: 80
- প্রয়োজনে SSL নির্বাচন করুন।
- টার্গেট সার্ভার সক্রিয় করতে সক্ষম নির্বাচন করুন।
- যোগ করুন ক্লিক করুন.
- লক্ষ্য সার্ভার সম্পাদনা করতে:
- অ্যাকশন মেনু প্রদর্শন করতে আপনি যে টার্গেট সার্ভারটি সম্পাদনা করতে চান তার উপর আপনার কার্সার রাখুন।
- ক্লিক করুন
.
- টার্গার সার্ভার মান সম্পাদনা করুন.
- আপডেট ক্লিক করুন.
- লক্ষ্য সার্ভার মুছে ফেলতে:
- আপনার কার্সার টার্গেট সার্ভারের উপর রাখুন যা আপনি অ্যাকশন মেনু প্রদর্শন করতে মুছতে চান।
- ক্লিক করুন
.
- অপারেশন নিশ্চিত করতে মুছুন ক্লিক করুন.
ক্লাসিক এজ (ব্যক্তিগত ক্লাউড)
ক্লাসিক এজ UI ব্যবহার করে প্রক্সি তৈরি করুন উইজার্ড অ্যাক্সেস করতে:
-
http:// ms-ip :9000
এ সাইন ইন করুন, যেখানে ms-ip হল ম্যানেজমেন্ট সার্ভার নোডের IP ঠিকানা বা DNS নাম। - বাম নেভিগেশন বারে APIs > এনভায়রনমেন্ট কনফিগারেশন > টার্গেট সার্ভার নির্বাচন করুন।
- পছন্দসই পরিবেশ নির্বাচন করুন, যেমন পরীক্ষা বা পণ্য ।
- একটি লক্ষ্য সার্ভার তৈরি করতে:
- সম্পাদনা ক্লিক করুন.
- + টার্গেট সার্ভারে ক্লিক করুন।
- টার্গেট সার্ভারের জন্য একটি নাম, হোস্ট এবং পোর্ট লিখুন।
যেমন:
- নাম: টার্গেট 1
- হোস্ট: 1.mybackendservice.com
- পোর্ট: 80
- টার্গেট সার্ভার সক্রিয় করতে সক্ষম নির্বাচন করুন।
- Save এ ক্লিক করুন।
- লক্ষ্য সার্ভার সম্পাদনা করতে:
- সম্পাদনা ক্লিক করুন.
- টার্গার সার্ভার মান সম্পাদনা করুন.
- Save এ ক্লিক করুন।
- লক্ষ্য সার্ভার মুছে ফেলতে:
- সম্পাদনা ক্লিক করুন.
- মুছুন ক্লিক করুন।
API ব্যবহার করে লক্ষ্য সার্ভার পরিচালনা করা
আপনি এজ এপিআই ব্যবহার করতে পারেন, তৈরি করতে, মুছতে, আপডেট করতে, পেতে এবং টার্গেট সার্ভারের তালিকা করতে। আরও তথ্যের জন্য, টার্গেট সার্ভার দেখুন।
একটি লক্ষ্য সার্ভার তৈরি করতে নিম্নলিখিত API কল ব্যবহার করুন:
$ curl -H "Content-Type:text/xml" -X POST -d \ '<TargetServer name="target1"> <Host>1.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>' \ -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
নমুনা প্রতিক্রিয়া:
{ "host" : "1.mybackendservice.com", "isEnabled" : true, "name" : "target1", "port" : 80 }
আপনি প্রথম টার্গেট সার্ভার তৈরি করার পরে, তারপরে একটি দ্বিতীয় টার্গেট সার্ভার তৈরি করতে নিম্নলিখিত API কল ব্যবহার করুন। দুটি টার্গেট সার্ভার সংজ্ঞায়িত করে, আপনি দুটি URL প্রদান করেন যা একটি TargetEndpoint লোড ব্যালেন্সিংয়ের জন্য ব্যবহার করতে পারে:
$ curl -H "Content-type:text/xml" -X POST -d \ '<TargetServer name="target2"> <Host>2.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer >' \ -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
নমুনা প্রতিক্রিয়া:
{ "host" : "2.mybackendservice.com", "isEnabled" : true, "name" : "target2", "port" : 80 }
একটি পরিবেশে টার্গেট সার্ভারের একটি তালিকা পুনরুদ্ধার করতে নিম্নলিখিত API কল ব্যবহার করুন:
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
নমুনা প্রতিক্রিয়া:
[ "target2", "target1" ]
পরীক্ষার পরিবেশে মোতায়েন করা API প্রক্সি দ্বারা ব্যবহারের জন্য এখন দুটি টার্গেট সার্ভার উপলব্ধ। এই TargetServers জুড়ে ভারসাম্য ট্রাফিক লোড করতে, আপনি TargetServers ব্যবহার করার জন্য একটি API প্রক্সির টার্গেট এন্ডপয়েন্টে HTTP সংযোগ কনফিগার করুন।
প্রতি পরিবেশে 500 টার্গেট সার্ভারের একটি সীমা রয়েছে, যেমন লিমিটস বিষয়ে নথিভুক্ত করা হয়েছে।
নামযুক্ত TargetServers জুড়ে ব্যালেন্স লোড করতে একটি TargetEndpoint কনফিগার করা হচ্ছে
এখন আপনার কাছে দুটি টার্গেট সার্ভার উপলব্ধ রয়েছে, আপনি নামের দ্বারা সেই দুটি টার্গেট সার্ভারকে উল্লেখ করতে TargetEndpoint HTTP সংযোগ সেটিং পরিবর্তন করতে পারেন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
উপরের কনফিগারেশন হল সবচেয়ে মৌলিক লোড ব্যালেন্সিং কনফিগারেশন। লোড ব্যালেন্সার তিনটি লোড ব্যালেন্সিং অ্যালগরিদম, রাউন্ড রবিন, ওয়েটেড এবং ন্যূনতম সংযোগ সমর্থন করে। রাউন্ড রবিন হল ডিফল্ট অ্যালগরিদম। যেহেতু উপরের কনফিগারেশনে কোনো অ্যালগরিদম নির্দিষ্ট করা নেই, তাই API প্রক্সি থেকে ব্যাকএন্ড সার্ভারগুলিতে আউটবাউন্ড অনুরোধগুলি একের পর এক, টার্গেট1 এবং টার্গেট 2-এর মধ্যে বিকল্প হবে।
<Path>
উপাদানটি সমস্ত টার্গেট সার্ভারের জন্য TargetEndpoint URI-এর বেসপাথ গঠন করে। এটি শুধুমাত্র ব্যবহার করা হয় যখন <LoadBalancer>
ব্যবহার করা হয়। অন্যথায়, এটি উপেক্ষা করা হয়। উপরের উদাহরণে, "টার্গেট1"-এ পৌঁছানোর অনুরোধটি হবে http://target1/test
এবং অন্যান্য টার্গেট সার্ভারের জন্য।
লোড ব্যালেন্সার বিকল্প সেট করা হচ্ছে
আপনি লোড ব্যালেন্সিং এবং লোড ব্যালেন্সার এবং টার্গেট সার্ভার স্তরে লোড ব্যালেন্সিং এবং ফেইলওভারের বিকল্পগুলি ব্যবহার করে প্রাপ্যতা টিউন করতে পারেন। এই বিভাগে এই বিকল্পগুলি বর্ণনা করে।
অ্যালগরিদম
<LoadBalancer>
দ্বারা ব্যবহৃত অ্যালগরিদম সেট করে। উপলব্ধ অ্যালগরিদমগুলি হল RoundRobin
, Weighted
, এবং LeastConnections
, যার প্রত্যেকটি নীচে নথিভুক্ত করা হয়েছে৷
রাউন্ড রবিন
ডিফল্ট অ্যালগরিদম, রাউন্ড রবিন, প্রতিটি টার্গেট সার্ভারের কাছে একটি অনুরোধ ফরোয়ার্ড করে যে ক্রমে সার্ভারগুলি টার্গেট এন্ডপয়েন্ট HTTP সংযোগে তালিকাভুক্ত করা হয়। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
ওজনযুক্ত
ওজনযুক্ত লোড ব্যালেন্সিং অ্যালগরিদম আপনাকে আপনার টার্গেট সার্ভারগুলির জন্য আনুপাতিক ট্র্যাফিক লোডগুলি কনফিগার করতে সক্ষম করে৷ ওজনযুক্ত লোডব্যালেন্সার প্রতিটি টার্গেট সার্ভারের ওজনের সরাসরি অনুপাতে আপনার টার্গেট সার্ভারে অনুরোধ বিতরণ করে। অতএব, ওজনযুক্ত অ্যালগরিদমের জন্য আপনাকে প্রতিটি টার্গেট সার্ভারের জন্য একটি weight
বৈশিষ্ট্য সেট করতে হবে। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>Weighted</Algorithm> <Server name="target1"> <Weight>1</Weight> </Server> <Server name="target2"> <Weight>2</Weight> </Server> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
এই উদাহরণে, টার্গেট1-এ রাউট করা প্রতিটি অনুরোধের জন্য দুটি অনুরোধ টার্গেট2-তে পাঠানো হবে।
সর্বনিম্ন সংযোগ
LoadBalancers সর্বনিম্ন কানেকশন অ্যালগরিদম রুট আউটবাউন্ড রিকোয়েস্ট ব্যবহার করার জন্য কনফিগার করা হয়েছে টার্গেট সার্ভারে সবচেয়ে কম খোলা HTTP সংযোগের সাথে। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>LeastConnections</Algorithm> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> </HTTPTargetConnection> <Path>/test</Path> </TargetEndpoint>
সর্বাধিক ব্যর্থতা
এপিআই প্রক্সি থেকে টার্গেট সার্ভারে সর্বাধিক সংখ্যক ব্যর্থ অনুরোধ যার ফলে অনুরোধটি অন্য টার্গেট সার্ভারে পুনঃনির্দেশিত হয়।
একটি প্রতিক্রিয়া ব্যর্থতার মানে Apigee একটি টার্গেট সার্ভার থেকে কোনো প্রতিক্রিয়া পায় না। যখন এটি ঘটে, ব্যর্থতার পাল্টা একের পর এক বৃদ্ধি পায়।
যাইহোক, যখন Apigee একটি লক্ষ্য থেকে একটি প্রতিক্রিয়া পায়, এমনকি যদি প্রতিক্রিয়াটি একটি HTTP ত্রুটি (যেমন 500
) হয়, যা লক্ষ্য সার্ভার থেকে একটি প্রতিক্রিয়া হিসাবে গণনা করা হয় এবং ব্যর্থতার কাউন্টারটি পুনরায় সেট করা হয়। খারাপ HTTP প্রতিক্রিয়াগুলি (যেমন 500
) লোড ব্যালেন্সিং ঘূর্ণন থেকে একটি অস্বাস্থ্যকর সার্ভারকে যত তাড়াতাড়ি সম্ভব বের করতে ব্যর্থতার কাউন্টারকে বৃদ্ধি করে তা নিশ্চিত করতে, আপনি আপনার লোড ব্যালেন্সার কনফিগারেশনে <ServerUnhealthyResponse>
উপাদান <ResponseCode>
চাইল্ড এলিমেন্ট যোগ করতে পারেন। এজ সেই কোডগুলির সাথে প্রতিক্রিয়াগুলিকে ব্যর্থতা হিসাবে গণনা করবে।
নিম্নলিখিত উদাহরণে, লক্ষ্য সার্ভার থেকে কিছু 5XX
প্রতিক্রিয়া সহ পাঁচটি ব্যর্থ অনুরোধের পরে target1
ঘূর্ণন থেকে সরানো হবে।
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> <MaxFailures>5</MaxFailures> <ServerUnhealthyResponse> <ResponseCode>500</ResponseCode> <ResponseCode>502</ResponseCode> <ResponseCode>503</ResponseCode> </ServerUnhealthyResponse> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
MaxFailures ডিফল্ট হল 0। এর মানে হল এজ সবসময় প্রতিটি অনুরোধের জন্য টার্গেটের সাথে সংযোগ করার চেষ্টা করে এবং ঘূর্ণন থেকে টার্গেট সার্ভারকে কখনই সরিয়ে দেয় না।
একটি HealthMonitor এর সাথে MaxFailures > 0 ব্যবহার করা সবচেয়ে ভালো। আপনি যদি MaxFailures > 0 কনফিগার করেন, টার্গেট সার্ভারটি ঘূর্ণন থেকে সরানো হয় যখন লক্ষ্যটি আপনার নির্দেশিত সংখ্যায় ব্যর্থ হয়। যখন একটি হেলথ মনিটর থাকে, তখন Apigee স্বয়ংক্রিয়ভাবে টার্গেট সার্ভারকে আবার ঘূর্ণায়মান করে দেয় যখন টার্গেট আপ হয়ে যায় এবং পুনরায় চালু হয়, সেই হেলথ মনিটরের কনফিগারেশন অনুযায়ী। আরও তথ্যের জন্য স্বাস্থ্য পর্যবেক্ষণ দেখুন।
বিকল্পভাবে, আপনি যদি MaxFailures > 0 কনফিগার করেন এবং আপনি একটি হেলথ মনিটর কনফিগার না করেন, Apigee স্বয়ংক্রিয়ভাবে লক্ষ্য সার্ভারটিকে ঘূর্ণনের বাইরে নিয়ে যাবে যখন প্রথম ব্যর্থতা শনাক্ত হবে। Apigee প্রতি পাঁচ মিনিটে টার্গেট সার্ভারের স্বাস্থ্য পরীক্ষা করবে এবং যখন এটি স্বাভাবিকভাবে সাড়া দেবে তখন এটিকে ঘূর্ণনে ফিরিয়ে দেবে।
আবার চেষ্টা করুন
যদি পুনঃপ্রয়াস সক্ষম করা হয়, যখনই একটি প্রতিক্রিয়া ব্যর্থতা (I/O ত্রুটি বা HTTP সময়সীমা) ঘটে বা প্রাপ্ত প্রতিক্রিয়া <ServerUnhealthyResponse>
দ্বারা সেট করা একটি মানের সাথে মেলে তখন একটি অনুরোধ পুনরায় চেষ্টা করা হবে। <ServerUnhealthyResponse>
সেট করার বিষয়ে আরও জানতে উপরে সর্বাধিক ব্যর্থতা দেখুন।
ডিফল্টরূপে <RetryEnabled>
true
সেট করা আছে। পুনরায় চেষ্টা অক্ষম করতে false
সেট করুন৷ যেমন:
<RetryEnabled>false</RetryEnabled>
ইসফলব্যাক
একটি (এবং শুধুমাত্র একটি) টার্গেট সার্ভারকে 'ফলব্যাক' সার্ভার হিসাবে সেট করা যেতে পারে। ফলব্যাক টার্গেট সার্ভার লোড ব্যালেন্সিং রুটিনে অন্তর্ভুক্ত নয় যতক্ষণ না অন্য সব টার্গেট সার্ভার লোড ব্যালেন্সার দ্বারা অনুপলব্ধ হিসাবে চিহ্নিত করা হয়। যখন লোড ব্যালেন্সার নির্ধারণ করে যে সমস্ত টার্গেট সার্ভার অনুপলব্ধ, তখন সমস্ত ট্র্যাফিক ফলব্যাক সার্ভারে পাঠানো হয়। যেমন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> <Server name="target3"> <IsFallback>true</IsFallback> </Server> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
উপরের কনফিগারেশনের ফলে লক্ষ্য 1 এবং 2 এর মধ্যে রাউন্ড রবিন লোড ভারসাম্য বজায় থাকে যতক্ষণ না উভয় লক্ষ্য 1 এবং 2 অনুপলব্ধ হয়। লক্ষ্য 1 এবং 2 অনুপলব্ধ হলে, সমস্ত ট্র্যাফিক লক্ষ্য 3 এ রুট করা হয়।
পথ
পাথ একটি URI খণ্ডকে সংজ্ঞায়িত করে যা ব্যাকএন্ড সার্ভারে TargetServer দ্বারা জারি করা সমস্ত অনুরোধের সাথে যুক্ত করা হবে।
এই উপাদানটি একটি আক্ষরিক স্ট্রিং পাথ বা একটি বার্তা টেমপ্লেট গ্রহণ করে। একটি বার্তা টেমপ্লেট আপনাকে রানটাইমে পরিবর্তনশীল স্ট্রিং প্রতিস্থাপন করতে দেয়। উদাহরণ স্বরূপ, নিম্নলিখিত টার্গেট এন্ডপয়েন্ট সংজ্ঞায়, পথের জন্য {mypath}
এর মান ব্যবহার করা হয়েছে:
<HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <LoadBalancer> <Server name="testserver"/> </LoadBalancer> <Path>{mypath}</Path> </HTTPTargetConnection>
TLS/SSL এর জন্য একটি টার্গেট সার্ভার কনফিগার করা হচ্ছে
আপনি যদি ব্যাকএন্ড পরিষেবা সংজ্ঞায়িত করার জন্য একটি টার্গেট সার্ভার ব্যবহার করেন এবং ব্যাকএন্ড পরিষেবাটির HTTPS প্রোটোকল ব্যবহার করার জন্য সংযোগের প্রয়োজন হয়, তাহলে আপনাকে অবশ্যই TargetServer সংজ্ঞায় TLS/SSL সক্ষম করতে হবে। এটি প্রয়োজনীয় কারণ <Host>
ট্যাগ আপনাকে সংযোগ প্রোটোকল নির্দিষ্ট করতে দেয় না। নীচে দেখানো হয়েছে একমুখী TLS/SSL এর জন্য টার্গেট সার্ভার সংজ্ঞা যেখানে এজ ব্যাকএন্ড পরিষেবাতে HTTPS অনুরোধ করে:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
যদি ব্যাকএন্ড পরিষেবার জন্য দ্বিমুখী, বা পারস্পরিক, TLS/SSL প্রয়োজন হয়, তাহলে আপনি TargetEndpoints হিসাবে একই TLS/SSL কনফিগারেশন সেটিংস ব্যবহার করে TargetServer কনফিগার করুন:
<TargetServer name="TargetServer 1"> <IsEnabled>true</IsEnabled> <Host>www.example.com</Host> <Port>443</Port> <SSLInfo> <Ciphers/> <ClientAuthEnabled>true</ClientAuthEnabled> <Enabled>true</Enabled> <IgnoreValidationErrors>false</IgnoreValidationErrors> <KeyAlias>keystore-alias</KeyAlias> <KeyStore>keystore-name</KeyStore> <Protocols/> <TrustStore>truststore-name</TrustStore> </SSLInfo> </TargetServer >
<SSLInfo>
বৈশিষ্ট্যের তথ্যের জন্য, যেমন <Ciphers>
এবং <ClientAuthEnabled>
, প্রাইভেট ক্লাউডের জন্য একটি API-তে TLS অ্যাক্সেস কনফিগার করার সময় ভার্চুয়াল হোস্টের জন্য সেই বৈশিষ্ট্যগুলি সেট করার তথ্য দেখুন।
আউটবাউন্ড TLS/SSL কনফিগার করার সম্পূর্ণ নির্দেশাবলীর জন্য, এজ থেকে ব্যাকএন্ডে TLS কনফিগার করা দেখুন (ক্লাউড এবং প্রাইভেট ক্লাউড) ।
টার্গেট সার্ভার স্কিমা
GitHub- এ TargetServer এবং অন্যান্য সত্তার স্কিমা দেখুন।
স্বাস্থ্য পর্যবেক্ষণ
স্বাস্থ্য পর্যবেক্ষণ আপনাকে টার্গেট সার্ভার কনফিগারেশনে সংজ্ঞায়িত ব্যাকএন্ড পরিষেবা ইউআরএলগুলি সক্রিয়ভাবে পোলিং করে লোড ব্যালেন্সিং কনফিগারেশনগুলি বাড়িয়ে তুলতে সক্ষম করে। স্বাস্থ্য পর্যবেক্ষণ সক্ষম করার সাথে সাথে, হেলথমনিটর যখন লক্ষ্য করে যে টার্গেটসার্ভারটি সক্রিয় রয়েছে তখন একটি ব্যর্থ টার্গেট সার্ভার স্বয়ংক্রিয়ভাবে ঘূর্ণায়মান হয়।
স্বাস্থ্য পর্যবেক্ষণ <MaxFailures>
এর সাথে কাজ করে। স্বাস্থ্য পর্যবেক্ষণ সক্ষম না করে, <MaxFailures>
এপিআই প্রক্সি থেকে টার্গেট সার্ভারে ব্যর্থ অনুরোধের সংখ্যা নির্দিষ্ট করে যার ফলস্বরূপ অনুরোধটি অন্য টার্গেট সার্ভারে পুনঃনির্দেশিত হয়। ব্যর্থতা টার্গেটসার্ভারটি তখন আপনি প্রক্সিটি পুনরায় স্থাপন না করা পর্যন্ত ঘূর্ণন থেকে বের করে নেওয়া হয়।
স্বাস্থ্য পর্যবেক্ষণ সক্ষম করার সাথে সাথে, একটি ব্যর্থ টার্গেট সার্ভার স্বয়ংক্রিয়ভাবে ঘূর্ণায়মানভাবে ফিরিয়ে দেওয়া হয় এবং কোনও প্রক্সি পুনরায় মোপনার প্রয়োজন হয় না।
হেলথমনিটর একটি সাধারণ ক্লায়েন্ট হিসাবে কাজ করে যা টিসিপি বা এইচটিটিপি -র মাধ্যমে একটি ব্যাকএন্ড পরিষেবা আহ্বান করে:
- একটি টিসিপি ক্লায়েন্ট কেবল নিশ্চিত করে যে একটি সকেট খোলা যেতে পারে।
- আপনি ব্যাকএন্ড পরিষেবাতে একটি বৈধ এইচটিটিপি অনুরোধ জমা দিতে এইচটিটিপি ক্লায়েন্টকে কনফিগার করেন। আপনি HTTP get, put, পোস্ট বা অপারেশনগুলি মুছতে সংজ্ঞায়িত করতে পারেন। এইচটিটিপি মনিটর কলটির প্রতিক্রিয়া অবশ্যই
<SuccessResponse>
ব্লকে কনফিগার করা সেটিংসের সাথে মেলে।
সাফল্য এবং ব্যর্থতা
আপনি যখন স্বাস্থ্য পর্যবেক্ষণ সক্ষম করেন, এজ আপনার টার্গেট সার্ভারে স্বাস্থ্য চেক প্রেরণ শুরু করে। একটি স্বাস্থ্য চেক হ'ল টার্গেট সার্ভারে প্রেরিত একটি অনুরোধ যা টার্গেট সার্ভারটি স্বাস্থ্যকর কিনা তা নির্ধারণ করে।
একটি স্বাস্থ্য চেক দুটি সম্ভাব্য ফলাফলের একটি হতে পারে:
- সাফল্য: একটি সফল স্বাস্থ্য চেক ঘটে যখন টার্গেট সার্ভারটি স্বাস্থ্যকর হিসাবে বিবেচিত হয়। এটি সাধারণত নিম্নলিখিতগুলির এক বা একাধিক ফলাফল:
- টার্গেট সার্ভার নির্দিষ্ট পোর্টের সাথে একটি নতুন সংযোগ গ্রহণ করে, সেই বন্দরে একটি অনুরোধের প্রতিক্রিয়া জানায় এবং তারপরে নির্দিষ্ট সময়সীমার মধ্যে বন্দরটি বন্ধ করে দেয়। টার্গেট সার্ভারের প্রতিক্রিয়াটিতে "সংযোগ: বন্ধ" রয়েছে
- টার্গেট সার্ভার 200 (ওকে) বা অন্যান্য এইচটিটিপি স্থিতি কোড যা আপনি নির্ধারণ করেন তা গ্রহণযোগ্য তা সহ একটি স্বাস্থ্য চেক অনুরোধের প্রতিক্রিয়া জানায়।
- টার্গেট সার্ভার একটি বার্তা বডি সহ একটি স্বাস্থ্য চেক অনুরোধের প্রতিক্রিয়া জানায় যা প্রত্যাশিত বার্তাটির বডিটির সাথে মেলে।
যখন এজটি নির্ধারণ করে যে কোনও সার্ভার স্বাস্থ্যকর, প্রান্তটি অব্যাহত থাকে বা এটিতে অনুরোধগুলি প্রেরণ পুনরায় শুরু করে।
- ব্যর্থতা: টার্গেট সার্ভার চেকের ধরণের উপর নির্ভর করে বিভিন্ন উপায়ে স্বাস্থ্য চেক ব্যর্থ করতে পারে। লক্ষ্য সার্ভার যখন একটি ব্যর্থতা লগ করা যেতে পারে:
- প্রান্ত থেকে স্বাস্থ্য চেক বন্দরে সংযোগ প্রত্যাখ্যান করে।
- নির্দিষ্ট সময়ের মধ্যে স্বাস্থ্য চেক অনুরোধের প্রতিক্রিয়া জানায় না।
- একটি অপ্রত্যাশিত এইচটিটিপি স্থিতি কোড প্রদান করে।
- এমন একটি বার্তা বডি দিয়ে প্রতিক্রিয়া জানায় যা প্রত্যাশিত বার্তার বডিটির সাথে মেলে না।
যখন কোনও টার্গেট সার্ভার কোনও স্বাস্থ্য চেক ব্যর্থ করে, তখন সার্ভারের ব্যর্থতা গণনা করে। যদি সেই সার্ভারের জন্য ব্যর্থতার সংখ্যাটি পূর্বনির্ধারিত প্রান্তিক (
<MaxFailures>
>) পূরণ করে বা অতিক্রম করে, এজ সেই সার্ভারে অনুরোধ পাঠানো বন্ধ করে দেয়।
একটি হেলথমনিটার সক্ষম করা
হেলথমনিটার তৈরি করতে, আপনি একটি প্রক্সি জন্য টার্গেটেন্ডপয়েন্টের HTTPConnection কনফিগারেশনে <HealthMonitor>
উপাদান যুক্ত করুন। আপনি ইউআইতে এটি করতে পারবেন না। পরিবর্তে, আপনি একটি প্রক্সি কনফিগারেশন তৈরি করেন এবং এটি প্রান্তে জিপ ফাইল হিসাবে আপলোড করুন। একটি প্রক্সি কনফিগারেশন হ'ল একটি এপিআই প্রক্সির সমস্ত দিকের কাঠামোগত বিবরণ। প্রক্সি কনফিগারেশনগুলিতে একটি প্রাক-সংজ্ঞায়িত ডিরেক্টরি কাঠামোতে এক্সএমএল ফাইল রয়েছে। আরও তথ্যের জন্য, এপিআই প্রক্সি কনফিগারেশন রেফারেন্স দেখুন।
একটি সাধারণ হেলথমনিটর একটি IntervalInSec
একটি টিসিপমনিটর বা এইচটিটিপিএমএর এর সাথে মিলিত করে সংজ্ঞায়িত করে। <MaxFailures>
উপাদানটি এপিআই প্রক্সি থেকে লক্ষ্যমাত্রার কাছে সর্বাধিক সংখ্যক ব্যর্থ অনুরোধগুলি নির্দিষ্ট করে যা অনুরোধটি অন্য টার্গেট সার্ভারে পুনঃনির্দেশিত হওয়ার ফলস্বরূপ। ডিফল্টরূপে <MaxFailures>
0 হয়, যার অর্থ এজ কোনও সংশোধনমূলক ক্রিয়া সম্পাদন করে না। কোনও স্বাস্থ্য মনিটর কনফিগার করার সময়, নিশ্চিত করুন যে আপনি <HTTPTargetConnection>
<TargetEndpoint>
ট্যাগের ট্যাগের কোনও শূন্য মানকে ট্যাগে <MaxFailures>
সেট করেছেন।
টিসিপমনিটর
নীচের কনফিগারেশনটি একটি হেলথমনিটরকে সংজ্ঞায়িত করে যা প্রতি পাঁচ সেকেন্ডে পোর্ট 80 এ সংযোগ খোলার মাধ্যমে প্রতিটি টার্গেট সার্ভারকে পোল করে। (বন্দরটি al চ্ছিক। যদি নির্দিষ্ট না করা হয় তবে টিসিপমনিটর পোর্টটি লক্ষ্যমাত্রার বন্দর))
- যদি সংযোগটি ব্যর্থ হয় বা সংযোগ করতে 10 সেকেন্ডের বেশি সময় নেয়, তবে ব্যর্থতা সেই টার্গেটসার্ভারের জন্য 1 দ্বারা বৃদ্ধি করে।
- যদি সংযোগটি সফল হয়, তবে টার্গেটসার্ভারের জন্য ব্যর্থতার গণনা 0 এ পুনরায় সেট করা হয়।
আপনি নীচে দেখানো হিসাবে টার্গেটেন্ডপয়েন্টের httpargetConness উপাদানটির শিশু উপাদান হিসাবে একটি স্বাস্থ্যমন্ত্রী যুক্ত করতে পারেন:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> <MaxFailures>5</MaxFailures> </LoadBalancer> <Path>/test</Path> <HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <TCPMonitor> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <Port>80</Port> </TCPMonitor> </HealthMonitor> </HTTPTargetConnection> . . .
টিসিপমনিটর কনফিগারেশন উপাদানগুলির সাথে হেলথমনিটর
নিম্নলিখিত টেবিলটি টিসিপমনিটর কনফিগারেশন উপাদানগুলি বর্ণনা করে:
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
IsEnabled | একটি বুলিয়ান যা হেলথমনিটরকে সক্ষম বা অক্ষম করে। | মিথ্যা | না |
IntervalInSec | প্রতিটি পোলিং টিসিপি অনুরোধের মধ্যে সেকেন্ডে সময় ব্যবধান। | 0 | হ্যাঁ |
ConnectTimeoutInSec | টিসিপি পোর্টের সাথে সংযোগটি সাফল্য হিসাবে বিবেচনা করার জন্য অবশ্যই প্রতিষ্ঠিত করতে হবে। লক্ষ্যমাত্রার জন্য লোড ব্যালেন্সারের ব্যর্থতার গণনা বাড়িয়ে নির্দিষ্ট ব্যবধানে সংযোগ করতে ব্যর্থতা ব্যর্থতা হিসাবে গণনা করে। | 0 | হ্যাঁ |
Port | ঐচ্ছিক। যে বন্দরটিতে টিসিপি সংযোগ স্থাপন করা হবে। যদি নির্দিষ্ট না করা হয় তবে টিসিপমনিটর পোর্টটি লক্ষ্যমাত্রার পোর্ট। | 0 | না |
Httpmonitor
একটি নমুনা হেলথমনিটর যা এইচটিটিপিএমআর ব্যবহার করে তা প্রতি পাঁচ সেকেন্ডে একবার ব্যাকএন্ড পরিষেবাতে একটি জিইটি অনুরোধ জমা দেবে। নীচের নমুনাটি অনুরোধ বার্তায় একটি HTTP বেসিক অনুমোদনের শিরোনাম যুক্ত করে। প্রতিক্রিয়া কনফিগারেশন সেটিংস সংজ্ঞায়িত করে যা ব্যাকএন্ড পরিষেবা থেকে প্রকৃত প্রতিক্রিয়ার সাথে তুলনা করা হবে। নীচের উদাহরণে, প্রত্যাশিত প্রতিক্রিয়া হ'ল একটি এইচটিটিপি রেসপন্স কোড 200
এবং একটি কাস্টম এইচটিটিপি হেডার ImOK
যার মানটি YourOK
। যদি প্রতিক্রিয়াটি মেলে না, তবে অনুরোধটি লোড ব্যালেন্সার কনফিগারেশন দ্বারা ব্যর্থতা হিসাবে বিবেচিত হবে।
এইচটিটিপি এবং ওয়ান-ওয়ে এইচটিটিপিএস প্রোটোকলগুলি ব্যবহার করতে কনফিগার করা ব্যাকএন্ড পরিষেবাগুলিকে সমর্থন করে। তবে এটি নিম্নলিখিতগুলিকে সমর্থন করে না:
- দ্বি-মুখী এইচটিটিপিএস (যাকে দ্বি-মুখী টিএলএস/এসএসএলও বলা হয়)
- স্ব-স্বাক্ষরিত শংসাপত্র।
নোট করুন যে এইচটিটিপি মনিটরে সমস্ত অনুরোধ এবং প্রতিক্রিয়া সেটিংস ব্যাকএন্ড পরিষেবার জন্য নির্দিষ্ট হবে যা অবশ্যই অনুরোধ করা উচিত।
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <IsSSL>true</IsSSL> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Port>80</Port> <Verb>GET</Verb> <Path>/healthcheck</Path> <Header name="Authorization">Basic 12e98yfw87etf</Header> <IncludeHealthCheckIdHeader>true</IncludeHealthCheckIdHeader> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> <Header name="ImOK">YourOK</Header> </SuccessResponse> </HTTPMonitor> </HealthMonitor>
Httpmonitor কনফিগারেশন উপাদান সহ স্বাস্থ্যকর
নিম্নলিখিত টেবিলটি httpmonitor কনফিগারেশন উপাদানগুলি বর্ণনা করে:
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
IsEnabled | একটি বুলিয়ান যা হেলথমনিটরকে সক্ষম বা অক্ষম করে। | মিথ্যা | না |
IntervalInSec | প্রতিটি পোলিং অনুরোধের মধ্যে সেকেন্ডে সময় ব্যবধান। | 0 | হ্যাঁ |
Request | রোটেশনে টার্গেটসার্ভারগুলিতে হেলথমনিটর দ্বারা প্রেরিত আউটবাউন্ড অনুরোধ বার্তার জন্য কনফিগারেশন বিকল্পগুলি। পথটি ভেরিয়েবলগুলিকে সমর্থন করে না। | N/A | হ্যাঁ |
IsSSL | পর্যবেক্ষণ সংযোগগুলির জন্য এইচটিটিপিএস (সুরক্ষিত এইচটিটিপি) ব্যবহার করবেন কিনা তা নির্দিষ্ট করে। সম্ভাব্য মান:
| মিথ্যা | না |
ConnectTimeoutInSec | সময়, কয়েক সেকেন্ডের মধ্যে, যেখানে এইচটিটিপি পরিষেবাতে টিসিপি সংযোগ হ্যান্ডশেকটি সাফল্য হিসাবে বিবেচিত হতে হবে। লক্ষ্যমাত্রার জন্য লোডব্ল্যান্সারের ব্যর্থতার গণনা বাড়িয়ে নির্দিষ্ট ব্যবধানে সংযোগ করতে ব্যর্থতা ব্যর্থতা হিসাবে গণনা করে। | 0 | না |
SocketReadTimeoutInSec | সময়, কয়েক সেকেন্ডের মধ্যে, যেখানে এইচটিটিপি পরিষেবা থেকে একটি সাফল্য হিসাবে বিবেচিত হতে হবে। নির্দিষ্ট ব্যবধানে পড়তে ব্যর্থতা ব্যর্থতা হিসাবে গণনা করে, টার্গেটসার্ভারের জন্য লোডব্ল্যান্সারের ব্যর্থতার গণনা বাড়িয়ে তোলে। | 0 | না |
Port | যে বন্দরটির ভিত্তিতে ব্যাকএন্ড পরিষেবাতে এইচটিটিপি সংযোগ স্থাপন করা হবে। | N/A | না |
Verb | ব্যাকএন্ড পরিষেবাতে প্রতিটি পোলিং এইচটিটিপি অনুরোধের জন্য ব্যবহৃত এইচটিটিপি ক্রিয়া। | N/A | না |
Path | টার্গেটসার্ভারে সংজ্ঞায়িত ইউআরএলে যুক্ত পথটি। আপনার এইচটিটিপি পরিষেবাতে একটি 'পোলিং এন্ডপয়েন্ট' কনফিগার করতে পাথ উপাদানটি ব্যবহার করুন। | N/A | না |
| আপনাকে আপস্ট্রিম সিস্টেমে স্বাস্থ্যচাইয়ের অনুরোধগুলি ট্র্যাক করার অনুমতি দেয়। IncludeHealthCheckIdHeader একটি বুলিয়ান মান নেয় এবং ডিফল্টকে false বলে। যদি আপনি এটি true সেট করেন, তবে X-Apigee-Healthcheck-Id নামে একটি Header রয়েছে যা স্বাস্থ্যচেবের অনুরোধে ইনজেকশন দেয়। শিরোনামের মানটি গতিশীলভাবে নির্ধারিত হয়, এবং ফর্মটি ORG/ENV/SERVER_UUID/N নেয়, যেখানে ORG সংগঠনের নাম, ENV পরিবেশের নাম, SERVER_UUID এমপি সনাক্তকারী একটি অনন্য আইডি, এবং N হ'ল 1 জানুয়ারী, 1970 সাল থেকে অতিবাহিত মিলিসেকেন্ডের সংখ্যা।উদাহরণস্বরূপ অনুরোধের শিরোনাম: X-Apigee-Healthcheck-Id: orgname/envname/E8C4D2EE-3A69-428A-8616-030ABDE864E0/1586802968123 | মিথ্যা | না |
Payload | প্রতিটি পোলিং এইচটিটিপি অনুরোধের জন্য উত্পন্ন এইচটিটিপি বডি। নোট করুন যে জিইটি অনুরোধের জন্য এই উপাদানটির প্রয়োজন নেই। | N/A | না |
SuccessResponse | পোলড ব্যাকএন্ড পরিষেবা দ্বারা উত্পাদিত ইনবাউন্ড এইচটিটিপি প্রতিক্রিয়া বার্তার জন্য ম্যাচিং বিকল্পগুলি। যে প্রতিক্রিয়াগুলি বর্ধিত করতে ব্যর্থতার গণনা 1 দ্বারা মেলে না। | N/A | না |
ResponseCode | এইচটিটিপি প্রতিক্রিয়া কোডটি পোলড টার্গেট সার্ভার থেকে প্রাপ্ত হবে বলে আশা করা হচ্ছে। কোডের চেয়ে পৃথক একটি কোড ব্যর্থতার ফলাফলের চেয়ে আলাদা এবং পোলড ব্যাকএন্ড পরিষেবার জন্য গণনা বাড়ানো হচ্ছে। আপনি একাধিক প্রতিক্রিয়া উপাদানগুলি সংজ্ঞায়িত করতে পারেন। | N/A | না |
Headers | এক বা একাধিক এইচটিটিপি শিরোনাম এবং পোলড ব্যাকএন্ড পরিষেবা থেকে প্রাপ্ত মানগুলির একটি তালিকা। যে কোনও এইচটিটিপি শিরোনাম বা প্রতিক্রিয়াগুলির উপর যে কোনও ব্যর্থতার নির্দিষ্ট ফলাফলের চেয়ে আলাদা এবং পোলড টার্গেটসার্ভারের জন্য গণনা 1 দ্বারা বৃদ্ধি করা হয়েছে। আপনি একাধিক শিরোনাম উপাদানগুলি সংজ্ঞায়িত করতে পারেন। | N/A | না |