آموزش تنظیم سریع لاگ‌گیری HAProxy با Rsyslog در CentOS 8

مقدمه

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 دستور زیر را اجرا کنید:

sudo dnf install haproxy

در زمان نصب اگر پیام زیر نمایش داده شد:

Is this ok [y/N]:

حرف y را وارد کنید.

بعد از نصب، سرویس HAProxy را فعال کنید:

sudo systemctl enable haproxy.service

سپس سرویس را اجرا کنید:

sudo systemctl start haproxy.service

برای بررسی وضعیت:

sudo systemctl status haproxy.service

اگر خروجی شامل عبارت زیر بود:

Active: active (running)

یعنی سرویس به درستی اجرا شده است.


مرحله ۲ — تنظیم لاگ‌گیری HAProxy

فایل تنظیمات HAProxy را باز کنید:

sudo vi /etc/haproxy/haproxy.cfg

این خط را پیدا کنید:

log 127.0.0.1 local2

و آن را کامنت کنید:

#log 127.0.0.1 local2

سپس خط زیر را اضافه کنید:

log /dev/log local0

بخش مربوطه باید به این شکل باشد:

#log 127.0.0.1 local2
log /dev/log local0

چرا این تغییر مهم است؟

این خط:

log /dev/log local0

باعث می‌شود HAProxy لاگ‌ها را به Unix Socket ارسال کند.

همچنین این خط:

chroot /var/lib/haproxy

باعث می‌شود HAProxy فقط به فایل‌های داخل این مسیر دسترسی داشته باشد.


بعد دایرکتوری موردنیاز را بسازید:

sudo mkdir /var/lib/haproxy/dev

و سرویس را ریستارت کنید:

sudo systemctl restart haproxy.service

اکنون HAProxy لاگ‌ها را به این مسیر ارسال می‌کند:

/var/lib/haproxy/dev/log

مرحله ۳ — تنظیم Rsyslog برای دریافت لاگ‌ها

فایل تنظیمات جدید بسازید:

sudo vi /etc/rsyslog.d/99-haproxy.conf

و این تنظیمات را وارد کنید:

$AddUnixListenSocket /var/lib/haproxy/dev/log

:programname, startswith, “haproxy” {
/var/log/haproxy.log
stop
}


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

خط اول:

$AddUnixListenSocket /var/lib/haproxy/dev/log

به Rsyslog می‌گوید روی این سوکت گوش کند.

بخش دوم:

:programname, startswith, “haproxy”

تمام لاگ‌های HAProxy را در فایل زیر ذخیره می‌کند:

/var/log/haproxy.log

سپس Rsyslog را ریستارت کنید:

sudo systemctl restart rsyslog

مرحله ۴ — تنظیم SELinux (اختیاری)

اگر SELinux در حالت Enforcing باشد، باید دسترسی لازم برای ارتباط Rsyslog و HAProxy را بدهید.

بررسی وضعیت SELinux:

getenforce

اگر خروجی:

Enforcing

بود، باید یک Policy اضافه کنید.


ساخت فایل policy

vi rsyslog-haproxy.te

محتوا:

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 };


نصب ابزارهای لازم

sudo dnf install checkpolicy

کامپایل ماژول:

checkmodule -M -m rsyslog-haproxy.te -o rsyslog-haproxy.mod

ساخت package:

semodule_package -o rsyslog-haproxy.pp -m rsyslog-haproxy.mod

نصب policy:

sudo semodule -i rsyslog-haproxy.pp

سپس:

sudo systemctl restart rsyslog

مرحله ۵ — تست لاگ‌گیری HAProxy

برای تست، یک درخواست HTTP ارسال کنید:

curl -si http://127.0.0.1:5000

احتمالاً پاسخ زیر می‌گیرید:

HTTP/1.0 503 Service Unavailable

این طبیعی است چون backend پیش‌فرض وجود ندارد.


اکنون لاگ را بررسی کنید:

sudo grep -E ‘NOSRV.+503’ /var/log/haproxy.log

اگر خروجی‌ای مشابه زیر دیدید:

503 Service Unavailable

یعنی لاگ‌گیری HAProxy با موفقیت فعال شده است.


جمع‌بندی

در این آموزش:

  • HAProxy را نصب کردید
  • لاگ‌گیری را با Unix Socket فعال کردید
  • Rsyslog را برای دریافت لاگ تنظیم کردید
  • در صورت نیاز SELinux را تنظیم کردید
  • عملکرد لاگ‌گیری را تست کردید

 

 

 

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *