پیکربندی اولیه HAProxy
در مطلب قبلی با عنوان “نصب HAProxy بر روی Ubuntu” چگونگی نصب haproxy بر روی Ubuntu را شرح دادیم. در این مطلب قصد داریم تنظیمات اولیه و ابتدایی haproxy را انجام دهیم. پیکربندی haproxy بسیار ساده بوده و به دور از پیچیدگی است. یکی از مزایای haproxy داشتن قابلیتهای بسیار و قدرتمند بودن در عین سادگی است.
در سناریوی مد نظر ما سه وب سرور مانند شکل زیر وجود دارند و وظیفه haproxy تقسیم بار (درخواستهای دریافتی از کاربران) بین این سه سرور است. معمولا haproxy یک آدرس IP در رنج آدرس سرورهای واقعی دارد.
نکته: معمولا توپولوژیهای کشیده شده از load balancerها به گونهای است که افراد گمان میکنند default gateway سرورها باید سرور load balancer باشد. اما معمولا اینطور نیست و default gateway سرورها یک روتر در شبکه است.
ویرایش فایل haproxy.cfg
برای پیکربندی haproxy باید فایل haproxy.cfg را ویرایش کرد. این فایل در مسیر etc/haproxy قرار دارد. این فایل را با یک ویرایشگر مانند vi باز کنید. پیکربندی اولیه این فایل به صورت زیر خواهد بود. این فایل از دارای دو بخش global و default میباشد که تنظیمات اولیه و کلی haproxy را در خود جای دادهاند.
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 # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private ... 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 و backend را به انتهای این فایل اضافه کرد. به عنوان مثال اگر شما دارای سه وب سرور با آدرسهای 10.0.0101 و 10.0.0.102 و 10.0.0.103 باشید. آدرس سرور haproxy نیز 10.0.0.50 باشد و بخواهید ترافیک را بین سرورها تقسیم کنید، پیکربندی haproxy به صورت زیر خواهد بود.
frontend MY_Proxy bind 10.0.0.50:80 default_backend My_Web_Cluster backend My_Web_Cluster server Server_01 10.0.0.101:80 check server Server_02 10.0.0.102:80 check server Server_03 10.0.0.103:80 check
در بخش frontened تنظیمات به گونهای است که haproxy بر روی پورت 80 به درخواستهای HTTP گوش میکند و این درخواستها را به یکی از سه سرور مشخص شده در قسمت backend ارسال میکند. با استفاده از امکان check میتوان سلامتی سرورها را بررسی کرد و از فرستادن درخواستها به سروری که دچار مشکل شده است جلوگیری کرد.
بررسی درستی تنظیمات
پس از انجام تغییرات در فایل haproxy.cfg میتوانید درست بودن این فایل پیکربندی را توسط فرمان زیر چک کنید.
root@HAProxy:/home/alireza# haproxy -f /etc/haproxy/haproxy.cfg -c Configuration file is valid
سپس برای اعمال تغییرات انجام شده باید سرویس haproxy را restart کنید. برای این کار از یکی از دو فرمان زیر میتوانید استفاده کنید.
root@HAProxy:/home/alireza# service haproxy restart or root@HAProxy:/home/alireza# /etc/init.d/haproxy reload
سایر امکانات و قابلیتهای haproxy
haproxy دارای امکانات بسیار زیاد دیگری مانند:
– مشاهده عملکرد و وضعیت سرورها از طریق وب
– مشخص کردن الگوریتم تقسیم بار بین سرورها
– session persistency (وصل شدن یک کاربر به سرور اولیه در درخواستهای بعدی کاربر)
– ssl offloading (قرار دادن ssl certificate سایت بر روی haproxy به جای وب سرور)
– دستکاری هدرهای HTTP در درخواستهای کاربران و یا جوابهای سرور
– افزایش امنیت web application و جلوگیری از پارهای از حملات
– high availability از طریق داشتن haproxy پشتیبان و وارد شدن خودکار به مدار در صورت از کار افتادن سرور اول
– و … میباشد.
درباره علیرضا کریمی
من علیرضا کریمی هستم و تقریبا 15 سالی هست که توی فیلد شبکههای کامپیوتری کار میکنم.
نوشته های بیشتر از علیرضا کریمی