0

معرفی سرویس HAProxy و راه اندازی آن بر روی CentOS 7

معرفی:

HAProxy یکی از سرویس های رایگان و بسیار قدرتمند در زمینه ی تنظیم بار (Load Balancing) می باشد.

HAProxy مخفف عبارت High Availability Proxy می باشد.

از این سرویس برای بالا بردن عملکرد و در دسترس بودن وب سرورها استفاده می شود.

همچنین این سرویس قابل راه اندازی بر روی بسترهای Linux ،solaris ،FreeBSD می باشد.

این سرویس رایگان و بسیار کم حجم، عملکرد بسیار بالایی دارد و در محیط های Enterprise نیز در حال استفاده است.

به همین اندازه معرفی راضی باشید تا به قسمت های جذاب تر برسیم.

راه اندازی:

سناریو ما به صورت زیر خواهد بود:

سرور HAProxy نه از لحاظ فیزیکی، بلکه از لحاظ منطقی جلوی وب سرورها قرار می گیرد و درخواست های کاربران ابتدا به این سرور فرستاده می شود.

سپس این سرور با توجه به الگوریتم هایی که برای آن تعریف می کنیم اقدام به تنظیم بار وب سرورها می کند.

حال نوبت راه اندازی است.

ابتدا نیاز است که سرور خود را آپدیت و پکیج HAProxy را نصب کنید:

# yum update

# Yum install haproxy

فایل کانفیگ این سرویس به صورت پیش فرض در این مسیر قرار دارد:

# /etc/haproxy/haproxy.cfg

بهتر است که یک کپی از فایل کانفیگ پیش فرض تهیه کنید و سپس بر روی فایل اصلی تغییرات را ایجاد کنید:

# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org

این فایل کانفیگ به صورت پیش فرض چهار بلوک اصلی دارد:

  • global
  • default
  • frontend
  • backend

بلوک global تنظیماتی است که بر روی همه ی سرور هایی که در backend تعریف می شوند، اعمال می شود.

بلوک default شامل تنظیماتی برای خود سرویس HAProxy می باشد.

بلوک frontend شامل تنظیماتی است که کاربران با آن سروکار دارند.

بلوک backend همان طور که از نامش پیداست، تنظیمات مربوط به load balancing می باشد که در پشت صحنه سرور انجام می شود.

حال به کانفیگ این فایل می پردازیم:

ابتدا فایل کانفیگ خود را با یک ادیتور باز کنید.

# vim /etc/haproxy/haproxy.cfg

سپس تنظیمات زیر را کپی کنید و داخل فایل کانفیگ خود وارد کنید.

global

log 127.0.0.1 local2

chroot /var/lib/haproxy

pidfile /var/run/haproxy.pid

maxconn 4000

user haproxy

group haproxy

defaults

mode http

log global

option httplog

retries 3

timeout http-request 10s

timeout queue 1m

timeout connect 10s

timeout client 1m

timeout server 1m

timeout http-keep-alive 10s

maxconn 3000

frontend pick_up_a_name

bind 192.168.10.100:8282

use_backend img if { path -i -m beg /imgage }

default_backend web_servers

backend img

balance roundrobin

server system4 192.168.10.100:80 check

backend web_servers

balance roundrobin

server system0 192.168.10.100:80 check

server system1 192.168.10.100:81 check

server system2 192.168.10.100:8181 check

در نهایت فایل را ذخیره کرده و سرویس خود را یک بار ریست کنید.

توضیح فایل کانفیگ:

ابتدا با بلوک frontend شروع می کنیم. برای سرور با دستور bind مشخص می کنیم که روی کدام اینترفیس و کدام پرت به کاربران سرویس داده شود.

دو دستور use_backend و default_backend را مانند if و else برنامه نویسی در نظر بگیرید.

عبارت if برای ما مشخص می کند که اگر درخواست کاربر با واژه image شروع شده باشد، آن را به backend img می فرستد.

در غیر این صورت اگر همان درخواست با image شروع نشده باشد، آن را به default_backend می فرستد.

حال نوبت بلوک backend می باشد.

backend اول ما که img می باشد از الگوریتم roundrobin پیروی می کند.

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

همچنین یک نام دلخواه مانند system4 به آن نسبت می دهیم.

در backend web_servers نیز به همین صورت نوع الگوریتم تنظیم بار، آدرس و پرت سرورها را مشخص می کنیم.

همچنین به هر کدام یک نام دلخواه نسبت می دهیم.

یکی دیگر از الگوریتم های تنظیم بار، leastconn می باشد که می توان به جای roundrobin در فایل کانفیگ استفاده کرد.

در این الگوریتم در هر لحظه درخواست کاربران به سروری داده می شود که بار کمتری داشته باشد.

حال با توجه به بلوک frontend که درخواست کاربران بر روی ۸۲۸۲ جواب داده می شود، شروع به تست سرویس خود می کنیم.

در مرورگر آدرس را وارد کرده و چند بار صفحه را پشت سر هم رفرش می کنیم.

همان طور که مشاهده می کنید درخواست ما هر بار به صورت تصادفی به یکی از سرور ها وصل می شود.

what is haproxy

به همین راحتی!

راه اندازی پنل گرافیکی:

این سرویس دوست داشتنی حجت را بر تمام دوست داران دنیای open source تمام کرده و یک پنل گرافیکی هم به ادمین ها ارائه می دهد.

در این پنل اطلاعات و لاگ های خوبی به ادمین نشان داده می شود.

نام این ماژول HAProxy stat می باشد.

برای فعال کردن این ماژول بعد از بلوک default، دستورات زیر را در فایل کانفیگ وارد کنید:

listen stats 192.168.10.100:1936

mode http

log global

maxconn 10

clitimeout 100s

srvtimeout 100s

contimeout 100s

timeout queue 100s

stats enable

stats hide-version

stats refresh 30s

stats show-node

stats auth admin:password

stats uri /haproxy?stats

فایل را ذخیره کرده و سرویس خود را ریست کنید.

آدرس سرور را در مرورگر وارد کرده و از لاگ های گرافیکی لذت ببرید.

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

امتیاز ما
برای امتیاز به این پست کلیک کنید
[کل: 0 میانگین: 0]
ارسال دیدگاه