آموزش نصب Haproxy با Keepalived

در مقاله آموزش نصب Haproxy با Keepalived از مجموعه آموزشی ابرآس به نصب این دو پکیج برای پیاده سازی High availabilityخواهیم پرداخت
کسبوکارها در هر اندازه باید اطمینان حاصل کنند که اپلیکیشن های وب به خوبی اجرا میشوند و در دنیای دیجیتال امروزی به خوبی مقیاس میشوند. با این وجود، حفظ در دسترس بودن بالا و مدیریت تعادل بار (لود بالانس) می تواند دشوار باشد. با این پست وبلاگ، نحوه راه اندازی یک متعادل کننده بار HAProxy در اوبونتو 22.04 با در دسترس بودن بالا را یاد خواهید گرفت که به شما امکان می دهد اپلیکیشن های پایدار و مقیاس پذیر را اجرا کنید.
لازم به ذکر است که شما می تونید با کمک لود بالانسر ها محیط Kubernetes خود را با قابلیت در دسترسی بالا ایجاد نمایید.
قبل از شروع به راهاندازی متعادلکننده بار، دانستن نکات خاصی در مورد استفاده از اجزای متعادلکننده بار، Keepalived و HAProxy ضروری است.
راهنمای مقاله
Toggleآشنایی با لود بالانسر
متعادل کننده بار یک جزء ضروری Kubernetes است که به توزیع ترافیک ورودی به کلاستر سرور های کنترلی (Master Nodes) کوبرنتیزکمک می کند. این سیستم به عنوان یک کنترلکننده ترافیک عمل میکند و تضمین میکند که درخواستها به سرعت و کارآمد پردازش میشوند، حتی زمانی که درخواستهای متعدد برای دسترسی به همان برنامهای که به عنوان یک پاد در کوبرنتیز اجرا میشود.
چرا به keepalived و HAProxy نیاز داریم؟
HAProxy و Keepalived دو فناوری اوپن سورس هستند که اغلب برای ایجاد تعادل بار و دسترسی بالا به اپلیکیشن ها استفاده میشوند.
یک دیمون پروتکل افزونگی روتر مجازی (VRRP) به نام Keepalived سلامت دو یا چند سرور را پیگیری میکند و مطمئن میشود که حداقل یکی از آنها همیشه فعال است و ترافیک را ارسال میکند. برای انجام این کار، هر سرور یک آدرس IP مجازی یا VIP را به اشتراک می گذارد. Keepalived مسئول تخصیص VIP به سرور فعال و تغییر به سرور پشتیبان در صورت خرابی سرور فعال است.
HAProxy یک متعادل کننده بار است که ترافیک را بین چندین سرور تقسیم می کند. کاهش بار روی هر سرور ممکن است به بهبود عملکرد اپلیکیشن ها کمک کند.
نیازمندری ها
برای اینکه بتونیم یک محیط با دسترسی بالا ایجاد کنیم به دو تا سرور Ubuntu 22.04 نیاز داریم که پکیج ها و کانفیگ های مدنظرمون رو اعمال کنیم.
نصب و راه اندازی Haproxy روی Ubuntu
Haproxy (پروکسی با دسترسی بالا)، یک راه حل رایگان، بسیار سریع و قابل اعتماد است که در دسترس بودن بالا، متعادل کننده بار و پروکسی برای اپلیکیشن های مبتنی بر TCP و HTTP ارائه می دهد. Haproxy به ویژه برای وب سایت های با ترافیک بسیار بالا مناسب است و تعداد زیادی از پربازدیدترین وب سایت های جهان از Haproxy استفاده می کنند.
نصب Haproxy
sudo apt install haproxy
نمونه کانفیک Haproxy به آدرس etc/haproxy/haproxy.cfg/ قابل مشاهده است.
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners stats timeout 30s user haproxy group haproxy daemon ca-base /etc/ssl/certs crt-base /etc/ssl/private ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets tune.ssl.default-dh-param 2048 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http frontend abrus-lb bind 192.168.57.8:443 ssl crt /etc/ssl/certs/haproxy.pem default_backend webapps option forwardfor backend webapps balance roundrobin server app01 192.168.59.6:80 check server app02 192.168.60.4:80 check listen stats bind 192.168.57.8:8443 ssl crt /etc/ssl/certs/haproxy.pem stats enable # enable statistics reports stats hide-version # Hide the version of HAProxy stats refresh 30s # HAProxy refresh time stats show-node # Shows the hostname of the node stats auth haadmin:P@ssword # Enforce Basic authentication for Stats page stats uri /stats # Statistics URL
نصب و راه اندازی Keepalived روی Ubuntu
Keepalived از پروتکل افزونگی روتر مجازی برای ارسال تبلیغات دوره ای بین روترهای LVS اصلی (فعال) و پشتیبان (غیرفعال) (که در مورد ما سرورهای HAProxy هستند، زیرا اپلیکیشن های وب متعادل کننده بار هستند) برای تعیین وضعیت یکدیگر استفاده می کند. اگر سرور اصلی نتواند خود را در بازه زمانی از پیش تعریف شده تبلیغ کند، Keepalived عملیات failover را آغاز می کند و سرور پشتیبان به عنوان اصلی می شود.
نصب Keepalived
sudo apt install keepalived -y
تنظیمات مربوط به keepalived
برای فعال کردن سرویس Keepalived برای ارسال بسته های شبکه به سرورهای بک اند، باید انتقال IP را فعال کنید. این دستور را روی هر دو سرور HAProxy اجرا کنید.
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf sysctl -p
فایل پیکربندی پیش فرض برای Keepalived باید etc/keepalived/keepalived.conf/ باشد. با این حال، این پیکربندی به طور پیش فرض ایجاد نشده است. پیکربندی را با محتوای زیر ایجاد کنید.
تنظیمات مربوط به سرور اول
# Global Settings for notifications global_defs { notification_email { id@domain.com # Email address for notifications } notification_email_from id@domain.com # The from address for the notifications smtp_server 127.0.0.1 # SMTP server address smtp_connect_timeout 15 } # Define the script used to check if haproxy is still working vrrp_script chk_haproxy { script "/usr/bin/killall -0 haproxy" interval 2 weight 2 } # Configuration for Virtual Interface vrrp_instance LB_VIP { interface enp0s8 state MASTER # set to BACKUP on the peer machine priority 101 # set to 99 on the peer machine virtual_router_id 51 smtp_alert # Enable Notifications Via Email authentication { auth_type AH auth_pass myP@ssword # Password for accessing vrrpd. Same on all devices } unicast_src_ip 192.168.57.7 # Private IP address of master unicast_peer { 192.168.58.4 # Private IP address of the backup haproxy } # The virtual ip address shared between the two loadbalancers virtual_ipaddress { 192.168.100.200 } # Use the Defined Script to Check whether to initiate a fail over track_script { chk_haproxy } }
تنظیمات مربوط به سرور دوم
global_defs { notification_email { id@domain.com } notification_email_from id@domain.com smtp_server 127.0.0.1 smtp_connect_timeout 15 } vrrp_script chk_haproxy { script "/usr/bin/killall -0 haproxy" interval 2 weight 2 } vrrp_instance LB_VIP { interface enp0s8 state BACKUP priority 100 virtual_router_id 51 smtp_alert authentication { auth_type AH auth_pass myP@ssword } unicast_src_ip 192.168.58.4 # Private IP address of the backup haproxy unicast_peer { 192.168.57.7 # Private IP address of the master haproxy } virtual_ipaddress { 192.168.100.200 } track_script { chk_haproxy } }
نکته
مقادیر آی پی را براساس نیاز خود تغییر دهید و این آی پی مدنظر شما همچنین در تنظیمات Haproxy نیز باید تغییر پیدا کند.
راه اندازی سرویس keepalived
systemctl enable --now keepalived
به پایان یکی دیگه از آموزش های مجموعه آموزشی ابرآس رسیدیم, ممنون که تا اینجای مقاله همراهمون بودی.
میدونستی با اشتراک گذاری این مقاله میتونی از ما حمایت کنی!