RHEL/CentOS এ পাউন্ড ব্যবহার করে ওয়েব সার্ভারগুলি লোড ব্যালেন্সিং সেটআপ করা হচ্ছে


পাউন্ড ITSECURITY সংস্থা দ্বারা নির্মিত একটি লোড ব্যালেন্সিং প্রোগ্রাম। এটি একটি লাইটওয়েট ওপেন সোর্স বিপরীত প্রক্সি সরঞ্জাম যা বেশ কয়েকটি সার্ভারের মধ্যে লোড বিতরণের জন্য ওয়েব-সার্ভার লোড ব্যালেন্সার হিসাবে ব্যবহার করা যেতে পারে। শেষ ব্যবহারকারীকে পাউন্ড বিভিন্ন সুবিধা দেয় যা খুব সুবিধাজনক এবং কাজটি সঠিকভাবে করে।

  1. ভার্চুয়াল হোস্টগুলিকে সমর্থন করে।
  2. কনফিগারযোগ্য
  3. যখন কোনও ব্যাকএন্ড সার্ভার ব্যর্থ হয় বা ব্যর্থতা থেকে পুনরুদ্ধার হয়, এটি এটিকে স্বয়ংক্রিয়ভাবে সনাক্ত করে এবং তদনুসারে এটির ভারসাম্যপূর্ণ সিদ্ধান্তের ভিত্তি করে
  4. এটি ভুল অনুরোধগুলি প্রত্যাখ্যান করে
  5. কোনও নির্দিষ্ট ব্রাউজার বা ওয়েবসার্ভার নেই

এই হ্যাকটি কীভাবে সম্পন্ন করা যায় তা একবার দেখে নেওয়া যাক।

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

Pound Gateway Server : 172.16.1.222
Web Server 01 : 172.16.1.204
Web Server 02 : 192.168.1.161

পদক্ষেপ 1: গেটওয়ে সার্ভারে পাউন্ড লোড ব্যালান্সার ইনস্টল করুন

1. পাউন্ড ইনস্টল করার সবচেয়ে সহজ উপায়টি হ'ল প্রাক-সংকলিত আরপিএম প্যাকেজগুলি ব্যবহার করা, আপনি রেডহ্যাট ভিত্তিক ডিস্ট্রিবিউশনগুলির জন্য এখানে RPM পেতে পারেন:

  1. http://www.invoca.ch/pub/packages/pound/

বিকল্পভাবে, পাউন্ডটি নীচে দেখানো হিসাবে সহজেই ইপিল সংগ্রহস্থল থেকে ইনস্টল করা যেতে পারে।

# yum install epel-release
# yum install Pound

পাউন্ড ইনস্টল হওয়ার পরে, আপনি এই আদেশটি জারি করে এটি ইনস্টল কিনা তা যাচাই করতে পারেন।

# rpm –qa |grep Pound

২. দ্বিতীয়ত, লোড ভারসাম্য বজায় রাখতে এবং পাউন্ডের কনফিগারেশনটি ঠিকঠাক কাজ করে কিনা তা পরীক্ষা করার জন্য আপনার স্পষ্ট শনাক্তকারী রয়েছে তা নিশ্চিত করার জন্য আপনার দুটি ওয়েব সার্ভার প্রয়োজন।

এখানে আমার কাছে দুটি সার্ভার রয়েছে যার সাথে আইপি ঠিকানাগুলি রয়েছে 172.16.1.204 এবং 192.168.1.161।

ব্যবহারের স্বাচ্ছন্দ্যের জন্য, আমি উভয় সার্ভারে তাত্ক্ষণিক ওয়েবসার্ভার তৈরি করতে পাইথন সিম্পল এইচটিটিপিএস সার্ভার তৈরি করেছি। পাইথন সিম্পল এইচটিটিপিএস সার্ভার সম্পর্কে পড়ুন

আমার দৃশ্যে, আমার ওয়েবসারভার01 172.16.1.204 তে 8888 বন্দর দিয়ে এবং ওয়েবসারভার 02 5515 বন্দরের মাধ্যমে 192.168.1.161 এ চলছে।

পদক্ষেপ 2: পাউন্ড লোড ব্যালান্সার কনফিগার করুন

৩. এখন সময় এসেছে কনফিগারেশনগুলি সম্পন্ন করার। একবার আপনি সাফল্যের সাথে পাউন্ড ইনস্টল করার পরে এটি > pound.cfg নামে পাউন্ডের কনফিগারেশন ফাইল তৈরি করে।

ওয়েব সার্ভারগুলির মধ্যে লোড ভারসাম্য বজায় রাখতে আমাদের সার্ভার এবং ব্যাকএন্ডের বিশদটি সম্পাদনা করতে হবে।/ইত্যাদি এ যান এবং সম্পাদনার জন্য pound.cfg ফাইলটি খুলুন।

# vi /etc/pound.cfg

নীচে প্রস্তাবিত পরিবর্তনগুলি করুন।

ListenHTTP
    Address 172.16.1.222
    Port 80
End

ListenHTTPS
    Address 172.16.1.222
    Port    443
    Cert    "/etc/pki/tls/certs/pound.pem"
End

Service
    BackEnd
        Address 172.16.1.204
        Port    8888
    End

    BackEnd
        Address 192.168.1.161
        Port    5555
    End
End

আমার pound.cfg ফাইলটি দেখতে কেমন লাগে।

"লিসেনএইচটিটিপি" এবং "লিসেনএইচটিটিপিএস" ট্যাগগুলির অধীনে, আপনি যে পাউন্ডটি ইনস্টল করেছেন সেটির আইপি ঠিকানা আপনাকে প্রবেশ করতে হবে।

ডিফল্টরূপে একটি সার্ভার এইচটিটিপি অনুরোধগুলি পোর্ট 80 এবং এইচটিটিপিএস 443 পোর্টের মাধ্যমে অনুরোধগুলি পরিচালনা করে “ ব্যাকএন্ড ট্যাগগুলিতে আইপি ঠিকানা এবং পোর্ট নম্বর রয়েছে যা ওয়েব সার্ভারগুলি চলছে।

এখন ফাইলটি সঠিকভাবে সম্পাদনার পরে সংরক্ষণ করুন এবং নীচের একটি আদেশ জারি করে পাউন্ড পরিষেবাটি পুনরায় চালু করুন।

# /etc/init.d/pound restart 
OR
# service pound restart
OR
# systemctl restart pound.service

৪. এখন দেখার সময় এসেছে। আমাদের কনফিগারেশনগুলি ঠিকঠাক কাজ করে কিনা তা পরীক্ষা করতে দুটি ওয়েব ব্রাউজার খুলুন। অ্যাড্রেস বারে আপনার পাউন্ড গেটওয়ের আইপি ঠিকানা টাইপ করুন এবং দেখুন কী।

প্রথম অনুরোধটি প্রথম ওয়েবসারভার01 লোড করা উচিত এবং অন্য ওয়েব ব্রাউজারের দ্বিতীয় অনুরোধটি দ্বিতীয় ওয়েবসারভার02 লোড করা উচিত।

তদুপরি, একটি দৃশ্যের কথা ভাবুন যেমন আপনার কাছে ভারসাম্য লোড করার জন্য দুটি ওয়েব সার্ভার রয়েছে এবং সার্ভারের একটির পারফরম্যান্স ভাল এবং অন্যটির পারফরম্যান্স এতটা ভাল না।

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

লোডের মতো ভারসাম্য বজায় রাখতে আপনাকে pound.cfg ফাইলের অভ্যন্তরে একটি একক প্যারামিটার যুক্ত করতে হবে। আসুন এটি একবার দেখুন।

192.168.1.161:5555 সার্ভারটি আরও ভাল সার্ভার মনে করুন। তারপরে আপনার সেই সার্ভারে আরও অনুরোধ প্রবাহ করা দরকার। 192.168.1.161 সার্ভারের জন্য কনফিগার করা "ব্যাকএন্ড" ট্যাগের অধীনে, শেষ ট্যাগের আগে "অগ্রাধিকার" পরামিতি যুক্ত করুন।

নীচের উদাহরণ দেখুন।

"অগ্রাধিকার" প্যারামিটারের জন্য আমরা যে ব্যাপ্তিটি ব্যবহার করতে পারি তা 1-9 এর মধ্যে। আমরা যদি এটি সংজ্ঞায়িত না করি তবে 5 এর ডিফল্ট মান নির্ধারিত হবে।

তারপরে লোড সমানভাবে ভারসাম্যপূর্ণ হবে। আমরা যদি অগ্রাধিকার নম্বরটি সংজ্ঞায়িত করি তবে POUND উচ্চতর অগ্রাধিকার নম্বর সহ সার্ভারটি প্রায়শই লোড করবে load সুতরাং এই ক্ষেত্রে, 192.168.1.161:5555 সার্ভারের চেয়ে 172.16.1.204:8888 এর চেয়ে বেশি বার লোড হবে।

পদক্ষেপ 3: জরুরী ব্রেকডাউন পরিকল্পনা করে

জরুরী ট্যাগ: সমস্ত ট্যাগ শেষ সার্ভারগুলি মারা যাওয়ার ক্ষেত্রে এই ট্যাগটি একটি সার্ভার লোড করতে ব্যবহৃত হয়। নিম্নলিখিত হিসাবে আপনি এটি pound.cfg এর শেষ শেষ ট্যাগটি যুক্ত করতে পারেন।

“Emergency
           Address 192.168.5.10
           Port        8080
   End”

P. পাউন্ড সর্বদা ট্র্যাক করে রাখে যে কোন ব্যাকএন্ড সার্ভারগুলি জীবিত এবং কোনটি নেই। আমরা কত সেকেন্ডের পরে এটি নির্ধারণ করতে পারি যে পাউন্ডে পাউন্ডে সিএফজি-তে "অ্যালাইভ" পরামিতি যুক্ত করে ব্যাকএন্ড সার্ভারগুলি চেকআউট করা উচিত।

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

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

P. পাউন্ড ডিমন পাউন্ডসিটিএল কমান্ড দ্বারা পরিচালিত হবে। এটি থাকার মাধ্যমে আমাদের পাউন্ড সিএফজি ফাইলটি সম্পাদনা করার দরকার নেই এবং আমরা একটি একক কমান্ডের মাধ্যমে লিস্টনার সার্ভার, ব্যাকএন্ড সার্ভার এবং সেশন ইত্যাদি জারি করতে পারি।

Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]

  1. -c আপনার সকেটের পাথ নির্ধারণ করে।
  2. -L/-l আপনার আর্কিটেকচারের শ্রোতাদের সংজ্ঞা দেয়।
  3. -S/-s পরিষেবাটি সংজ্ঞায়িত করে
  4. -বি /-বি ব্যাকএন্ড সার্ভারগুলি সংজ্ঞায়িত করে

আরও তথ্যের জন্য পাউন্ডক্টেল ম্যান পৃষ্ঠা দেখুন।

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