مقدمه
HAProxy که مخفف High Availability Proxy است، یک پراکسی سرور مبتنی بر TCP و HTTP بوده که روی سیستمعاملهای Linux، Solaris و FreeBSD اجرا میشود.
از HAProxy برای موارد زیر استفاده میشود:
- Load Balancing بین چند سرور
- افزایش دسترسپذیری (High Availability)
- توزیع درخواست کاربران بین چند سرور
به صورت پیشفرض در بسیاری از نصبهای CentOS 8، HAProxy طوری تنظیم نشده که لاگهای خود را در فایل ذخیره کند.
در این راهنما یاد میگیرید چگونه:
- لاگگیری HAProxy را فعال کنید
- از Rsyslog برای ذخیره لاگها استفاده کنید
- ارتباط بین HAProxy و Rsyslog را از طریق Unix Domain Socket برقرار کنید
این روش از نظر:
- پایداری
- سرعت
- امنیت
بهتر از استفاده از پورتهای شبکه است.
پیشنیازها
برای انجام این آموزش نیاز دارید:
- یک سرور CentOS 8
- یک کاربر non-root با دسترسی sudo
مرحله ۱ — نصب و فعالسازی HAProxy
برای نصب HAProxy دستور زیر را اجرا کنید:
در زمان نصب اگر پیام زیر نمایش داده شد:
حرف y را وارد کنید.
بعد از نصب، سرویس HAProxy را فعال کنید:
سپس سرویس را اجرا کنید:
برای بررسی وضعیت:
اگر خروجی شامل عبارت زیر بود:
یعنی سرویس به درستی اجرا شده است.
مرحله ۲ — تنظیم لاگگیری HAProxy
فایل تنظیمات HAProxy را باز کنید:
این خط را پیدا کنید:
و آن را کامنت کنید:
سپس خط زیر را اضافه کنید:
بخش مربوطه باید به این شکل باشد:
log /dev/log local0
چرا این تغییر مهم است؟
این خط:
باعث میشود HAProxy لاگها را به Unix Socket ارسال کند.
همچنین این خط:
باعث میشود HAProxy فقط به فایلهای داخل این مسیر دسترسی داشته باشد.
بعد دایرکتوری موردنیاز را بسازید:
و سرویس را ریستارت کنید:
اکنون HAProxy لاگها را به این مسیر ارسال میکند:
مرحله ۳ — تنظیم Rsyslog برای دریافت لاگها
فایل تنظیمات جدید بسازید:
و این تنظیمات را وارد کنید:
$AddUnixListenSocket /var/lib/haproxy/dev/log
:programname, startswith, “haproxy” {
/var/log/haproxy.log
stop
}
عملکرد این تنظیمات
خط اول:
به Rsyslog میگوید روی این سوکت گوش کند.
بخش دوم:
تمام لاگهای HAProxy را در فایل زیر ذخیره میکند:
سپس Rsyslog را ریستارت کنید:
مرحله ۴ — تنظیم SELinux (اختیاری)
اگر SELinux در حالت Enforcing باشد، باید دسترسی لازم برای ارتباط Rsyslog و HAProxy را بدهید.
بررسی وضعیت SELinux:
اگر خروجی:
بود، باید یک Policy اضافه کنید.
ساخت فایل policy
محتوا:
module rsyslog-haproxy 1.0;
require {
type syslogd_t;
type haproxy_var_lib_t;
class dir { add_name remove_name search write };
class sock_file { create setattr unlink };
}
allow syslogd_t haproxy_var_lib_t:dir { add_name remove_name search write };
allow syslogd_t haproxy_var_lib_t:sock_file { create setattr unlink };
نصب ابزارهای لازم
کامپایل ماژول:
ساخت package:
نصب policy:
سپس:
مرحله ۵ — تست لاگگیری HAProxy
برای تست، یک درخواست HTTP ارسال کنید:
احتمالاً پاسخ زیر میگیرید:
این طبیعی است چون backend پیشفرض وجود ندارد.
اکنون لاگ را بررسی کنید:
اگر خروجیای مشابه زیر دیدید:
یعنی لاگگیری HAProxy با موفقیت فعال شده است.
جمعبندی
در این آموزش:
- HAProxy را نصب کردید
- لاگگیری را با Unix Socket فعال کردید
- Rsyslog را برای دریافت لاگ تنظیم کردید
- در صورت نیاز SELinux را تنظیم کردید
- عملکرد لاگگیری را تست کردید
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران