Multi-Server কনফিগারেশন একটি পরিবেশে একাধিক সার্ভার ব্যবহারের প্রক্রিয়া, যেখানে বিভিন্ন সার্ভার একে অপরের সাথে সমন্বয় করে কাজ করে। এটি সাধারণত হাই অ্যাভেলিবিলিটি, লোড ব্যালান্সিং, এবং স্কেলেবিলিটি নিশ্চিত করার জন্য ব্যবহৃত হয়। যখন একটি সিস্টেমের ট্রাফিক বৃদ্ধি পায় অথবা একটি সার্ভারের উপর বেশি চাপ পড়ে, তখন Multi-Server কনফিগারেশন একটি কার্যকরী সমাধান হিসেবে কাজে আসে।
Multi-Server কনফিগারেশন বিভিন্ন ধরনের হতে পারে, যেমন:
- Load Balancing (লোড ব্যালান্সিং): একাধিক সার্ভারের মধ্যে ট্রাফিক বণ্টন করা।
- Database Replication (ডাটাবেস রিপ্লিকেশন): একাধিক ডাটাবেস সার্ভারের মধ্যে ডেটা সিঙ্ক্রোনাইজ করা।
- Failover Systems (ফেইলওভার সিস্টেম): যদি এক সার্ভার অচল হয়ে যায়, অন্য সার্ভারটি কাজ চালিয়ে যাবে।
এখানে, MySQL বা MariaDB ডাটাবেসের জন্য Multi-Server কনফিগারেশন কিভাবে করা যায়, সে সম্পর্কে বিস্তারিত আলোচনা করা হবে।
MySQL Multi-Server কনফিগারেশন
MySQL বা MariaDB ডাটাবেসের Multi-Server কনফিগারেশন সাধারণত Replication এবং Load Balancing এর মাধ্যমে করা হয়। এখানে ডাটাবেসের একটি প্রধান সার্ভার (Master) এবং এক বা একাধিক প্রতিলিপি (Replica) সার্ভার থাকবে।
১. Master-Slave Replication সেটআপ করা
Master-Slave Replication হল একটি সিস্টেম যেখানে একটি সার্ভার (Master) সমস্ত ডেটা লেখে এবং একাধিক সার্ভার (Slave) সেই ডেটার কপি রাখে। এটি ডাটাবেসের লোড কমাতে সাহায্য করে এবং ডেটা রিড করার জন্য স্লেভ সার্ভার ব্যবহৃত হয়।
Master Server কনফিগারেশন
my.cnfফাইল কনফিগার করুনmy.cnfফাইলের মধ্যে নিম্নলিখিত সেটিংস যুক্ত করুন:[mysqld] server-id = 1 log-bin = /var/log/mysql/mysql-bin.log bind-address = 0.0.0.0 binlog-do-db = your_database_nameReplication User তৈরি করুন
MySQL এ Replication এর জন্য একটি বিশেষ ব্যবহারকারী তৈরি করুন:CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;Master Server Restart করুন
MySQL সার্ভার রিস্টার্ট করুন:sudo systemctl restart mysql
Slave Server কনফিগারেশন
my.cnfফাইল কনফিগার করুন
Slave সার্ভারেmy.cnfফাইলের মধ্যে নিম্নলিখিত সেটিংস যুক্ত করুন:[mysqld] server-id = 2 replicate-do-db = your_database_name- Master থেকে স্লেভে ডেটা সিঙ্ক্রোনাইজ করুন
- Master সার্ভারে
SHOW MASTER STATUS;কমান্ড চালিয়ে লগ ফাইলের নাম এবং পজিশন সংগ্রহ করুন। Slave সার্ভারে নিম্নলিখিত কোড চালান:
CHANGE MASTER TO MASTER_HOST='master_server_ip', MASTER_USER='replica_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 154; START SLAVE;
- Master সার্ভারে
Slave সার্ভার রিস্টার্ট করুন
sudo systemctl restart mysqlReplication Status চেক করুন
Slave সার্ভারে Replication সঠিকভাবে চলছে কিনা তা দেখতে:SHOW SLAVE STATUS\G
২. Load Balancing সেটআপ করা
লোড ব্যালান্সিং ব্যবহার করে আপনি সার্ভারগুলোর মধ্যে ট্রাফিক ভাগ করে নিতে পারেন। সাধারণত HAProxy বা NGINX ব্যবহার করে লোড ব্যালান্সিং কনফিগার করা হয়।
HAProxy সেটআপ
HAProxy ইনস্টল করুন
sudo apt-get install haproxyHAProxy কনফিগারেশন ফাইল এডিট করুন
/etc/haproxy/haproxy.cfgফাইলটি খুলুন এবং নিম্নলিখিত কনফিগারেশন যুক্ত করুন:global log /dev/log local0 maxconn 200 defaults log global option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend mysql_front bind *:3306 default_backend mysql_back backend mysql_back balance roundrobin server master 192.168.1.1:3306 check server slave1 192.168.1.2:3306 check server slave2 192.168.1.3:3306 checkHAProxy সার্ভার রিস্টার্ট করুন
sudo systemctl restart haproxy
NGINX সেটআপ
NGINX ইনস্টল করুন
sudo apt-get install nginxNGINX কনফিগারেশন ফাইল এডিট করুন
/etc/nginx/nginx.confফাইলটি খুলুন এবং নিম্নলিখিত কনফিগারেশন যুক্ত করুন:http { upstream mysql_cluster { server 192.168.1.1:3306; server 192.168.1.2:3306; server 192.168.1.3:3306; } server { listen 3306; location / { proxy_pass http://mysql_cluster; } } }NGINX সার্ভার রিস্টার্ট করুন
sudo systemctl restart nginx
৩. Failover এবং High Availability (HA)
Failover সিস্টেমের মাধ্যমে আপনি এক সার্ভারের অচল হয়ে যাওয়ার পর অন্য সার্ভার থেকে সেবা চালিয়ে যেতে পারেন। MySQL-এ HA ব্যবস্থাপনা করার জন্য MHA (Master High Availability) বা Galera Cluster ব্যবহার করা হয়।
MHA Failover সেটআপ
- MHA ইনস্টল করুন
MHA ক্লাস্টার ব্যবস্থাপনা টুল হিসেবে ব্যবহৃত হয় যা MySQL-এর জন্য High Availability (HA) সরবরাহ করে। - MHA কনফিগারেশন এবং ম্যানেজার ইনস্টল করুন
MHA ম্যানেজার এবং Node ইনস্টল করে একটি HA ক্লাস্টার তৈরি করুন।
সারাংশ
Multi-Server কনফিগারেশন এবং সেটআপ একটি শক্তিশালী পদ্ধতি, যা ডাটাবেসের পারফরম্যান্স উন্নত করতে এবং উচ্চ উপলভ্যতা (HA) নিশ্চিত করতে সহায়তা করে। MySQL Replication, Load Balancing, এবং Failover Systems ব্যবহার করে সার্ভারের লোড ভারসাম্য রক্ষা করা এবং সার্ভার ব্যর্থতার পরেও সেবা চালিয়ে যাওয়া সম্ভব। PHPMyAdmin এবং HAProxy বা NGINX ব্যবহার করে এসব কনফিগারেশন বাস্তবায়ন করা যেতে পারে।