আমি ২টি VPS দিয়ে Active active cluster করতে চাই বিস্তারিত ভাবে গাইড করো।
আমার ভিপিস এর পাবলিক IP সমূহ
VPS 1 104.18.26.90 (ip) nd1.joypurhost.com9 (Hostname)
VPS 2 104.18.27.92 (ip) nd2.joypurhost.com9 (Hostname)
সাথে আমি চাচ্ছি VPS 1 যদি 70% লোড হয় তখন ট্রাফিক VPS 2 থেকে রাউট হবে। cluster টিতে করতে যদি কোনো কন্ট্রোল প্যানেল ( যেমনঃ cpanel / webuzo / cwp etc বা তোমার সাজেস্টেড কোনো কন্ট্রোল প্যানেল ) ব্যবহার করা হয় তাহলে আমার জন্য খুব ভালো হয় কারণ আমি টেকনিক্যাল পারসন নয়।

Active-Active ক্লাস্টার সেটআপের জন্য নিচের ধাপগুলো অনুসরণ করুন। এই গাইডে আমরা কন্ট্রোল প্যানেল হিসেবে Webuzo ব্যবহার করব এবং Cloudflare Load Balancer এর মাধ্যমে লোড ম্যানেজমেন্ট করব (যেহেতু এটি ইউজার-ফ্রেন্ডলি এবং কম টেকনিক্যাল জ্ঞান প্রয়োজন)।


প্রস্তুতি:

  1. VPS সেটআপ:

    • VPS 1: nd1.joypurhost.com (104.18.26.90)

    • VPS 2: nd2.joypurhost.com (104.18.27.92)

    • দুটি VPS-ই Ubuntu 20.04/22.04 বা CentOS 7/8 হতে হবে (Webuzo সাপোর্ট করে এমন OS)।

  2. ডোমেইন প্রস্তুতি:

    • আপনার ডোমেইন (যেমন: example.com) Cloudflare-এর সাথে কনফিগার করুন।


ধাপ ১: Webuzo ইন্সটলেশন (দুই VPS-এ)

  1. Webuzo ডাউনলোড ও ইন্সটল:

     
    wget -N http://files.webuzo.com/install.sh
    chmod +x install.sh
    ./install.sh
    • ইন্সটলের সময় প্রশ্নের উত্তর দিন (রুট পাসওয়ার্ড, ইমেইল ইত্যাদি)।

  2. ওয়েব সার্ভার ও ডেটাবেস কনফিগার:

    • Webuzo প্যানেলে লগিন করে Apache/Nginx, PHP, MySQL ইন্সটল করুন।


ধাপ ২: ডেটা সিঙ্ক্রোনাইজেশন (দুই সার্ভারে)

  1. ফাইল সিঙ্ক্রোনাইজেশন (rsync বা lsyncd):

    • VPS 1-এ:

       
      rsync -avz /var/www/html/ [email protected]:/var/www/html/
    • স্বয়ংক্রিয় সিঙ্কের জন্য Cron Job সেট করুন (প্রতি ৫ মিনিটে)।

  2. MySQL Master-Master রেপ্লিকেশন:

    • Webuzo-র phpMyAdmin ব্যবহার করে এই গাইড অনুসরণ করুন।


ধাপ ৩: Cloudflare Load Balancer সেটআপ

  1. Cloudflare অ্যাকাউন্টে লগিন করুন:

    • DNS-এ example.com এর রেকর্ড হিসেবে দুটি VPS-এর IP যুক্ত করুন (A রেকর্ড)।

  2. লোড ব্যালেন্সার তৈরি করুন:

    • Traffic > Load Balancing এ গিয়ে “Create Load Balancer” চাপুন।

    • Hostname: example.com

    • Origin Servers:

      • VPS 1: nd1.joypurhost.com (104.18.26.90)

      • VPS 2: nd2.joypurhost.com (104.18.27.92)

  3. হেলথ চেক কনফিগার:

    • Health Check Path: /health (নিচের স্ক্রিপ্ট ব্যবহার করুন)।

    • Advanced Settings: Check Interval: 60 seconds.

  4. ট্রাফিক নিয়ন্ত্রণ:

    • Traffic Steering: “Weighted” পদ্ধতি নির্বাচন করুন।

    • VPS 1-এর Weight: 70, VPS 2-এর Weight: 30 (শুরুতে)।

    • Fallback Pool: VPS 2 নির্বাচন করুন।


ধাপ ৪: লোড মোনিটরিং স্ক্রিপ্ট (দুই সার্ভারে)

  1. হেলথ চেক এন্ডপয়েন্ট তৈরি করুন:

    • /var/www/html/health.php ফাইল তৈরি করুন:

       
      <?php
      $load = sys_getloadavg()[0];
      $max_load = 0.7; // 70% লোড
      if ($load > $max_load) {
          http_response_code(503); // সার্ভার ব্যস্ত
      } else {
          echo "OK";
      }
      ?>
  2. Cloudflare-কে লোড রেসপন্স জানান:

    • এই স্ক্রিপ্টের মাধ্যমে VPS 70% লোডে পৌঁছালে Cloudflare অটোমেটিক VPS 2-এ ট্রাফিক পাঠাবে।


ধাপ ৫: DNS কনফিগারেশন

  1. Cloudflare DNS-এ লোড ব্যালেন্সার IP যুক্ত করুন:

    • example.com এর A রেকর্ড Cloudflare-এর Load Balancer IP-তে পয়েন্ট করুন।


পরীক্ষা:

  1. লোড টেস্ট করুন:

    • VPS 1-এ ভারী ট্রাফিক জেনারেট করুন (যেমন: stress --cpu 8)।

    • Cloudflare প্যানেলে দেখুন VPS 1 “Unhealthy” স্ট্যাটাস দেখালে ট্রাফিক VPS 2-এ চলে যাবে।


সতর্কতা:

  • ডেটা সিঙ্ক্রোনাইজেশন ও রেপ্লিকেশন নিয়মিত মনিটর করুন।

  • SSL সার্টিফিকেট সক্রিয় রাখুন (Cloudflare AutoSSL বা Let’s Encrypt ব্যবহার করুন)।

এই সেটআপে আপনি High Availability ও লোড ব্যালেন্সিং পাবেন, আর Webuzo ও Cloudflare-এর GUI ইন্টারফেস আপনার কাজ সহজ করবে!

আরো বিস্তারিত ভাবে গাইড কারো সাথে cloudflare চেঞ্জ করে অন্য কিসু ব্যবহার করো যা ফ্রি বা ওপেন সৌর্স

নিচে Open-Source/ফ্রি টুলস ব্যবহার করে Active-Active ক্লাস্টার সেটআপের সম্পূর্ণ গাইড দেওয়া হলো। এই গাইডে আমরা HAProxy (লোড ব্যালেন্সার) এবং lsyncd (রিয়েল-টাইম ফাইল সিঙ্ক) ব্যবহার করব। এছাড়াও, MySQL/MariaDB Galera Cluster ব্যবহার করে ডেটাবেস সিঙ্ক্রোনাইজেশন নিশ্চিত করব।


প্রয়োজনীয় টুলস:

  1. HAProxy – ওপেন সোর্স লোড ব্যালেন্সার (লোড অনুযায়ী ট্রাফিক ডিস্ট্রিবিউট করে)।

  2. lsyncd – রিয়েল-টাইম ফাইল সিঙ্ক্রোনাইজেশন টুল।

  3. MariaDB Galera Cluster – অটো-সিঙ্ক ডেটাবেস ক্লাস্টার।

  4. Glances – সার্ভার লোড মোনিটরিং টুল।


ধাপ ১: Webuzo ইন্সটলেশন (দুই VPS-এ)

  1. Webuzo ইন্সটল করুন:

     
    wget -N http://files.webuzo.com/install.sh
    chmod +x install.sh
    ./install.sh
    • ইন্সটলেশনের সময় Admin প্যানেলের ইউজারনেম, পাসওয়ার্ড সেট করুন।

  2. ওয়েব সার্ভার কনফিগার করুন:

    • Webuzo প্যানেলে Apache/Nginx, PHP, MariaDB ইন্সটল করুন।


ধাপ ২: রিয়েল-টাইম ফাইল সিঙ্ক (lsyncd)

  1. lsyncd ইন্সটল করুন (দুই সার্ভারে):

     
    apt update && apt install lsyncd -y  # Ubuntu/Debian
    yum install epel-release && yum install lsyncd -y  # CentOS
  2. কনফিগারেশন ফাইল তৈরি করুন (/etc/lsyncd.lua):

     
    settings {
        logfile = "/var/log/lsyncd.log",
        statusFile = "/var/log/lsyncd-status.log"
    }
    
    sync {
        default.rsync,
        source = "/var/www/html",
        target = "[email protected]:/var/www/html",  # VPS 2-এর IP
        rsync = {
            archive = true,
            compress = true,
            verbose = true,
            _extra = {"--delete"}  # সোর্সে ডিলিট হলে টার্গেটেও ডিলিট করবে
        }
    }
    • VPS 2-এও একই কনফিগারেশন করুন (সোর্স ও টার্গেট ঠিকানা উল্টে দিন)।

  3. lsyncd সার্ভিস রিস্টার্ট করুন:

     
    systemctl restart lsyncd

ধাপ ৩: MariaDB Galera Cluster (অটো-সিঙ্ক ডেটাবেস)

  1. MariaDB রিপোজিটরি যোগ করুন (দুই সার্ভারে):

     
    apt install software-properties-common -y
    apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
    add-apt-repository 'deb [arch=amd64] http://mirror.zol.co.zw/mariadb/repo/10.5/ubuntu focal main'
    apt update
  2. Galera Cluster ইন্সটল করুন:

     
    apt install mariadb-server galera-4 -y
  3. কনফিগারেশন ফাইল এডিট করুন (/etc/mysql/my.cnf):

     
    [mysqld]
    bind-address = 0.0.0.0
    wsrep_on = ON
    wsrep_provider = /usr/lib/galera/libgalera_smm.so
    wsrep_cluster_name = "joypur_cluster"
    wsrep_cluster_address = "gcomm://104.18.26.90,104.18.27.92"  # দুই VPS-এর IP
    wsrep_node_address = "104.18.26.90"  # VPS 1-এর IP (VPS 2-এ এটি পরিবর্তন করুন)
    wsrep_sst_method = rsync
  4. ক্লাস্টার শুরু করুন:

    • VPS 1-এ:

       
      systemctl stop mysql
      galera_new_cluster
      systemctl start mysql
    • VPS 2-এ:

       
      systemctl stop mysql
      systemctl start mysql

ধাপ ৪: HAProxy লোড ব্যালেন্সার সেটআপ (একটি নতুন VPS-এ বা যেকোনো একটিতে)

  1. HAProxy ইন্সটল করুন:

     
    apt install haproxy -y  # Ubuntu/Debian
    yum install haproxy -y  # CentOS
  2. কনফিগারেশন ফাইল এডিট করুন (/etc/haproxy/haproxy.cfg):

     
    global
        log /dev/log local0
        maxconn 4000
        user haproxy
        group haproxy
    
    defaults
        mode http
        timeout connect 10s
        timeout client 30s
        timeout server 30s
    
    frontend http_front
        bind *:80
        stats uri /haproxy?stats
        default_backend http_back
    
    backend http_back
        balance roundrobin
        server nd1 104.18.26.90:80 check weight 70  # VPS 1
        server nd2 104.18.27.92:80 check weight 30  # VPS 2
    
    listen stats
        bind *:8080
        stats enable
        stats uri /
        stats realm HAProxy Statistics
        stats auth admin:your_password  # পাসওয়ার্ড সেট করুন
  3. লোড-বেইজড হেলথ চেক স্ক্রিপ্ট যোগ করুন:

    • প্রত্যেক VPS-এ /var/www/html/health ফাইল তৈরি করুন:

       
      #!/bin/bash
      load=$(awk '{print $1}' /proc/loadavg)
      max_load=0.7  # 70% লোড
      if (( $(echo "$load > $max_load" | bc -l) )); then
          echo "HTTP/1.1 503 Service Unavailable\r\n"
      else
          echo "HTTP/1.1 200 OK\r\n"
      fi
    • HAProxy কনফিগারেশনে হেলথ চেক যোগ করুন:

       
      backend http_back
          option httpchk GET /health
          http-check expect status 200
          server nd1 104.18.26.90:80 check weight 70
          server nd2 104.18.27.92:80 check weight 30
  4. HAProxy রিস্টার্ট করুন:

     
    systemctl restart haproxy

ধাপ ৫: লোড মোনিটরিং (Glances)

  1. Glances ইন্সটল করুন (দুই সার্ভারে):

     
    apt install glances -y
  2. গ্রাফিক্যাল ড্যাশবোর্ড চালু করুন:

     
    glances -w  # ব্রাউজারে http://VPS_IP:61208 ওপেন করুন

ধাপ ৬: DNS কনফিগারেশন

  1. আপনার ডোমেইন প্রোভাইডারে HAProxy সার্ভারের IP-তে A রেকর্ড সেট করুন।


ট্রাফিক টেস্টিং:

  1. VPS 1-এ ভারী লোড দিন:

     
    sudo apt install stress
    stress --cpu 4 --timeout 300s  # 4 কোরে ৫ মিনিটের জন্য লোড
  2. HAProxy স্ট্যাটাস পেজে (http://haproxy_ip:8080) চেক করুন:

    • VPS 1 “DOWN” বা “MAINT” দেখালে ট্রাফিক VPS 2-এ যাবে।


সমস্যা সমাধান:

  • ফাইল সিঙ্ক ইস্যু: lsyncd লগ চেক করুন (/var/log/lsyncd.log)।

  • ডেটাবেস সিঙ্ক ইস্যু: SHOW STATUS LIKE 'wsrep_%'; MySQL কমান্ডে গ্যালেরা স্ট্যাটাস চেক করুন।

  • HAProxy হেলথ চেক: curl -I http://VPS_IP/health দিয়ে রেসপন্স ভেরিফাই করুন।


এই সেটআপে আপনি ফুলি অটোমেটিক Active-Active ক্লাস্টার পাবেন, যেখানে লোড ৭০% ছাড়ালে HAProxy অটোমেটিক ট্রাফিক অন্যটিতে রিডিরেক্ট করবে। সব টুলস ফ্রি এবং ওপেন সোর্স!

 
 
 
 
 
 
Scroll to Top