Failover এবং High Availability (HA) সিস্টেমের মধ্যে মূল পার্থক্য হলো সিস্টেমের স্থায়িত্ব এবং ডাউনটাইম কমানোর উপায়। এই কনফিগারেশন ডেটাবেসের জন্য অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন আপনার একটি বড় পরিমাণ ডেটা এবং ক্রিটিক্যাল অ্যাপ্লিকেশন থাকে। PostgreSQL-এ Failover এবং High Availability কনফিগারেশন সেটআপ করা গেলে, সিস্টেমের পরিপূর্ণতা বজায় রাখা যায় এবং ডেটাবেস সার্ভারের প্রাপ্যতা নিশ্চিত করা যায়।
1. Failover Configuration in PostgreSQL
Failover হল একটি প্রক্রিয়া যেখানে মূল সার্ভারটি কাজ না করলে, একটি প্রতিস্থাপন (standby) সার্ভার স্বয়ংক্রিয়ভাবে primary server হিসেবে কার্যকর হয়। এটি সিস্টেমের ডাউনটাইম কমাতে সহায়তা করে।
Failover প্রক্রিয়ার উপাদান
- Primary Server: এটি ডেটা লেখার সার্ভার, যেখানে সমস্ত ট্রানজেকশন এবং ডেটা ম্যানিপুলেশন সম্পাদিত হয়।
- Standby Server: এটি একটি read-only সার্ভার, যা মূল সার্ভারের ডেটা রেপ্লিকেট করে এবং মূল সার্ভারটি ডাউন হলে কার্যকরী হয়ে ওঠে।
- WAL Archiving: Write-Ahead Logging (WAL) PostgreSQL-এ একটি প্রক্রিয়া যা প্রতিটি ডেটা পরিবর্তনকে log ফাইলে রেকর্ড করে এবং এই log ফাইলগুলো স্ট্যান্ডবাই সার্ভারে প্রেরণ করা হয়।
Basic Failover Setup in PostgreSQL
Primary Server Configuration:
- প্রথমে,
postgresql.confএ WAL archiving এবং replication settings সক্রিয় করতে হবে।
wal_level = replica archive_mode = on archive_command = 'cp %p /var/lib/pgsql/archive/%f' max_wal_senders = 3- প্রথমে,
Standby Server Configuration:
- স্ট্যান্ডবাই সার্ভারে,
restore_commandব্যবহার করে WAL ফাইলগুলো গ্রহণ করতে হবে।
restore_command = 'cp /var/lib/pgsql/archive/%f %p'- স্ট্যান্ডবাই সার্ভারে,
Replication Setup:
- মূল সার্ভারে
pg_hba.confফাইলে স্ট্যান্ডবাই সার্ভারের অ্যাক্সেস অনুমতি দিন।
host replication replicator 192.168.1.2/32 md5- মূল সার্ভারে
Start Replication:
- স্ট্যান্ডবাই সার্ভারে replication চালু করুন।
pg_basebackup -h primary-server-ip -D /var/lib/pgsql/data -U replicator -P --wal-method=streamFailover Process:
- যদি প্রাইমারি সার্ভার ডাউন হয়ে যায়, তাহলে স্ট্যান্ডবাই সার্ভারকে প্রাইমারি সার্ভার হিসেবে promote করুন:
pg_ctl promote -D /var/lib/pgsql/data
2. High Availability Configuration in PostgreSQL
High Availability (HA) কনফিগারেশন ব্যবহৃত হয় সিস্টেমের অক্ষুণ্নতা এবং সর্বোচ্চ প্রাপ্যতা নিশ্চিত করার জন্য, যাতে সার্ভারের কোনো সমস্যা হলেও সিস্টেম সচল থাকে।
High Availability Setup in PostgreSQL
HA কনফিগারেশন তৈরি করতে কিছু সাধারণ কৌশল রয়েছে:
- Streaming Replication: PostgreSQL-এ স্ট্রিমিং রেপ্লিকেশন সিস্টেমের মাধ্যমে primary এবং standby সার্ভার একে অপরের সাথে সিঙ্ক্রোনাইজড থাকে। এটি ডেটাবেসের সিস্টেমে HA নিশ্চিত করার জন্য ব্যবহৃত হয়। স্ট্রিমিং রেপ্লিকেশনের মাধ্যমে প্রাইমারি সার্ভারের ডেটা স্ট্যান্ডবাই সার্ভারে অবিচ্ছিন্নভাবে প্রেরিত হয়।
- Hot Standby:
- PostgreSQL-এ hot standby মোডে স্ট্যান্ডবাই সার্ভার থাকে, যেখানে এটি রিড-অনলি মোডে কাজ করে। প্রাইমারি সার্ভারের ডেটা যদি বিপর্যস্ত হয়, তবে স্ট্যান্ডবাই সার্ভারকে প্রাইমারি সার্ভার হিসেবে প্রমোট করা যায়।
- Automatic Failover:
- Patroni এবং pg_auto_failover মতো PostgreSQL কনফিগারেশন টুলস ব্যবহার করে আপনি একটি স্বয়ংক্রিয় ফেইলওভার সিস্টেম সেটআপ করতে পারেন। এগুলি স্বয়ংক্রিয়ভাবে সার্ভারের সিংক্রোনাইজেশন, মনিটরিং এবং ফেইলওভার পরিচালনা করে থাকে।
- Load Balancing: HA কনফিগারেশনের মধ্যে load balancing একটি গুরুত্বপূর্ণ অংশ, যেখানে একাধিক রিড সার্ভারকে যুক্ত করা হয় এবং প্রতিটি ক্লায়েন্ট রিকোয়েস্টকে ব্যালেন্স করে বিভক্ত করা হয়। এটি PostgreSQL-এর জন্য pgpool-II অথবা PgBouncer এর মাধ্যমে করা যেতে পারে।
3. PostgreSQL HA Tools
PostgreSQL-এর HA কনফিগারেশন তৈরি করতে কিছু জনপ্রিয় টুল রয়েছে:
Patroni:
- Patroni PostgreSQL-এর জন্য একটি HA সল্যুশন যা etcd বা Consul দ্বারা সিস্টেমের স্ট্যাটাস ট্র্যাক করে এবং প্রাইমারি সার্ভারের ব্যর্থতার ক্ষেত্রে স্বয়ংক্রিয়ভাবে ফেইলওভার পরিচালনা করে।
- এটি Postgresql-এর সাথে সহজে ইন্টিগ্রেট করা যায় এবং সার্ভার ক্লাস্টার পরিচালনা করতে ব্যবহৃত হয়।
pg_auto_failover:
- pg_auto_failover PostgreSQL-এর জন্য একটি স্বয়ংক্রিয় ফেইলওভার সিস্টেম, যা সিস্টেমের primary এবং standby সার্ভারদের মনিটর করে এবং প্রাইমারি সার্ভারের ব্যর্থতার ঘটনার পর স্ট্যান্ডবাই সার্ভারকে প্রাইমারি হিসেবে নির্বাচন করে।
PgBouncer:
- PgBouncer হল একটি কানেকশন পুলার যা PostgreSQL-এর জন্য ব্যবহৃত হয়। এটি একটি লোড ব্যালান্সার হিসেবে কাজ করতে পারে এবং একাধিক সার্ভারের মধ্যে ট্রাফিক ভাগ করে দেয়।
Corosync/Pacemaker:
- Corosync এবং Pacemaker ক্লাস্টার ম্যানেজমেন্ট টুলস PostgreSQL HA সিস্টেমে ফেইলওভার এবং রেপ্লিকেশন পরিচালনার জন্য ব্যবহৃত হতে পারে।
4. Steps for Implementing High Availability with Patroni
Patroni দিয়ে HA কনফিগারেশন করা হলে, এটি PostgreSQL-এর জন্য একটি সিস্টেম তৈরি করে যা স্বয়ংক্রিয়ভাবে ফেইলওভার এবং লিড নির্বাচন পরিচালনা করে।
Step-by-Step Process:
Install Patroni on All Nodes:
- Patroni ইনস্টল করতে হবে সমস্ত সিস্টেমে:
sudo apt-get install patroniConfigure Patroni:
- প্রতিটি সিস্টেমের জন্য একটি কনফিগারেশন ফাইল তৈরি করুন যাতে Patroni, PostgreSQL এবং etcd বা Consul ব্যবহার করা হয়।
scope: postgres namespace: /db/ name: node1 data_dir: /data/postgres ...Start Patroni on All Nodes:
- Patroni ক্লাস্টারের সকল নোডে শুরু করুন:
patroni /etc/patroni.yml- Verify HA Setup:
- এখন আপনার HA কনফিগারেশন প্রস্তুত এবং ফেইলওভার প্রক্রিয়া কাজ করছে। প্রাইমারি সার্ভার ডাউন হলে, এটি স্বয়ংক্রিয়ভাবে স্ট্যান্ডবাই সার্ভারকে প্রাইমারি হিসেবে প্রমোট করবে।
সারাংশ
- Failover এবং High Availability সিস্টেমের সুরক্ষা এবং স্থায়িত্ব নিশ্চিত করতে গুরুত্বপূর্ণ কনফিগারেশন এবং টুলস। Failover একটি প্রক্রিয়া যা সার্ভারের ব্যর্থতার পর একটি স্ট্যান্ডবাই সার্ভারকে প্রধান সার্ভার হিসেবে কার্যকরী করে তোলে।
- High Availability কনফিগারেশন ডেটাবেস ক্লাস্টারকে সার্ভারের ব্যর্থতা থেকে সুরক্ষিত রাখে এবং সিস্টেমের ডাউনটাইম কমিয়ে আনে।
- PostgreSQL-এ Patroni, pg_auto_failover, pgpool-II, এবং PgBouncer সহ বিভিন্ন টুলস HA এবং failover কনফিগারেশন বাস্তবায়নে সহায়ক।
Read more