একটি বিপরীত প্রক্সি হিসাবে HAProxy কিভাবে কনফিগার করবেন

Ekati Biparita Praksi Hisabe Haproxy Kibhabe Kanaphigara Karabena



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

কেন একটি বিপরীত প্রক্সি ব্যবহার?

একটি বিপরীত প্রক্সি হিসাবে HAProxy কনফিগার করার পদক্ষেপগুলি নিয়ে আলোচনা করার আগে, আসুন দ্রুত হাইলাইট করি কেন একটি বিপরীত প্রক্সি আপনার সুবিধার জন্য কাজ করে। বিপরীত প্রক্সি হিসাবে HAProxy ব্যবহার করে আপনি যে সুবিধাগুলি পান তা হল:

  1. লোড ব্যালেন্সিং- আপনার ওয়েব সার্ভারে, এক পর্যায়ে, অনেক ক্লায়েন্ট অনুরোধের একটি কেস থাকতে পারে যেগুলি যদি ভালভাবে পরিচালনা না করা হয় তবে এটিকে ওভারলোড করতে পারে যা একটি অপ্রত্যাশিত ডাউনটাইম ঘটায়। যাইহোক, একটি বিপরীত প্রক্সি কনফিগার করা নিশ্চিত করে যে ট্র্যাফিক ব্যাকএন্ড সার্ভার জুড়ে বিতরণ করা হয় তা নিশ্চিত করার জন্য কোনও সার্ভার অনুরোধের সাথে ওভারলোড না হয়।
  2. ফায়ারওয়াল এবং নিরাপত্তা - বিপরীত প্রক্সি ক্লায়েন্ট ডিভাইসগুলিকে ওয়েব সার্ভারের সাথে সংযুক্ত করে। এটি করার ফলে আমাদের ব্যাকএন্ড সার্ভারগুলি সরাসরি ইন্টারনেটে প্রকাশের ঝুঁকি হ্রাস করে৷ এইভাবে, একটি দূষিত ট্র্যাফিক সার্ভারের ক্ষতি করার আগে সহজেই ফিল্টার এবং ব্লক করা যেতে পারে।
  3. ভালো ক্যাশিং - একটি বিপরীত প্রক্সির সাহায্যে, আপনি সামগ্রিক কর্মক্ষমতা উন্নতি লক্ষ্য করবেন কারণ স্ট্যাটিক বিষয়বস্তু ক্যাশে করে লোডের সময় কমে যাবে। এছাড়াও, আপনি একটি ভাল ব্যবহারকারীর অভিজ্ঞতা অর্জন করবেন।
  4. SSL/TLS সমাপ্তি - একটি বিপরীত প্রক্সির সাহায্যে, SSL/TLS সংযোগগুলিকে এনক্রিপ্ট এবং ডিক্রিপ্ট করা নির্বিঘ্ন হয়ে যায় এবং আপনার ব্যাকএন্ড সার্ভারগুলিকে তাদের লোড কমিয়ে এই কাজটি করতে হবে না।

একটি বিপরীত প্রক্সি হিসাবে HAProxy কিভাবে কনফিগার করবেন

কেন একটি বিপরীত প্রক্সি যেমন HAProxy অপরিহার্য তা ব্যাখ্যা করার পরে, আসুন অনুসরণ করার জন্য কনফিগারেশন পদক্ষেপগুলি দেওয়া যাক।







ধাপ 1: HAProxy ইনস্টল করুন



আপনার সিস্টেমে সম্ভবত ইতিমধ্যেই HAProxy ইনস্টল করা আছে। যদি তাই হয়, এই ধাপটি এড়িয়ে যান। যাইহোক, এটিতে নতুন কারো জন্য, HAProxy ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:



$ sudo apt haproxy ইনস্টল করুন

আমরা এটি ইতিমধ্যে আমাদের ক্ষেত্রে ইনস্টল করা আছে.





ধাপ 2: HAProxy কনফিগারেশন ফাইল সম্পাদনা করুন



HAProxy-এর একটি কনফিগারেশন ফাইল রয়েছে যা আপনাকে অবশ্যই আপনার বিপরীত প্রক্সি হিসাবে কনফিগার করতে অ্যাক্সেস এবং সম্পাদনা করতে হবে। একটি টেক্সট এডিটর ব্যবহার করে কনফিগার ফাইলটি খোলার মাধ্যমে শুরু করুন।

$ sudo nano /etc/haproxy/haproxy.cfg

একবার এটি খোলে, নোট করুন যে এটিতে ডিফল্ট এবং গ্লোবাল বিভাগের জন্য মৌলিক কনফিগারেশন রয়েছে। তারপরে আমাদের আরও দুটি বিভাগ তৈরি করতে হবে: ফ্রন্টএন্ড এবং ব্যাকএন্ড। ফ্রন্টএন্ড সেই ইন্টারফেসগুলিকে সংজ্ঞায়িত করে যা ক্লায়েন্টের অনুরোধগুলি গ্রহণ করবে, যখন ব্যাকএন্ড সার্ভারগুলিকে নির্দিষ্ট করে যা ট্র্যাফিক পরিচালনা করবে।

এই উদাহরণের জন্য, আমরা পোর্ট 80 এবং 81 থেকে ক্লায়েন্টের অনুরোধগুলি গ্রহণ করার জন্য ফ্রন্টএন্ড কনফিগার করি। তারপরে আমরা ট্র্যাফিক বিতরণ করার জন্য একটি নিয়ম তৈরি করি যাতে পোর্ট 80 থেকে সংযোগগুলি একটি নির্দিষ্ট সার্ভারে রুট করা হয় যখন 81 পোর্ট থেকে অন্য একটিতে যায়। সার্ভার আমাদের ফ্রন্টএন্ড বিভাগটি নিম্নলিখিত হিসাবে দেখানো হয়েছে:

যেহেতু আমরা দুটি ব্যাকএন্ড সার্ভার তৈরি করেছি, backend2 এবং linux_backend, তাই আমাদের অবশ্যই উভয় সার্ভারের জন্য ব্যাকএন্ড বিভাগ তৈরি করতে হবে। আমরা প্রত্যেকের জন্য আমাদের “সার্ভার1” এবং “সার্ভার2”-এ ট্র্যাফিক বিতরণ করার জন্য কোন আইপি নির্দিষ্ট করি।

একবার কনফিগারেশন ফাইলটি সম্পাদনা করা হলে, এটি সংরক্ষণ করুন এবং ফাইল থেকে প্রস্থান করুন। মনে রাখবেন যে আপনার প্রয়োজনের উপর নির্ভর করে HAProxy কনফিগার করার অনেক উপায় আছে। আমাদের ক্ষেত্রে, আমরা আমাদের ট্রাফিক রুট করার জন্য নির্দিষ্ট আইপি ঠিকানা ব্যবহার করে ওয়েব সার্ভার তৈরি করি। আপনার ওয়েব সার্ভারগুলির সাথে মেলে এবং আপনি কোন পোর্টে শুনতে চান সেই আইপিগুলি পরিবর্তন করুন৷

ধাপ 3: বৈধতা যাচাই করুন

HAProxy এর সাথে, একটি কমান্ড রয়েছে যা আপনাকে আপনার কনফিগার ফাইলটি বৈধ কিনা তা যাচাই করতে দেয়। নিম্নলিখিত কমান্ডটি চালান এবং দেখুন আপনি কি আউটপুট পাবেন:

$ sudo haproxy -c -f /etc/haproxy/haproxy.cfg

আপনি যদি অনুরূপ আউটপুট পান তবে এটি নিশ্চিত করে যে আপনার কনফিগার ফাইলটি বৈধ। অন্যথায়, এটি ত্রুটি বাড়াবে।

ধাপ 4: বিপরীত প্রক্সি পরীক্ষা করুন

'কার্ল' এর মতো একটি কমান্ড ব্যবহার করে, আপনি আপনার ওয়েব সার্ভারে একটি ট্র্যাফিক পাঠাতে পারেন এবং এটি কীভাবে প্রতিক্রিয়া জানায় তা দেখতে পারেন। আমাদের ক্ষেত্রে, আমরা ওয়েব সার্ভার তৈরি করতে Python3 ব্যবহার করি।

'curl' কমান্ড চালানো নিশ্চিত করে যে আমাদের ওয়েব সার্ভার নির্দিষ্ট পোর্ট শুনছে এবং HAProxy আমাদের কনফিগারেশন ফাইলের উপর ভিত্তি করে নির্দিষ্ট সার্ভারে ট্রাফিক বিতরণ করেছে।

আপনি একটি ব্রাউজারে আপনার ওয়েব সার্ভার অ্যাক্সেস করতে পারেন এবং নিশ্চিত করতে পারেন যে বিপরীত প্রক্সি কাজ করে৷

যেহেতু আমাদের কাছে দুটি ওয়েব সার্ভার রয়েছে যা ক্লায়েন্ট ডিভাইসগুলির দ্বারা ব্যবহৃত পোর্টের উপর নির্ভর করে ব্যবহার করা যেতে পারে, আসুন একটি ভিন্ন ওয়েব সার্ভারকে একটি ভিন্ন পোর্টে আবদ্ধ করি এবং দেখুন কী হয়।

নিম্নলিখিত আউটপুট দেখায় যে HAProxy আমাদের ট্র্যাফিককে দ্বিতীয় ব্যাকএন্ড সার্ভারে পাঠিয়েছে শনাক্ত করার পর যে ক্লায়েন্ট অনুরোধটি পোর্ট 81 এর মাধ্যমে পাঠানো হয়েছে, নিশ্চিত করে যে ট্র্যাফিক বিতরণ আশানুরূপ কাজ করছে।

HAProxy কে একটি বিপরীত প্রক্সি হিসাবে কনফিগার করতে হয়।

উপসংহার

HAProxy আপনার ওয়েব সার্ভারের জন্য একটি বিপরীত প্রক্সির জন্য একটি চমৎকার পছন্দ। এটি কনফিগার করা সোজা। ক্লায়েন্টের অনুরোধের জন্য কোন পোর্ট শুনতে হবে এবং লোড ব্যালেন্সিংয়ের জন্য কোন নিয়মগুলি ব্যবহার করতে হবে তা শুধুমাত্র নির্দিষ্ট করুন। তারপরে, ব্যাকএন্ড সার্ভারগুলি ব্যবহার করার জন্য যুক্ত করুন এবং আপনার বিপরীত প্রক্সি আপ এবং চলমান থাকবে। এই পোস্টটি অনুসরণ করার পদক্ষেপগুলি ভাগ করেছে এবং আপনি HAProxy-এর সাথে স্বাচ্ছন্দ্য বোধ করছেন তা নিশ্চিত করার জন্য একটি উদাহরণ প্রদর্শন করেছে৷