কম্পিউটার টিউটোরিয়াল

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

এই আর্টিকেলে, আমরা দুটি squid (Linux) প্রক্সি সার্ভারের হাই-অভেইলেবল ফেইলওভার কনফিগারেশন বিবেচনা করব যাতে কর্পোরেট LAN থেকে ইন্টারনেট এক্সেস করা যায়। ফেইলওভার কনফিগারেশন তৈরির জন্য আমরা keepalived ব্যবহার করে একটি HA ক্লাস্টার তৈরি করব।
HA ক্লাস্টার হলো সার্ভারগুলোর একটি গ্রুপ যেটিতে এমবেডেড রিডান্ডেন্সি থাকে যাতে গ্রুপের যেকোনো সার্ভারের হার্ডওয়্যার বা সফটওয়্যার সমস্যা হলে অ্যাপ ডাউনটাইম ন্যূনতম করা যায়। এই ডেফিনিশন অনুযায়ী, HA ক্লাস্টারের সঠিক অপারেশনের জন্য নিচের জিনিসগুলো বাস্তবায়ন করা আবশ্যক:

  • সার্ভার স্টেট চেক;
  • সার্ভার ফেইল হওয়ার ক্ষেত্রে রিসোর্সের অটোমেটিক সুইচিং।

Keepalived এই দুটোই সক্ষম করে। Keepalived হলো Linux সিস্টেমে একটি সিস্টেম ডেমন যা সার্ভিস ফেইলওভার এবং লোড ব্যালেন্সিং সক্ষম করে। ফেইলওভার একটি ফ্লোটিং IP অ্যাড্রেস দিয়ে প্রদান করা হয় যা মূল সার্ভার ফেইল হলে অন্য সার্ভারে সুইচ হয়ে যায়। IP অ্যাড্রেস সার্ভারগুলোর মাঝপথে অটোমেটিক্যালি সুইচ করার জন্য keepalived VRRP (Virtual Router Redundancy Protocol — https://www.ietf.org/rfc/rfc2338.txt) ব্যবহার করে।

VRRP-এর নীতিসমূহ

প্রথমে, কিছু থিওরি এবং VRRP-এর মূল ডেফিনিশনগুলো বিবেচনা করি।

  • VIP — Virtual IP, একটি ভার্চুয়াল IP অ্যাড্রেস যা ফেইলওয়ারের ক্ষেত্রে সার্ভারগুলোর মাঝপথে অটোমেটিক্যালি সুইচ করতে পারে;
  • Master — যে সার্ভারে VIP বর্তমানে এক্টিভ;
  • Backup — যে সার্ভারগুলো Master ফেইল হলে VIP সোইচ হবে;
  • VRID — Virtual Router ID, ভার্চুয়াল IP (VIP) শেয়ার করার সার্ভারগুলো এক所謂 ভার্চুয়াল রাউটার তৈরি করে এবং এর ইউনিক আইডেন্টিফায়ারের মান ১ থেকে ২৫৫ পর্যন্ত হতে পারে। একটি সার্ভার একসাথে একাধিক VRID-এ থাকতে পারে, কিন্তু প্রতিটি VRID-র ইউনিক ভার্চুয়াল IP অ্যাড্রেস থাকতে হবে।

বেসিক অপারেশন অ্যালগরিদম:

  • নির্দিষ্ট अन्तরালে, Master সার্ভার VRRP প্যাকেট (heartbeats) নির্দিষ্ট মাল্টিকাস্টিং অ্যাড্রেস 224.0.0.18-এ পাঠায়, এবং সব স্লেভ সার্ভার এই অ্যাড্রেস শোনে। মাল্টিকাস্টিং মানে এক সেন্ডার এবং একাধিক রিসিপিয়েন্ট;Hint। সার্ভারগুলোকে মাল্টিকাস্টিং মোডে কাজ করার জন্য, আপনার নেটওয়ার্ক ইকুইপমেন্টে অবশ্যই মাল্টিকাস্ট ট্রাফিক সাপোর্ট থাকতে হবে।
  • যদি কোনো স্লেভ সার্ভার কোনো হার্টবিট প্যাকেট না পায়, তবে সেটি Master সিলেকশন প্রসিডিউর শুরু করে। যদি সার্ভার প্রায়োরিটি অনুযায়ী Master হয়, তবে সেটি VIP এক্টিভেট করবে এবং একটি gratuitous ARP পাঠাবে। Gratuitous ARP হলো ARP রেসপন্সের একটি বিশেষ টাইপ যা নেটওয়ার্ক সুইচের MAC টেবিল আপডেট করে ভার্চুয়াল IP অ্যাড্রেসের নতুন মালিক এবং ট্রাফিক রিডাইরেক্ট করার জন্য MAC অ্যাড্রেস সম্পর্কে জানিয়ে দেয়।

CentOS-এ keepalived ইনস্টল ও কনফিগারেশন

আমরা keepalived দুটি Linux সার্ভারে (proxy-serv01 এবং proxy-serv02) ইনস্টল ও কনফিগার করব যেগুলো CentOS 7-এ Squid ইনস্টলড 채로 রান করছে। আমাদের স্কিমে, আমরা লোড ব্যালেন্সিং-এর সবচেয়ে সহজ পদ্ধতি — Round Robin DNS ব্যবহার করব। এই পদ্ধতিটি సাজেস্ট করে যে, একটি একক DNS নেমের একাধিক রেজিস্টার্ড IP অ্যাড্রেস থাকে, এবং ক্লায়েন্টগুলো একে একে এই অ্যাড্রেসগুলো পায়। তাই আমাদের একই DNS নেম (proxy-serv) এর জন্য দুটি ভার্চুয়াল IP অ্যাড্রেস রেজিস্টার করতে হবে। নেটওয়ার্ক ডায়াগ্রাম:

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

প্রতিটি Linux সার্ভারের দুটি ফিজিক্যাল নেটওয়ার্ক ইন্টারফেস রয়েছে: eth1 পাবলিক (হোয়াইট) IP অ্যাড্রেস সহ এবং eth0 লোকাল নেটওয়ার্কে।

নিচের সার্ভার IP অ্যাড্রেসগুলো রিয়েল হিসেবে ব্যবহৃত হচ্ছে:

192.168.2.251 — proxy-server01-এর জন্য
192.168.2.252 — proxy-server02-এর জন্য

নিচের IP অ্যাড্রেসগুলো ভার্চুয়াল হিসেবে ব্যবহৃত হবে যা ফেইলওয়ারের ক্ষেত্রে সার্ভারগুলোর মাঝপথে অটোমেটিক্যালি সুইচ হবে:

192.168.2.101
192.168.2.102

গুরুত্বপূর্ণ। VRRP কনফিগার করার সময়, কখনোই রিয়েল সার্ভার IP অ্যাড্রেসকে ভার্চুয়াল হিসেবে ব্যবহার করবেন না, কারণ যদি কোনো সার্ভার ফেইল হয় তবে তার অ্যাড্রেস পরবর্তী সার্ভারে চলে যাবে, এবং ফেইলব্যাকের পর প্রথম সার্ভার নেটওয়ার্ক থেকে আইসোলেট হয়ে যেতে পারে। কারণ হলো IP অ্যাড্রেস ফিরে পাওয়ার জন্য, সার্ভারটিকে নেটওয়ার্কে VRRP প্যাকেট পাঠাতে হবে, কিন্তু সেটি করতে তার पास কোনো IP অ্যাড্রেস থাকবে না।

yum প্যাকেজ ম্যানেজার ব্যবহার করে (অথবা CentOS 8-এ dnf) দুটি সার্ভারেই keepalived ইনস্টল করতে পারেন:

# yum install keepalived

দুটি সার্ভারেই ইনস্টলেশন পূরণ হলে, দুটি সার্ভারেই keepalived কনফিগারেশন ফাইল পরিবর্তন করুন:

# nano /etc/keepalived/keepalived.conf

প্যারামিটার ভিন্ন থাকা লাইনগুলো হাইলাইট করা হলো:

proxy-serv01 proxy-serv02
1Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন 2Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

অপশনগুলো আরও বিস্তারিতভাবে বর্ণনা করা হলো:

  1. vrrp_instance <name> — VRRP ইনস্ট্যান্স ডিফাইন করার সেকশন;
  2. state <MASTER|BACKUP> — স্টার্টআপের সময় নোডের প্রাথমিক স্টেট;
  3. interface <interface name> — VRRP যেই ইন্টারফেসে রান করছে;
  4. virtual_router_id <0 থেকে 255 পর্যন্ত নম্বর> — VRRP ইনস্ট্যান্সের ইউনিক আইডেন্টিফায়ার, সব সার্ভারে একই হতে হবে;
  5. priority <0 থেকে 255 পর্যন্ত নম্বর> — সার্ভার প্রায়োরিটি সেট করে, উচ্চ প্রায়োরিটিওয়ালা সার্ভার MASTER হয়;
  6. virtual_ipaddress — ভার্চুয়াল IP অ্যাড্রেসের ব্লক যা MASTER স্টেটে সার্ভারে এক্টিভ থাকে। VRRP ইনস্ট্যান্সের সব সার্ভারে একই হতে হবে।

নোট। VRRP কনফিগারেশনে authentication অপশন ব্যবহারের অনেক উদাহরণ পাওয়া যায়। যIFYFUNCTIONALITY-এ, keepalived ডকুমেন্টেশনে উল্লেখ রয়েছে যে, অথেন্টিকেশন VRRPv2-এ RFC3768 স্পেসিফিকেশন অনুযায়ী (https://tools.ietf.org/html/rfc3768) ২০০৪ সালে সরিয়ে দেওয়া হয়েছিল, কারণ এটা আসল সিকিউরিটি দিত না। এই কনফিগারেশন অপশন ব্যবহার না করার পরামর্শ দেওয়া হয়।

যদি বর্তমান নেটওয়ার্ক কনফিগারেশন মাল্টিকাস্ট ব্যবহারের অনুমতি না দেয়, তবে keepalived ইউনিকাস্ট অপশন দেয়, অর্থাৎ VRRP হার্টবিট প্যাকেটগুলো সরাসরি সার্ভারগুলোর তালিকা অনুযায়ী পাঠানো হবে। ইউনিকাস্ট ব্যবহার করতে নিচের অপশনগুলো প্রয়োজন:

  • unicast_src_ip — VRRP প্যাকেটের সোর্স অ্যাড্রেস
  • unicast_peer — সার্ভার IP অ্যাড্রেসের ব্লক যেগুলোর কাছে VRRP প্যাকেট পাঠানো হবে।

এভাবে, আমাদের কনফিগারেশন দুটি VRRP ইনস্ট্যান্স ডিফাইন করে, proxy_ip1 এবং proxy_ip2। নরমাল অপারেশনে, proxy-serv01 হবে ভার্চুয়াল IP 192.168.2.101-এর জন্য MASTER এবং 192.168.2.102-এর জন্য BACKUP, এবং বিপরীতে, proxy-serv02 হবে ভার্চুয়াল IP 192.168.2.102-এর জন্য MASTER এবং 192.168.2.101-এর জন্য BACKUP।

যদি সার্ভারে ফায়ারওয়াল এক্টিভ থাকে, তবে মাল্টিকাস্ট ট্রাফিক এবং VRRP-এর জন্য iptables-এ অনুমতি দেওয়ার নিয়ম যোগ করতে হবে:

# iptables -A INPUT -i eth0 -d 224.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p vrrp -i eth0 -j ACCEPT

keepalived সার্ভিসকে সিস্টেম বুটে অটোস্টার্টের জন্য এনাবল করুন এবং দুটি সার্ভারেই চালু করুন

# systemctl enable keepalived
# systemctl start keepalived

keepalived стар্ট হওয়ার পর, আপনার কনফিগারেশন ফাইল থেকে ভার্চুয়াল IP অ্যাড্রেসগুলো ইন্টারফেসে অ্যাসাইন হবে। সার্ভারগুলোর বর্তমান eth0 IP অ্যাড্রেসগুলো দেখুন:

# ip a show eth0

proxy-serv01-এ:

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

proxy-serv02-এ:

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

Keepalived-এ অ্যাপ বা ইন্টারফেসের হেলথচেক কীভাবে করবেন?

VRRP প্রোটোকল সার্ভার স্টেট মনিটরিং প্রদান করে। উদাহরণস্বরূপ, এটি ফিজিক্যাল সার্ভার ফেইলওয়ার বা সুইচ/সার্ভার NIC পোর্টের কেসে উপকারী। যIFYFUNCTIONALITY-এ, অন্যান্য সমস্যাও হতে পারে:

  • প্রক্সি সার্ভার (অথবা অন্য অ্যাপ) এরর — সার্ভারের ভার্চুয়াল অ্যাড্রেস অ্যাক্সেস করার ক্লায়েন্টরা তাদের ব্রাউজারে প্রক্সি সার্ভার অনুপলব্ধের এরর মেসেজ পাবে;
  • দ্বিতীয় ইন্টারফেসের ইন্টারনেট এক্সেস ফেইলওয়ার — সার্ভারের ভার্চুয়াল অ্যাড্রেস অ্যাক্সেস করার ক্লায়েন্টরা তাদের ব্রাউজারে কানেকশন প্রতিষ্ঠা করা যাচ্ছে না এরর মেসেজ পাবে।

উপরোক্ত পরিস্থিতিগুলো হ্যান্ডল করার জন্য নিচের অপশনগুলো ব্যবহার করুন:

  • track_interface — ইন্টারফেস স্টেট মনিটর করে, এবং লিস্ট করা ইন্টারফেসগুলোর যেকোনোটি DOWN হলে VRRP ইনস্ট্যান্সের জন্য FAULT স্টেট সেট করে;
  • track_script — আপনার HA অ্যাপের হেলথচেক একটি স্ক্রিপ্ট দিয়ে করে যা চেক সফল হলে 0 রিটার্ন করে, অথবা চেক ফেইল হলে 1 রিটার্ন করে।

eth1 ইন্টারফেস মনিটরিং যোগ করে কনফিগারেশন আপডেট করুন (ডিফল্টরূপে, VRRP ইনস্ট্যান্স সেটি যে ইন্টারফেসে বাউন্ড থাকে সেটি চেক করে: বর্তমান কনফিগারেশনে এটি eth0)।

track_interface { eth1 }

track_script ডিরেক্টিভ vrrp_script ব্লকে নির্ধারিত প্যারামিটার দিয়ে একটি স্ক্রিপ্ট রান করে নিচের ফরম্যাটে:

vrrp_script <name> {
 script <"path to the executable file">
 interval <number, seconds> - স্ক্রিপ্ট রান করার পর্যায়ক্রম, ডিফল্ট ১ সেকেন্ড
 fall <number> - স্ক্রিপ্ট কতবার শূন্য থেকে ভিন্ন মান রিটার্ন করলে FAULT স্টেটে সুইচ হবে
 rise <number> - স্ক্রিপ্ট কতবার শূন্য মান রিটার্ন করলে FAULT স্টেট থেকে বের হবে (failback)
 timeout <number> - স্ক্রিপ্ট রেজাল্ট রিটার্ন করার জন্য অপেক্ষা করার সময় (যদি টাইম আউট হয়, তবে স্ক্রিপ্ট নন-জিরো মান রিটার্ন করে)
 weight <number> - সার্ভার প্রায়োরিটি কতটুকু কমবে যদি সেটি FAULT স্টেট পায়। ডিফল্ট মান ০, যার মানে fall প্যারামিটারে সেট করা সংখ্যকবার স্ক্রিপ্ট ফেইল হলে সার্ভার FAULT স্টেট পাবে
}

Squid প্রক্সি হেলথ চেক কনফিগার করি। এই কমান্ড দিয়ে চেক করা যায় squid প্রসেস এক্টিভ কিনা:

# squid -k check

প্রতি ৩ সেকেন্ডে রান হওয়া vrrp_script তৈরি করুন। এই ব্লকটি vrrp_instance ব্লকগুলোর বাইরে ডিফাইন করা হয়।

vrrp_script chk_squid_service {
 script "/usr/sbin/squid -k check"
 interval 3
}

এই স্ক্রিপ্টটি দুটি vrrp_instance ব্লকইয়ে মনিটরিং-এ যোগ করুন:

track_script { chk_squid_service }

Squid ফেইল হলে, ভার্চুয়াল IP অ্যাড্রেস অন্য সার্ভারে সুইচ হয়ে যাবে।

আপনি সার্ভার স্টেট পরিবর্তন হলে করা যাবে অতিরিক্ত অ্যাকশন নির্দিষ্ট করতে পারেন।

যদি Squid যেকোনো ইন্টারফেস থেকে কানেকশন গ্রহণ করার জন্য কনফিগার করা থাকে, অর্থাৎ http_port 0.0.0.0:3128, তবে ভার্চুয়াল IP অ্যাড্রেস সুইচ হলে কোনো সমস্যা হবেনা, এবং Squid নতুন অ্যাড্রেসে ক্লায়েন্ট রিকোয়েস্ট গ্রহণ করবে। যIFYFUNCTIONALITY-এ, যদি নির্দিষ্ট IP অ্যাড্রেস কনফিগার করা থাকে, উদাহরণস্বরূপ:

http_port 192.168.2.101:3128
http_port 192.168.2.102:3128

তবে Squid জানবে না যে সিস্টেমে একটি নতুন অ্যাড্রেস এসেছে যেখানে ক্লায়েন্ট রিকোয়েস্টের জন্য লিসেন করতে হবে। ভার্চুয়াল IP অ্যাড্রেস সুইচ হলে যখন কিছু অতিরিক্ত অ্যাকশন প্রয়োজন হয়, সেগুলো হ্যান্ডল করার জন্য keepalived সার্ভার স্টেট পরিবর্তন হলে (যেমন, MASTER থেকে BACKUP, বা বিপরীতে) একটি স্ক্রিপ্ট রান করার অনুমতি দেয়। এটি এই অপশন দিয়ে বাস্তবায়ন করা হয়:

notify "path to the executable file"

ফেইলওয়ার কেসে Keepalived ফেইলওভার টেস্ট করা

ভার্চুয়াল IP কনফিগার করার পর, নিশ্চিত করুন যে ফেইলওয়ার সঠিকভাবে হ্যান্ডল হচ্ছে। প্রথম চেক হলো সার্ভার ফেইলওয়ার সিমুলেশন। proxy-serv01-এ eth0 ডিজেবল করুন, এবং এটি VRRP হার্টবিট প্যাকেট পাঠানো বন্ধ করদে। proxy-serv02 অবশ্যই ভার্চুয়াল IP অ্যাড্রেস 192.168.2.101 এক্টিভেট করবে। এই কমান্ড দিয়ে চেক করুন:

# ip a show eth0

proxy-serv01-এ:

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

proxy-serv02-এ:

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

আশা অনুযায়ী, proxy-serv02 ভার্চুয়াল IP অ্যাড্রেস 192.168.2.101 এক্টিভেট করল। লগে কী লেখা হয়েছে সেটি এই কমান্ড দিয়ে দেখুন:

cat /var/log/messages | grep -i keepalived
proxy-serv01-এ proxy-serv02-এ
Keepalived_vrrp[xxxxx]: Kernel is reporting: interface eth0 DOWN
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Entering FAULT STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) removing protocol VIPs.
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Now in FAULT state
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Transition to MASTER STATE
Keepalived eth0 DOWN স্টেটের সিগন্যাল পেয়ে proxy_ip1 VRRP ইনস্ট্যান্সের জন্য FAULT স্টেট সেট করে, তাদা ভার্চুয়াল IP অ্যাড্রেসগুলো ফ্রি করে। Keepalived proxy_ip1 VRRP ইনস্ট্যান্সের জন্য MASTER স্টেট সেট করে, eth0-এ IP অ্যাড্রেস 192.168.2.101 এক্টিভেট করে এবং gratuitous ARP পাঠায়।

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

এবং নিশ্চিত করুন যে proxy-serv01-এ eth0 আবার এনাবল করলে ভার্চুয়াল IP অ্যাড্রেস 192.168.2.101 ফিরে চলে আসে।

proxy-serv01-এ proxy-serv02-এ
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) forcing a new MASTER election
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Transition to MASTER STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Entering MASTER STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) setting protocol VIPs.
Keepalived_vrrp[xxxxx]: Sending gratuitous ARP on eth0 for 192.168.2.101
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Received advert with higher priority 255, ours 100
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Entering BACKUP STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) removing protocol VIPs.
Keepalived eth0 ফিরে আসার সিগন্যাল পেয়ে proxy_ip1 VRRP ইনস্ট্যান্সের জন্য MASTER সিলেকশন শুরু করে। MASTER স্টেট পাওয়ার পর, সার্ভার eth0-এ IP অ্যাড্রেস 192.168.2.101 এক্টিভেট করে এবং gratuitous ARP পাঠায়। Keepalived proxy_ip1 VRRP ইনস্ট্যান্সের জন্য উচ্চ প্রায়োরিটির প্যাকেট পেয়ে, proxy_ip1 কে BACKUP স্টেটে সুইচ করে এবং IP অ্যাড্রেসগুলো ফ্রি করে।

দ্বিতীয় চেক হলো এক্সটার্নাল নেটওয়ার্ক ইন্টারফেস ফেইলওয়ার সিমুলেশন। proxy-serv01-এ এক্সটার্নাল নেটওয়ার্ক ইন্টারফেস eth1 ডিজেবল করুন। লগে ফলাফল দেখুন।

proxy-serv01-এ proxy-serv02-এ
Keepalived_vrrp[xxxxx]: Kernel is reporting: interface eth1 DOWN
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Entering FAULT STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) removing protocol VIPs.
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Now in FAULT state
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Transition to MASTER STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Entering MASTER STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) setting protocol VIPs.
Keepalived_vrrp[xxxxx]: Sending gratuitous ARP on eth0 for 192.168.2.101
Keepalived eth1 DOWN সিগন্যাল পেয়ে proxy_ip1 VRRP ইনস্ট্যান্সের জন্য FAULT স্টেট সেট করে, তাদা ভার্চুয়াল IP অ্যাড্রেসগুলো ফ্রি করে। Keepalived proxy_ip1 VRRP ইনস্ট্যান্সের জন্য MASTER স্টেট সেট করে, eth0-এ IP অ্যাড্রেস 192.168.2.101 এক্টিভেট করে এবং gratuitous ARP পাঠায়।

Keepalived: CentOS/RHEL-এ IP ফেইলওভার সহ হাই আভেইলেবিলিটি কনফিগারেশন

তৃতীয় চেক হলো Squid ফেইলওয়ার সিমুলেশন। এটি করতে, সার্ভিসটি ম্যানুয়ালি এই কমান্ড দিয়ে বন্ধ করুন:

# systemctl stop squid

লগে ফলাফল দেখুন:

proxy-serv01-এ proxy-serv02-এ
Keepalived_vrrp[xxxxx]: VRRP_Script(chk_squid_service) failed
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Entering FAULT STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) removing protocol VIPs.
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Now in FAULT state
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Transition to MASTER STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) Entering MASTER STATE
Keepalived_vrrp[xxxxx]: VRRP_Instance(proxy_ip1) setting protocol VIPs.
Keepalived_vrrp[xxxxx]: Sending gratuitous ARP on eth0 for 192.168.2.101
Squid প্রক্সি সার্ভিসের এক্টিভিটি চেক করার স্ক্রিপ্ট এরর রিটার্ন করে। Keepalived proxy_ip1 VRRP ইনস্ট্যান্সের জন্য FAULT স্টেট সেট করে, তাদা ভার্চুয়াল IP অ্যাড্রেসগুলো ফ্রি করে। Keepalived proxy_ip1 VRRP ইনস্ট্যান্সের জন্য MASTER স্টেট সেট করে, eth0-এ IP অ্যাড্রেস 192.168.2.101 এক্টিভেট করে এবং gratuitous ARP পাঠায়।

সর্বোচ্চ তিনটি চেক সফলভাবে পাস করল, এবং keepalived সঠিকভাবে কনফিগারড। পরবর্তীতে আমরা Pacemaker ব্যবহার করে HA ক্লাস্টার কনফিগার করব এবং তাদের বৈশিষ্ট্য বর্ণনা করব।

proxy-serv01-এর জন্য চূড়ান্ত কনফিগারেশন ফাইল /etc/keepalived/keepalived.conf:

vrrp_script chk_squid_service {
 script "/usr/sbin/squid -k check"
 interval 3
}
vrrp_instance proxy_ip1 {
 state MASTER
 interface eth0
 virtual_router_id 1
 priority 255
 virtual_ipaddress {
  192.168.2.101/24 dev eth0 label eth0:1
 }
 track_interface { eth1 }
 track_script { chk_squid_service }
}
vrrp_instance proxy_ip2 {
 state BACKUP
 interface eth0
 virtual_router_id 2
 priority 100
 virtual_ipaddress {
  192.168.2.102/24 dev eth0 label eth0:2
 }
 track_interface { eth1 }
 track_script { chk_squid_service }
}

proxy-serv02-এর জন্য চূড়ান্ত কনফিগারেশন ফাইল /etc/keepalived/keepalived.conf:

vrrp_script chk_squid_service {
 script "/usr/sbin/squid -k check"
 interval 3
}
vrrp_instance proxy_ip1 {
 state BACKUP
 interface eth0
 virtual_router_id 1
 priority 100
 virtual_ipaddress {
  192.168.2.101/24 dev eth0 label eth0:1
 }
 track_interface { eth1 }
 track_script { chk_squid_service }
}
vrrp_instance proxy_ip2 {
 state MASTER
 interface eth0
 virtual_router_id 2
 priority 255
 virtual_ipaddress {
  192.168.2.102/24 dev eth0 label eth0:2
 }
 track_interface { eth1 }
 track_script { chk_squid_service }
}
  1. MS SQL Server-এ High Availability (উপলব্ধতা)

  2. RHEL, CentOS এবং Fedora-এর পার্থক্য

  3. NTP সার্ভারের সাথে লিনাক্স টাইম সিঙ্ক করার পদ্ধতি

  4. Nginx ব্যবহার করে DDoS আক্রমণ প্রতিরোধ করার পদ্ধতি