Load Balancing

Load Balancing কী?

Load Balancing হলো একাধিক সার্ভারের মধ্যে ট্রাফিক ভাগ করে দেওয়ার কৌশল, যাতে কোনো একটি সার্ভারের ওপর অতিরিক্ত চাপ না পড়ে। এটি একটি Traffic Controller-এর মতো, যা দেখে কোন সার্ভার ব্যস্ত আর কোনটি ফাঁকা, তারপর সেই অনুযায়ী রিকোয়েস্ট পাঠায়।

উদাহরণ: একটি ফুড ডেলিভারি অ্যাপে একসাথে হাজার হাজার মানুষ অর্ডার দিচ্ছে। সব রিকোয়েস্ট একটি সার্ভারে গেলে সেটি ধীর হবে বা Crash করবে। Load Balancer রিকোয়েস্টগুলো একাধিক সার্ভারে ভাগ করে দেয়, ফলে সবাই দ্রুত সেবা পায়।

Load Balancing কেন প্রয়োজন?

  • High Availability: কোনো সার্ভার বিকল হলে বাকিদের কাছে রিকোয়েস্ট যায়, সার্ভিস বন্ধ হয় না।

  • Scalability: নতুন সার্ভার যোগ করলে Load Balancer তাতেও ট্রাফিক পাঠাতে পারে।

  • Performance: কম Load-এর সার্ভারে রিকোয়েস্ট গেলে সাড়া দ্রুত আসে।

  • Failure Handling: Health Check দিয়ে অসুস্থ সার্ভার শনাক্ত করে তাকে বাদ দেয়।

  • Security: সার্ভারের সামনে Gateway হিসেবে থাকায় DDoS প্রতিরোধে কিছুটা সাহায্য করে, তবে এটি পূর্ণাঙ্গ সমাধান নয়।

Load Balancing কীভাবে কাজ করে?

Load Balancer অনেকটা Reverse Proxy-র মতো। এটি ইউজারের রিকোয়েস্ট প্রথমে গ্রহণ করে, তারপর ব্যাকএন্ডের কোনো একটি সার্ভারে পাঠায়। ব্যবহারকারী শুধু Load Balancer-কেই দেখে, পেছনের সার্ভারগুলোকে নয়।

দুই স্তরে বসানো যায়:

  • Global Load Balancing: বিভিন্ন Data Center বা Region-এর মধ্যে ট্রাফিক ভাগ করে (যেমন ইউজারকে কাছের Region-এ পাঠানো)।

  • Local Load Balancing: একটি Data Center-এর ভেতরে সার্ভারগুলোর মধ্যে ট্রাফিক ভাগ করে।

জনপ্রিয় Load Balancing অ্যালগরিদম

১. Round Robin

রিকোয়েস্ট পালাক্রমে সার্ভারগুলোতে যায়: A, B, C, তারপর আবার A।

  • সুবিধা: সহজ ও কার্যকর

  • অসুবিধা: সার্ভারের বর্তমান Load বিবেচনা করে না

২. Weighted Round Robin

শক্তিশালী সার্ভার বেশি রিকোয়েস্ট পায়, দুর্বল সার্ভার কম। সার্ভারের ক্ষমতা ভিন্ন হলে উপযোগী।

৩. Least Connections

যে সার্ভারে Active Connection সবচেয়ে কম, নতুন রিকোয়েস্ট সেখানে যায়। যেমন A-তে ১০টি ও B-তে ৫টি Connection থাকলে নতুনটি B-তে যাবে।

  • সুবিধা: ব্যস্ততা অনুযায়ী ভাগ হয়

  • অসুবিধা: সার্ভারের Processing Power বিবেচনা করে না (Weighted সংস্করণ এর সমাধান)

৪. IP Hashing

ইউজারের IP Address থেকে হিসাব করে নির্দিষ্ট সার্ভার ঠিক করা হয়, ফলে একই ইউজার সাধারণত একই সার্ভারে যায়।

  • সুবিধা: Session Consistency বজায় থাকে

  • অসুবিধা: সার্ভার বিকল হলে বা সংখ্যা বদলালে ম্যাপিং এলোমেলো হয়ে যেতে পারে। একই IP-র (যেমন অফিসের NAT) অনেক ইউজার একটি সার্ভারে জমে যেতে পারে। এই সমস্যা কমাতে Consistent Hashing ব্যবহার হয়।

৫. Least Response Time

যে সার্ভার সবচেয়ে দ্রুত সাড়া দিচ্ছে, তাকে অগ্রাধিকার দেওয়া হয়।

Layer 4 বনাম Layer 7

বিষয়

Layer 4 (Transport)

Layer 7 (Application)

ভিত্তি

IP ও Port

URL, Header, Cookie

গতি

খুব দ্রুত

তুলনামূলক ধীর

নমনীয়তা

কম

বেশি

উদাহরণ

/api একদিকে, /images অন্যদিকে পাঠানো সম্ভব নয়

Path বা Header দেখে আলাদা সার্ভিসে পাঠানো যায়

Microservice আর্কিটেকচারে Layer 7 বেশি ব্যবহৃত হয়।

Load Balancer এর ধরন

  • Hardware Load Balancer: বিশেষ ডিভাইস, অত্যন্ত উচ্চ ট্রাফিকের জন্য। উদাহরণ: F5 BIG-IP, Citrix NetScaler

  • Software Load Balancer: সার্ভারে ইনস্টল করে চালানো হয়। উদাহরণ: Nginx, HAProxy, Traefik

  • Cloud Load Balancer: ম্যানেজড সার্ভিস। উদাহরণ: AWS ELB/ALB, Google Cloud Load Balancing

Health Check ও Session

  • Health Check: Load Balancer নিয়মিত সার্ভারগুলোকে পিং করে দেখে। সাড়া না পেলে সেটিকে ঘূর্ণন থেকে বাদ দেয়।

  • Sticky Session: একই ইউজারকে সবসময় একই সার্ভারে পাঠানো। তবে এতে Load অসমান হতে পারে এবং সার্ভার বিকল হলে Session হারায়। ভালো উপায় হলো সার্ভারকে Stateless রেখে Session Redis-এ রাখা।

Load Balancing বাস্তবায়নের ধাপ

  1. Server Cluster তৈরি করুন: একাধিক সার্ভার প্রস্তুত রাখুন।

  2. Load Balancer কনফিগার করুন: Nginx, HAProxy বা Cloud সার্ভিস ব্যবহার করুন।

  3. অ্যালগরিদম বেছে নিন: সিস্টেমের ধরন অনুযায়ী।

  4. Health Check চালু করুন।

  5. Auto Scaling চালু করুন: ট্রাফিক বাড়লে স্বয়ংক্রিয়ভাবে সার্ভার যোগ হবে।

  6. Load Balancer-কেও Redundant রাখুন।

Load Balancing ডিজাইনে মনে রাখবেন

  • Load Balancer নিজেই Single Point of Failure হতে পারে। তাই একাধিক Load Balancer (Active-Passive বা Active-Active) রাখুন।

  • Horizontal Scaling-এর জন্য সার্ভার Stateless রাখা জরুরি।

  • SSL/TLS Termination Load Balancer-এ করলে সার্ভারের বোঝা কমে।

  • Load Balancer-এর Metric (Latency, Error Rate, Active Connection) Monitor করুন।

Load Balancing আধুনিক সিস্টেম ডিজাইনের অপরিহার্য অংশ, যা সার্ভারের স্থায়িত্ব, পারফরম্যান্স ও Scalability নিশ্চিত করে এবং High Availability বজায় রাখে। সঠিক অ্যালগরিদম, Health Check ও Redundancy মিলিয়ে ডিজাইন করলেই এটি পূর্ণ সুফল দেয়।