دسترسیپذیری بالا (High Availability – HA) و توازن بار (Load Balancing – LB) دو پایه اساسی برای ارائه سرویس پایدار و بدون وقفه هستند.
در دنیای مدیریت سرورهای سال 2025، یکی از ابزارهای محبوب برای فراهم کردن آن دو پایه، Keepalived است. این نرمافزار متنباز با استفاده از پروتکل VRRP (Virtual Router Redundancy Protocol) و ادغام با Linux Virtual Server (LVS)، تضمین میکند که سرویسهای شبکهای شما حتی در صورت خرابی سرور اصلی، بهطور خودکار به سرورهای پشتیبان منتقل شوند.
در این مطلب به بررسی دقیق Keepalived، معماری آن، کاربردهایش، و نحوه پیکربندی آن میپردازیم.
Keepalived چیست و چرا اهمیت دارد؟
تصور کنید که یک وبسایت پربازدید دارید و تنها یک سرور برای میزبانی آن استفاده میکنید. حالا اگر این سرور از کار بیفتد، کل سرویس شما نیز غیرقابل دسترس خواهد شد که میتواند خسارتهای زیادی از نظر اعتبار و درآمد به همراه داشته باشد. Keepalived این مشکل را حل میکند!
Keepalived چگونه کار میکند؟
Keepalived از دو بخش اصلی تشکیل شده است:
- VRRP (Virtual Router Redundancy Protocol): این پروتکل به Keepalived امکان میدهد که یک آدرس IP مجازی (VIP) را بین چند سرور توزیع کند. در صورتی که سرور اصلی از کار بیفتد، این IP به سرور دیگری منتقل میشود.
- LVS (Linux Virtual Server): یک فریمورک هسته لینوکس است که به Keepalived اجازه میدهد توازن بار را برای سرویسهای شبکهای انجام دهد.
معماری Keepalived: چگونه کار میکند؟
Keepalived بهصورت ماژولار طراحی شده و دارای چندین مؤلفه کاربردی است که وظایف مختلفی را بر عهده دارند.
پردازش والد (Parent Process)
پردازش والد در واقع مرکز کنترل Keepalived به شمار میرود و تمامی پردازشهای زیرمجموعه را مدیریت و نظارت میکند. اگر هر یک از پردازشهای فرعی به مشکل بخورد یا از کار بیفتد، پردازش والد میتواند آن را ریستارت کند تا Keepalived بدون وقفه به کار خود ادامه دهد. (به زبان ساده اگر Keepalived را به یک کارخانه تشبیه کنیم، پردازش والد نقش مدیر کارخانه را دارد.)
عملکرد اصلی این پردازش شامل موارد زیر است:
- مدیریت پردازشهای فرعی (VRRP و Healthcheck)
- بررسی وضعیت سیستم و نظارت بر منابع
- بازگردانی پردازشها در صورت توقف ناگهانی
پردازش VRRP: مدیریت انتقال VIP و حفظ پایداری
یکی از وظایف Keepalived، مدیریت Virtual IP (VIP) و انتقال آن بین سرورها است که از طریق پروتکل VRRP انجام میشود. پردازش VRRP مسئول اجرای این پروتکل است و از طریق ارسال پیامهای Heartbeat بین سرورها وضعیت سلامت آنها را بررسی میکند.
در صورت خرابی سرور اصلی (Master)، این پردازش بلافاصله VIP را به یک سرور پشتیبان (Backup) منتقل میکند. Heartbeatها در فواصل زمانی مشخص ارسال میشوند تا اطمینان حاصل شود که سرور اصلی در دسترس است.
با استفاده از VRRP، کاربران بدون اینکه متوجه شوند، بهطور خودکار به سرور جایگزین هدایت میشوند.
پردازش Healthcheck: ناظر سلامت سرورها
پایش سلامت سرورها را میتوانیم مهمترین بخش برای استمرار عملکرد سیستم توزیعشده بدانیم. اگر یکی از سرورها دچار مشکل شود، نباید همچنان ترافیک به سمت آن ارسال شود، زیرا این کار باعث افزایش زمان پاسخدهی و حتی قطعی سرویسها خواهد شد.
سیستم Watchdog: ناجی پردازشهای Keepalived
در هر سیستم پیچیدهای، احتمال اینکه برخی پردازشها به دلیل مشکلات نرمافزاری یا سختافزاری قفل کنند (Crash یا Hang شوند) وجود دارد. سیستم Watchdog در Keepalived یک مکانیزم محافظتی است که بهطور مداوم وضعیت پردازشها را بررسی میکند.
- اگر پردازشی از پاسخ دادن متوقف شود، Watchdog آن را بهطور خودکار ریستارت میکند.
- به وسیله این قابلیت Keepalived همیشه در حال اجرا است و از قطعی ناگهانی سرویس جلوگیری میشود.
اجزای اصلی Keepalived در کرنل لینوکس
یکی از نکات مهم درباره Keepalived این است که بهطور عمیقی با هسته لینوکس (Kernel) ادغام شده است و از قابلیتهای داخلی آن برای عملکرد بهینه استفاده میکند. در این بخش مهمترین اجزای کرنل که Keepalived از آنها بهره میبرد را بررسی میکنیم:
LVS Framework: مدیریت ارتباطات و توزیع ترافیک
LVS (Linux Virtual Server) یکی از اجزای کرنل لینوکس است که برای توازن بار (Load Balancing) استفاده میشود. Keepalived از این فریمورک برای مدیریت توزیع ترافیک بین سرورهای مختلف استفاده میکند.
با استفاده از LVS، Keepalived میتواند درخواستهای ورودی را به سرورهای واقعی هدایت کند. این فریمورک از روشهای مختلفی مانند NAT، Direct Routing و Tunneling برای مسیریابی ترافیک پشتیبانی میکند.
Netfilter Framework: مدیریت NAT و Masquerading
Netfilter یک فریمورک فایروال در هسته لینوکس است که برای مدیریت بستههای شبکهای به کار میرود. Keepalived از Netfilter برای پیادهسازی NAT (Network Address Translation) و Masquerading استفاده میکند تا بتواند ترافیک را میان سرورهای مختلف بهینه کند.
Netlink Interface: تنظیم و حذف VIP (Virtual IP)
Keepalived از Netlink برای برقراری ارتباط با اینترفیسهای شبکه در کرنل لینوکس استفاده میکند.
Multicast: ارسال پیامهای VRRP به سرورها
Keepalived برای عملکرد صحیح VRRP از Multicast استفاده میکند. پیامهای Heartbeat در VRRP از طریق آدرس 224.0.0.18 به تمامی سرورهای عضو گروه ارسال میشود.
نحوه عملکرد VRRP در Keepalived
VRRP به Keepalived کمک میکند تا یک آدرس IP مجازی را بین چند سرور به اشتراک بگذارد. این IP همیشه روی سرور Master قرار دارد و در صورتی که این سرور از کار بیفتد، IP به سرور Backup منتقل میشود.
پیادهسازی VRRP در Keepalived به شکل زیر انجام میشود:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type AH
auth_pass k@l!ve1
}
virtual_ipaddress {
192.168.200.10
}
}
در این مثال سرور در وضعیت MASTER قرار دارد. همچنین virtual_router_id 51 تعیینکننده گروه VRRP است.
اگر این سرور از کار بیفتد، سرور Backup با مقدار priority کمتر جایگزین میشود.
توازن بار با Keepalived و LVS
Keepalived میتواند به شکل یک Load Balancer با LVS کار کند و ترافیک ورودی را بین چند سرور توزیع کند. مثال استفاده از پیکربندی توازن بار با LVS را در ادامه بررسی کردهایم:
virtual_server 192.168.1.10 80 {
lb_algo rr
lb_kind NAT
protocol TCP
real_server 192.168.1.2 80 {
TCP_CHECK { connect_timeout 3 }
}
}
- lb_algo rr: الگوریتم Round Robin برای توزیع متعادل درخواستها.
- lb_kind NAT: استفاده از NAT برای مسیریابی درخواستها.
- TCP_CHECK: بررسی سلامت سرورهای واقعی.
مطالعه موردی (Case Study): سناریوی Failover با VRRP
برای درک بهتر عملکرد Keepalived، یک سناریوی واقعی را بررسی میکنیم. فرض کنید یک شرکت دارای دو سرور است که هر دو از Keepalived برای Failover استفاده میکنند.
✅ سرور ۱ (Master): مدیریت دو آدرس VIP1 و VIP2
✅ سرور ۲ (Master): مدیریت دو آدرس VIP3 و VIP4
حالت عادی:
هر سرور مسئول مدیریت VIPهای خودش است و ترافیک بهطور متعادل بین این دو سرور توزیع میشود.
در صورت خرابی سرور ۱:
- Keepalived بلافاصله VIPهای سرور ۱ را به سرور ۲ منتقل میکند.
- سرور ۲ موقتا تمامی ترافیک را مدیریت میکند و سرویس بدون وقفه ادامه دارد.
- بعد از بازیابی سرور ۱، VIPها میتوانند به وضعیت قبلی برگردند.
نکاتی درباره امنیت Keepalived
برای بالا بردن امنیت Keepalived بهتر است نکات زیر را رعایت کنید:
۱. احراز هویت VRRP:
برای جلوگیری از حملات، از احراز هویت AH و رمزنگاری MD5 استفاده کنید.
authentication {
auth_type AH
auth_pass mySecurePass
}
۲. تنظیمات فایروال:
فعال کردن VRRP در فایروال برای اطمینان از کارکرد صحیح:
iptables -A INPUT -p vrrp -j ACCEPT
۳. بهینهسازی مدیریت ARP:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 1
این تنظیمات به جلوگیری از مشکلات مرتبط با ARP Spoofing کمک میکنند.
سخن پایانی
Keepalived یکی از قدرتمندترین سرویسهای (High Availability) و توازن بار (Load Balancing) در لینوکس است. این نرمافزار با معماری ماژولار و پیکربندی ساده، ترافیک شبکه را بهصورت هوشمندانه بین سرورها توزیع کرده و از انتقال بدون وقفه سرویسها به سرورهای پشتیبان اطمینان حاصل میکند.