آموزش نصب 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
به پایان یکی دیگه از آموزش های مجموعه آموزشی ابرآس رسیدیم, ممنون که تا اینجای مقاله همراهمون بودی.
میدونستی با اشتراک گذاری این مقاله میتونی از ما حمایت کنی!


