در سیستمهای تلفنی مانند ایزابل (Issabel) و آستریسک (Asterisk)، در دسترس بودن پیوسته و بدون وقفه بسیار مهم است. در دسترسپذیری بالا (High Availability یا به اختصار HA) تضمین میکند که اگر یک سرور دچار مشکل شد، سرور دیگر بدون ایجاد وقفه وارد عمل شده و ارتباطات کاربران را حفظ کند. این مکانیزم برای سازمانها و کسبوکارهایی که نیاز به پایداری در ارتباطات دارند حیاتی است.
در این مقاله، قصد داریم با استفاده از نرمافزار Keepalived، یک سیستم HA برای Issabel5 بر روی Asterisk 18 در لینوکس Rocky 8 پیادهسازی کنیم. مراحل نصب و پیکربندی Keepalived، و تنظیمات مربوط به VRRP (Virtual Router Redundancy Protocol) برای تخصیص یک آدرس آیپی مجازی (Virtual IP) بین دو سرور ارائه خواهد شد.
برای دستیابی به HA، از Keepalived و پروتکل VRRP استفاده میکنیم. Keepalived یک ابزار لینوکسی است که به کمک VRRP امکان ایجاد یک آدرس آیپی مجازی و انتقال خودکار ترافیک به سرورهای دیگر در صورت بروز خرابی را فراهم میکند.
مرحله اول: نصب ابزارها
برای شروع، باید ابزارهای مورد نیاز را نصب کنیم:
yum install gcc kernel-headers kernel-devel
yum install keepalived
gcc، kernel-headers و kernel-devel برای ساخت ماژولهای هسته و اجرای Keepalived مورد نیاز هستند.
keepalived برای مدیریت HA نصب میشود.
مرحله دوم: پیکربندی Keepalived
بعد از نصب Keepalived، باید فایل پیکربندی /etc/keepalived/keepalived.conf را برای هر سرور ویرایش کنیم.
پیکربندی برای سرور اول (Server1):
فایل پیکربندی به شکل زیر ویرایش میشود:
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@mydomain.com
support@mydomain.com
}
notification_email_from lb1@mydomain.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.29
}
}
توضیحات:
global_defs: این بخش برای تنظیمات ایمیل هشدار در هنگام تغییرات HA است. ایمیلها به sysadmin@mydomain.com و support@mydomain.com ارسال میشوند و از lb1@mydomain.com به عنوان فرستنده استفاده میشود.
vrrp_instance: تنظیمات VRRP برای نمونه VI_1 است.
state: وضعیت این سرور در حالت MASTER است.
interface: اینترفیسی که Keepalived بر روی آن اجرا میشود، در اینجا eth0.
virtual_router_id: یک شناسه یکتا برای VRRP. باید برای هر نمونه منحصربهفرد باشد.
priority: مقدار 101 برای اولویت بالاتر این سرور تعیین شده است.
virtual_ipaddress: آدرس آیپی مجازی که در حالت فعال بودن HA به این سرور اختصاص مییابد.
در سرور دوم، فایل پیکربندی مشابه سرور اول است، اما بهجای MASTER، حالت BACKUP تنظیم میشود و مقدار اولویت به 100 کاهش مییابد:
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@mydomain.com
support@mydomain.com
}
notification_email_from lb1@mydomain.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.29
}
}
برای شروع Keepalived و اطمینان از اجرای خودکار آن در زمان بوت، از دستورات زیر استفاده کنید:
service keepalived start
chkconfig keepalived on
توصیهها و تنظیمات اضافه
برای اطمینان از عملکرد صحیح HA، باید تنظیمات زیر را در نظر بگیرید:
تنظیم MASTER و BACKUP: یک سرور به عنوان MASTER و دیگری BACKUP باید تنظیم شود. در این مثال، Server1 با اولویت 101 به عنوان MASTER و Server2 با اولویت 100 به عنوان BACKUP تنظیم شده است.
اطمینان از صحت اطلاعات ایمیلها: اطمینان حاصل کنید که آدرسهای ایمیل در بخش notification_email درست و فعال هستند تا پیامهای هشدار در صورت تغییر وضعیت بهدرستی ارسال شوند.
برای اطمینان از کارکرد صحیح، میتوانید با قطع شبکه یا خاموش کردن یکی از سرورها، وضعیت انتقال ترافیک را بررسی کنید. در حالت عادی، سرور دوم (Backup) بهطور خودکار وظایف سرور اول (Master) را در صورت بروز مشکل به عهده میگیرد. بررسی لاگهای سیستم در مسیر /var/log/messages نیز کمک میکند تا وضعیت جابهجایی و عملیات Keepalived را مشاهده کنید.
در این راهنما، با استفاده از Keepalived و تنظیمات VRRP یک سیستم در دسترسپذیری بالا برای Issabel5 و Asterisk پیادهسازی کردیم. با تنظیم یک آدرس آیپی مجازی، قابلیت دسترسپذیری این سیستم بهبود یافته و ترافیک به صورت خودکار بین سرورها منتقل میشود.
کد کامل پیکربندی
کد برای Server1:
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@mydomain.com
support@mydomain.com
}
notification_email_from lb1@mydomain.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.29
}
}
کد برای Server2:
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@mydomain.com
support@mydomain.com
}
notification_email_from lb1@mydomain.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.29
}
}
امیدوارم این راهنما به شما کمک کند تا یک سیستم HA قوی برای Issabel و Asterisk پیاده سازی کنید.