نصب متعادل کننده بار HAProxy در CentOS

ترجمه مقاله در آستانه شروع دوره آماده شد "مدیر لینوکس. مجازی سازی و خوشه بندی"

نصب متعادل کننده بار HAProxy در CentOS

تعادل بار یک راه حل متداول برای مقیاس افقی برنامه های وب در چندین میزبان است در حالی که یک نقطه دسترسی به سرویس را برای کاربران فراهم می کند. HAProxy یکی از محبوب ترین نرم افزارهای منبع باز متعادل کننده بار است که قابلیت دسترسی و پراکسی بالایی را نیز ارائه می دهد.

HAProxy در تلاش است تا استفاده از منابع را بهینه کند، توان عملیاتی را به حداکثر برساند، زمان پاسخ را به حداقل برساند و از بارگذاری بیش از حد هر منبع فردی جلوگیری کند. می توان آن را بر روی انواع توزیع های لینوکس مانند CentOS 8 که در این راهنما بر روی آن تمرکز خواهیم کرد و همچنین سیستم ها نصب کرد. دبیان 8 и اوبونتو 16.

نصب متعادل کننده بار HAProxy در CentOS

HAProxy به ویژه برای وب سایت هایی با ترافیک بسیار بالا مناسب است و بنابراین اغلب برای بهبود قابلیت اطمینان و عملکرد تنظیمات وب سرویس چند سرور استفاده می شود. این راهنما مراحل راه اندازی HAProxy را به عنوان متعادل کننده بار در یک میزبان ابری CentOS 8 تشریح می کند، که سپس ترافیک را به سرورهای وب شما هدایت می کند.

به عنوان پیش نیاز برای بهترین نتایج، شما باید حداقل دو وب سرور و یک سرور متعادل کننده بار داشته باشید. وب سرورها باید حداقل یک وب سرویس اولیه مانند nginx یا httpd را اجرا کنند تا تعادل بار بین آنها را آزمایش کنند.

نصب HAProxy در CentOS 8

از آنجایی که HAProxy یک برنامه منبع باز است که به سرعت در حال توسعه است، ممکن است توزیعی که در مخازن استاندارد CentOS برای شما در دسترس است آخرین نسخه نباشد. برای اطلاع از نسخه فعلی، دستور زیر را اجرا کنید:

sudo yum info haproxy

HAProxy همیشه سه نسخه پایدار را برای انتخاب فراهم می کند: دو نسخه اخیر پشتیبانی شده و نسخه سوم قدیمی که هنوز به روز رسانی های مهم را دریافت می کند. همیشه می توانید آخرین نسخه پایدار فهرست شده در وب سایت HAProxy را بررسی کنید و سپس تصمیم بگیرید که با کدام نسخه کار کنید.

در این راهنما، ما آخرین نسخه پایدار 2.0 را نصب خواهیم کرد که در زمان نوشتن راهنما هنوز در مخازن استاندارد موجود نبود. شما باید آن را از منبع اصلی نصب کنید. اما ابتدا بررسی کنید که آیا شرایط لازم برای دانلود و کامپایل برنامه را دارید یا خیر.

sudo yum install gcc pcre-devel tar make -y

کد منبع را با استفاده از دستور زیر دانلود کنید. می توانید بررسی کنید که آیا نسخه جدیدتری در دسترس است یا خیر صفحه دانلود HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

پس از اتمام دانلود، فایل ها را با استفاده از دستور زیر استخراج کنید:

tar xzvf ~/haproxy.tar.gz -C ~/

به فهرست منبع بدون بسته بندی بروید:

cd ~/haproxy-2.0.7

سپس برنامه را برای سیستم خود کامپایل کنید:

make TARGET=linux-glibc

و در نهایت، خود HAProxy را نصب کنید:

sudo make install

HAProxy اکنون نصب شده است، اما برای کارکردن به برخی دستکاری‌های اضافی نیاز دارد. اجازه دهید راه اندازی نرم افزار و سرویس های زیر را ادامه دهیم.

راه اندازی HAProxy برای سرور شما

اکنون دایرکتوری ها و فایل آماری زیر را برای ورودی های HAProxy اضافه کنید:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

یک پیوند نمادین برای باینری ها ایجاد کنید تا بتوانید دستورات HAProxy را به عنوان یک کاربر معمولی اجرا کنید:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

اگر می خواهید یک پروکسی به عنوان سرویس به سیستم خود اضافه کنید، فایل haproxy.init را از نمونه ها در پوشه /etc/init.d خود کپی کنید. مجوزهای فایل را ویرایش کنید تا اسکریپت اجرا شود و سپس سیستم دیمون را مجددا راه اندازی کنید:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

همچنین باید به سرویس اجازه دهید که به طور خودکار هنگام شروع سیستم راه اندازی مجدد شود:

sudo chkconfig haproxy on

برای راحتی، همچنین توصیه می شود یک کاربر جدید برای اجرای HAProxy اضافه کنید:

sudo useradd -r haproxy

پس از این، می توانید با استفاده از دستور زیر دوباره شماره نسخه نصب شده را بررسی کنید:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

در مورد ما، نسخه باید 2.0.7 باشد، همانطور که در خروجی مثال بالا نشان داده شده است.

در نهایت، فایروال پیش فرض در CentOS 8 برای این پروژه کاملاً محدود است. از دستورات زیر برای اجازه دادن به خدمات مورد نیاز و تنظیم مجدد فایروال استفاده کنید:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

تنظیم بار متعادل کننده

راه اندازی HAProxy یک فرآیند نسبتا ساده است. اساسا، تنها کاری که باید انجام دهید این است که به HAProxy بگویید چه اتصالاتی باید به آنها گوش دهد و کجا باید آنها را انتقال دهد.

این کار با ایجاد یک فایل پیکربندی /etc/haproxy/haproxy.cfg با تعریف تنظیمات انجام می شود. می توانید در مورد گزینه های پیکربندی HAProxy مطالعه کنید در صفحه مستنداتاگر می خواهید در مورد آن بیشتر بدانید

تعادل بار در لایه انتقال (لایه 4)

بیایید با تنظیمات اولیه شروع کنیم. یک فایل پیکربندی جدید ایجاد کنید، به عنوان مثال با استفاده از vi با دستور زیر:

sudo vi /etc/haproxy/haproxy.cfg

بخش های زیر را به فایل اضافه کنید. جایگزین کردن نام ارائهکننده چه چیزی باید سرورهای شما را در صفحه آمار فراخوانی کند، و private_ip - آدرس های IP خصوصی سرورهایی که می خواهید ترافیک وب را به آنها هدایت کنید. می توانید آدرس های IP خصوصی را بررسی کنید در کنترل پنل UpCloud و روی زبانه شبکه خصوصی در منو شبکه ارتباطی.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

این یک متعادل کننده بار لایه انتقال (لایه 4) با نام خارجی http_front listening در پورت 80 را تعریف می کند، که سپس ترافیک را به یک باطن پیش فرض به نام http_back هدایت می کند. آمار اضافی /haproxy?stats صفحه آمار را به آدرس مشخص شده متصل می کند.

الگوریتم های متعادل کننده بار مختلف

مشخص کردن سرورها در بخش backend به HAProxy اجازه می دهد تا در صورت امکان از این سرورها برای متعادل کردن بار طبق یک الگوریتم دور رابین استفاده کند.

الگوریتم های متعادل کننده برای تعیین اینکه هر اتصال به کدام سرور در backend ارسال می شود استفاده می شود. در اینجا برخی از گزینه های مفید وجود دارد:

  • درخواست کتبی: هر سرور به نوبه خود با توجه به وزن خود استفاده می شود. این نرم‌ترین و منصفانه‌ترین الگوریتم زمانی است که زمان پردازش سرورها به طور مساوی توزیع شود. این الگوریتم پویا است و به شما اجازه می دهد تا وزن سرور را در لحظه تنظیم کنید.
  • Leastconn: سرور با کمترین اتصالات انتخاب شده است. Round Robin بین سرورهایی با بار یکسان انجام می شود. استفاده از این الگوریتم برای جلسات طولانی مانند LDAP، SQL، TSE و ... توصیه می شود، اما برای جلسات کوتاه مانند HTTP چندان مناسب نیست.
  • اولین: اولین سرور با اسلات های اتصال موجود، اتصال را دریافت می کند. سرورها از پایین ترین شناسه عددی تا بالاترین، که به طور پیش فرض موقعیت سرور در مزرعه است، انتخاب می شوند. هنگامی که یک سرور به maxconn رسید، سرور بعدی استفاده می شود.
  • منبع: آدرس IP منبع هش شده و بر وزن کل سرورهای در حال اجرا تقسیم می شود تا مشخص شود کدام سرور درخواست را دریافت می کند. به این ترتیب، همان آدرس IP مشتری همیشه به همان سرور می رود، در حالی که سرورها ثابت می مانند.

راه اندازی تعادل بار در سطح برنامه (لایه 7)

یکی دیگر از گزینه های موجود، پیکربندی یک متعادل کننده بار برای اجرا در لایه برنامه (لایه 7) است، که زمانی مفید است که بخش هایی از برنامه وب شما در هاست های مختلف قرار دارد. این را می توان با مهار کردن انتقال اتصال، به عنوان مثال با URL، به دست آورد.

فایل پیکربندی HAProxy را با استفاده از یک ویرایشگر متن باز کنید:

sudo vi /etc/haproxy/haproxy.cfg

سپس طبق مثال زیر قسمت های frontend و backend را پیکربندی کنید:

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

قسمت جلویی یک قانون ACL به نام url_blog را اعلام می کند که برای همه اتصالات با مسیرهایی که با /blog شروع می شوند اعمال می شود. Use_backend مشخص می‌کند که اتصالات منطبق با شرایط url_blog باید توسط یک باطن به نام blog_back ارائه شوند و همه درخواست‌های دیگر توسط backend پیش‌فرض مدیریت می‌شوند.

در قسمت پشتیبان، پیکربندی دو گروه از سرورها را تنظیم می کند: http_back، مانند قبل، و یک جدید به نام blog_back، که اتصالات به example.com/blog را مدیریت می کند.

پس از تغییر تنظیمات، فایل را ذخیره کرده و HAProxy را با استفاده از دستور زیر راه اندازی مجدد کنید:

sudo systemctl restart haproxy

اگر در حین راه اندازی اخطار یا پیام خطایی دریافت کردید، پیکربندی خود را برای آنها بررسی کنید و مطمئن شوید که همه فایل ها و پوشه های لازم را ایجاد کرده اید، سپس دوباره راه اندازی مجدد را امتحان کنید.

تست تنظیمات

هنگامی که HAProxy پیکربندی و اجرا شد، آدرس IP عمومی سرور بار متعادل کننده را در یک مرورگر باز کنید و بررسی کنید که آیا به درستی به backend متصل شده اید یا خیر. پارامتر stats uri در پیکربندی یک صفحه آمار در آدرس مشخص شده ایجاد می کند.

http://load_balancer_public_ip/haproxy?stats

وقتی صفحه آمار را بارگذاری می کنید، اگر همه سرورهای شما سبز نشان داده شوند، آنگاه راه اندازی با موفقیت انجام شد!

نصب متعادل کننده بار HAProxy در CentOS

صفحه آمار حاوی اطلاعات مفیدی برای ردیابی میزبان وب شما، از جمله زمان بالا/پایین و تعداد جلسات است. اگر سرور قرمز علامت گذاری شده است، مطمئن شوید که سرور روشن است و می توانید آن را از دستگاه متعادل کننده بار پینگ کنید.

اگر متعادل کننده بار شما پاسخ نمی دهد، مطمئن شوید که اتصالات HTTP توسط فایروال مسدود نشده اند. همچنین مطمئن شوید که HAProxy با استفاده از دستور زیر کار می کند:

sudo systemctl status haproxy

محافظت از صفحه آمار با رمز عبور

با این حال، اگر صفحه آمار به سادگی در قسمت جلو لیست شده باشد، برای دیدن همه باز است، که ممکن است ایده خوبی نباشد. در عوض، می‌توانید با افزودن مثال زیر به انتهای فایل haproxy.cfg، یک شماره پورت سفارشی به آن اختصاص دهید. جایگزین کردن نام کاربری и کلمه عبور برای چیزی امن:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

پس از افزودن یک گروه شنونده جدید، پیوند قدیمی stats uri را از گروه frontend حذف کنید. پس از اتمام، فایل را ذخیره کرده و HAProxy را مجددا راه اندازی کنید.

sudo systemctl restart haproxy

سپس بار دیگر با شماره پورت جدید Load Balanser را باز کنید و با نام کاربری و رمز عبوری که در فایل کانفیگ مشخص کرده اید وارد شوید.

http://load_balancer_public_ip:8181

مطمئن شوید که همه سرورهای شما هنوز سبز نشان داده می شوند و سپس فقط IP متعادل کننده بار را بدون هیچ شماره پورتی در مرورگر خود باز کنید.

http://load_balancer_public_ip/

اگر حداقل صفحات فرود متنوعی در سرورهای بک‌اند خود داشته باشید، متوجه خواهید شد که هر بار که صفحه را مجدداً بارگذاری می‌کنید، پاسخی از میزبان متفاوت دریافت می‌کنید. می توانید الگوریتم های مختلف تعادل را در بخش پیکربندی امتحان کنید یا بررسی کنید مستندات کامل.

نتیجه گیری: HAProxy Load Balancer

بابت راه اندازی موفقیت آمیز بار متعادل کننده HAProxy خود را تبریک می گویم! حتی با یک راه‌اندازی متعادل بار اولیه، می‌توانید عملکرد و در دسترس بودن برنامه وب خود را به میزان قابل توجهی بهبود بخشید. این راهنما فقط مقدمه ای برای متعادل کردن بار با HAProxy است، که قادر است بسیار بیشتر از آنچه در راهنمای راه اندازی سریع پوشش داده شود. ما توصیه می کنیم با استفاده از پیکربندی های مختلف آزمایش کنید مستندات گسترده، در دسترس HAProxy است و سپس برنامه ریزی تعادل بار را برای محیط تولید خود شروع کنید.

با استفاده از میزبان های متعدد برای محافظت از وب سرویس شما با headroom، خود متعادل کننده بار ممکن است هنوز یک نقطه خرابی را نشان دهد. شما می توانید با نصب یک IP شناور بین متعادل کننده های بار متعدد، دسترسی بالا را بیشتر بهبود بخشید. شما می توانید در مورد این در ما بیشتر بدانید مقاله ای در مورد آدرس های IP شناور در UpCloud.

بیشتر در مورد دوره "مدیر لینوکس. مجازی سازی و خوشه بندی"***

منبع: www.habr.com

اضافه کردن نظر