نصب و راه اندازی HAProxy در Ubuntu 16.04

حامد الهی فر ۰۸ آذر ۱۳۹۶ ۰ دیدگاه

درباره HAProxy

 

HAProxy (High Availability Proxy) یک نرم افزار Open Source جهت متعادل کردن بار یا همان Loan Balancer می باشد که توانایی تعادل برای هر نوع سرویس TCP را داراست بخصوص پروتوکل HTTP با پشتیبانی از لایه 7 شبکه.

 

مقدمه

برای این آموزش شما به 3 سرور مجازی احتیاج خواهید داشت .

Server 1 – Load Balancer
Hostname: haproxy
OS: Ubuntu Public IP: 1.1.1.1 Private IP: 10.0.0.100

Server 2 – Node 1
Hostname: lamp1
OS: LAMP on Ubuntu Private IP: 10.0.0.1

Server 2 – Node 2
Hostname: lamp2
OS: LAMP on Ubuntu Private IP: 10.0.0.2

 

نصب HAProxy

 

جهت نصب براحتی می توان از دستور apt-get استفاده کرد:

apt-get install haproxy

سپس نیاز است اجرای اتوماتیک نرم افزار را پس از بوت شدن سیستم فعال کرد:

nano /etc/default/haproxy

و ENABLED را برابر 1 قرار می دهیم:

ENABLED=1

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

root@haproxy:~# service haproxy

Usage: /etc/init.d/haproxy {start|stop|reload|restart|status}

 

تنظیمات HAProxy

فایل تنظیمات اولیه را حذف می کنیم و یک فایل خالی برای تنظیمات می سازیم:

mv /etc/haproxy/haproxy.cfg{,.original}

 

nano /etc/haproxy/haproxy.cfg

 

 

جهت تکمیل فایل تنظیمات آنرا به صورت بلاک به بلاک تکمیل خواهیم کرد:

global

    log 127.0.0.1 local0 notice

    maxconn 2000

    user haproxy

    group haproxy

 

خط مربوط به log جهت مشخص کردن لاگ سرور برای ارسال اطلاعات می باشد.

خط مربوط به maxconn تعداد کانکشن های همزمان را مشخص می کنید که به صور ت پیش فرض عدد 2000 می باشد. این عدد بسته به توان سرور شما متغییر است.

خطوط user , group  مشخص کننده مجوز اجرایی HAProxy  تحت این نام و گروه می باشد، این متغیر را تغییر ندهید.

defaults

    log     global

    mode    http

    option  httplog

    option  dontlognull

    retries 3

    option redispatch

    timeout connect  5000

    timeout client  10000

    timeout server  10000

در این بخش تنظیمات پیش فرض را اعمال می کنیم.

گزینه connect  تعیین کننده زمان اتمام اعتبار ارتباط می باشد. همچنین زمان‌های مربوط به client , server  نیز هر کدام تعیین می کنند در چه زمانی acknowledge اطلاعات ارسال شده منقضی شوند. HAProxy  پیش نهاد می کند این 2 مقدار با هم برابر باشند.

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

option redispatch تعیین کننده توضیع ارتباط در صورت از مدار خارج شدن یک سرور است.

listen appname 0.0.0.0:80

    mode http

    stats enable

    stats uri /haproxy?stats

    stats realm Strictly\ Private

    stats auth A_Username:YourPassword

    stats auth Another_User:passwd

    balance roundrobin

    option httpclose

    option forwardfor

    server lamp1 10.0.0.1:80 check

    server lamp2 10.0.0.2:80 check

 

این بخش تنظیمات هر رو سمت ارتباط را مشخص می کند. HAProxy  بر روی پورت 80 تنظیم شده است و appname نمایانگر نام برنامه می باشد.گزینه های state برای احراز هویت بر روی بستر HTTP می باشد.

برای مشاهده وضعیت سلامت خود HAProxy  لینک مشخص شده http://1.1.1.1/haproxy?stats; را ببنید.

گزینه balance  مشخص کننده الگوریتم بالانسینگ می باشد. بقیه گزینه‌ها عبارتند از

  • Round Robin (roundrobin)
  • Static Round Robin (static-rr)
  • Least Connections (leastconn)
  • Source (source)
  • URI (uri) and URL parameter (url_param)

 

اطلاعات تکمیلی در رابطه با الگوریتم ها در مستندات رسمی وجود دارند.

مشخصات سرور نمایان کننده سرور های پاسخ گو به ارتباط ها هستند.

server <name> <address>[:port] [param*]

 

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

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

service haproxy start

 

تست HAProxy

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

/var/www/file.php

<?php

header(‘Content-Type: text/plain’);

echo “Server IP: “.$_SERVER[‘SERVER_ADDR’];

echo “\nClient IP: “.$_SERVER[‘REMOTE_ADDR’];

echo “\nX-Forwarded-for: “.$_SERVER[‘HTTP_X_FORWARDED_FOR’];

?>

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

 

> curl http://1.1.1.1/file.php

Server IP: 10.0.0.1

Client IP: 10.0.0.100

X-Forwarded-for: 117.213.X.X

> curl http://1.1.1.1/file.php

Server IP: 10.0.0.2

Client IP: 10.0.0.100

X-Forwarded-for: 117.213.X.X

> curl http://1.1.1.1/file.php

Server IP: 10.0.0.1

Client IP: 10.0.0.100

X-Forwarded-for: 117.213.X.X

 

به روش Round Robin  در ارائه اطلاعات توجه کنید. ببینید چطور 2 سرور موجود به ترتیب به درخواست ما پاسخ می دهند.

در ادامه یک سرور را از مدار خارج می کنیم تا رفتار HAProxy را بررسی کنیم.

lamp1@haproxy:~#service apache2 stop

مجدد با Curl چند درخواست ارسال کنید تا عمکرد HAProxy برای شما محرز شود.

فناوران شبکه سینداد (آهنگ نوآوری)

سینداد یعنی هدیه‌ی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.