Skip to Content
Nextra 4.0 is released 🎉
DocumentationScale From 0 to millionFigure 4 (লোড ব্যালান্সার কীভাবে কাজ করে)

লোড ব্যালান্সার এবং ডাটাবেস রিপ্লিকেশন (Bangla Translation)

একটি Load Balancer আসা সব ট্রাফিককে সমানভাবে বিভিন্ন Web Server-এর মধ্যে ভাগ করে দেয়, যেগুলো একটি load-balanced set-এ থাকে। Figure 4-এ দেখানো হয়েছে Load Balancer কীভাবে কাজ করে।


Figure 4 (লোড ব্যালান্সার কীভাবে কাজ করে)

একজন ব্যবহারকারী Web Browser বা Mobile App দিয়ে mywebsite.com এ রিকোয়েস্ট পাঠায়।

এই রিকোয়েস্ট প্রথমে DNS সার্ভারে যায়, যা ডোমেইন নাম mywebsite.com কে একটি public IP Address-এ রূপান্তর করে:

88.88.88.1

এই IP Address Load Balancer-এর দিকে নির্দেশ করে। ব্যবহারকারীর রিকোয়েস্ট Load Balancer-এ পৌঁছায়।

এরপর Load Balancer সেই রিকোয়েস্টকে দুটি সার্ভারের মধ্যে যেকোনো একটিতে পাঠায়:

  • Server 1 → 10.0.0.1
  • Server 2 → 10.0.0.2

Load Balancer সমানভাবে ট্রাফিক ভাগ করে দেয়।

একটি টেবিল দেখায় DNS কীভাবে ডোমেইন নামকে IP Address-এ map করে।

এই দুইটি সার্ভার একটি private network-এর মধ্যে থাকে (dashed box দিয়ে দেখানো), অর্থাৎ এগুলো ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য নয়।


গুরুত্বপূর্ণ ধারণা

Figure 4 অনুযায়ী, ব্যবহারকারীরা সরাসরি Load Balancer-এর public IP-এর সাথে যুক্ত হয়। এরপর Load Balancer রিকোয়েস্ট Web Server-এ পাঠায়।

Private IP কী?

Private IP হলো এমন IP যা শুধুমাত্র একই network-এর ভেতরের সার্ভারগুলো একে অপরের সাথে ব্যবহার করতে পারে। এটি ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য নয়।

Load Balancer Web Server-এর সাথে যোগাযোগ করে Private IP ব্যবহার করে।


Load Balancer এর সুবিধা

এই ডিজাইনে আমরা সফলভাবে দুইটি বড় সমস্যা সমাধান করেছি:

১. Failover (সার্ভার বন্ধ হয়ে গেলে বিকল্প ব্যবস্থা)

  • যদি Server 1 বন্ধ হয়ে যায়, তাহলে সব ট্রাফিক Server 2-এ চলে যাবে
  • এতে করে ওয়েবসাইট ডাউন হবে না
  • পরে নতুন একটি healthy server আবার pool-এ যোগ করা যায়

২. High Availability & Scaling

  • যদি ট্রাফিক বেড়ে যায় এবং ২টি সার্ভার যথেষ্ট না হয়
  • তাহলে শুধু নতুন সার্ভার যোগ করলেই হবে
  • Load Balancer স্বয়ংক্রিয়ভাবে ট্রাফিক নতুন সার্ভারগুলোর মধ্যে ভাগ করে দেবে

এখন প্রশ্ন: Data Tier কী হবে?

বর্তমানে ডাটাবেস একটিই আছে, তাই:

  • কোনো failover নেই
  • কোনো redundancy নেই

এই সমস্যার সমাধানের জন্য ব্যবহার করা হয়:

Database Replication


Database Replication কী?

Wikipedia অনুযায়ী:

Database replication হলো এমন একটি পদ্ধতি যেখানে একটি মূল (master) ডাটাবেস এবং তার একাধিক কপি (slave) থাকে।


Master–Slave Model

Master Database

  • শুধু write operations (insert, update, delete) গ্রহণ করে
  • সব পরিবর্তন এখানে করা হয়

Slave Database

  • Master থেকে ডেটার কপি গ্রহণ করে
  • শুধু read operations পরিচালনা করে

গুরুত্বপূর্ণ বিষয়

  • সব data পরিবর্তন (write/update/delete) শুধুমাত্র Master DB-তে যায়
  • Read অপারেশনগুলো Slave DB-তে ভাগ করা হয়
  • কারণ বাস্তবে read operation অনেক বেশি হয় write এর তুলনায়

Figure 5 (Database Replication)


Figure 5-এ দেখানো হয়েছে:

  • উপরে একাধিক Web Server
  • মাঝখানে একটি Master DB
  • নিচে একাধিক Slave DB

Web Server → Master DB এ write করে Web Server → Slave DB থেকে read করে

Master DB থেকে data Slave DB-তে replicate হয়।


Database Replication এর সুবিধা

১. ভালো পারফরম্যান্স (Better Performance)

  • Write সব Master-এ হয়
  • Read একাধিক Slave-এ ভাগ হয়
  • ফলে একসাথে অনেক query দ্রুত প্রসেস করা যায়

২. Reliability (নির্ভরযোগ্যতা)

  • কোনো একটি সার্ভার নষ্ট হলেও ডেটা হারায় না
  • কারণ ডেটা একাধিক জায়গায় কপি করা থাকে

৩. High Availability

  • কোনো DB offline হলেও অন্য DB থেকে ডেটা পাওয়া যায়
  • ফলে সিস্টেম চালু থাকে

যদি কোনো Database বন্ধ হয়ে যায়?

পরিস্থিতি ১: Slave DB বন্ধ হয়ে গেলে

  • Read request অন্য healthy DB-তে চলে যায়
  • পরে নতুন Slave DB তৈরি করা হয়

পরিস্থিতি ২: Master DB বন্ধ হয়ে গেলে

  • একটি Slave DB কে নতুন Master বানানো হয়
  • সব write operation সেখানে করা হয়
  • নতুন Slave DB যোগ করে replication চালু করা হয়

⚠️ বাস্তবে এটি জটিল, কারণ Slave DB সবসময় আপডেটেড নাও থাকতে পারে। তাই data recovery script চালাতে হতে পারে।


Figure 6 (Final Architecture)

Figure 6-এ পুরো সিস্টেম দেখানো হয়েছে:


ধাপে ধাপে Flow

১. DNS থেকে Load Balancer-এর IP পাওয়া যায়

২. ব্যবহারকারী Load Balancer-এর সাথে connect করে

৩. Load Balancer request Server 1 বা Server 2-এ পাঠায়

৪. Web Server data পড়ে Slave DB থেকে (read operation)

৫. Write/Update/Delete সব Master DB-তে যায়

৬. Master DB data Slave DB-তে replicate করে


Final Architecture (সংক্ষেপে)

  • User → DNS → Load Balancer
  • Load Balancer → Web Servers
  • Web Servers → Database (Master + Slave)
  • Master DB → Slave DB (replication)

পরবর্তী উন্নতি

এখন আমরা Web tier এবং Data tier ভালোভাবে স্কেল করতে পেরেছি।

পরবর্তী ধাপে সিস্টেম আরও দ্রুত করার জন্য করা হয়:

  • Cache layer যোগ করা
  • Static content (JS, CSS, image, video) CDN-এ রাখা

এগুলো response time কমিয়ে সিস্টেমকে আরও efficient করে তোলে।