HAProxy

برنامه HAProxy یک ابزار متن‌باز و قدرتمند برای توزیع بار (Load Balancing) و معکوس کردن پروکسی (Reverse Proxy) است که از پروتکل‌های TCP و HTTP پشتیبانی می‌کند. وظیفه اصلی این سرویس، توزیع هوشمندانه ترافیک شبکه بین سرورهای مختلف و ارتقای پایداری برنامه‌های تحت وب است. این ابزار با اجرای مستمر تست‌های سلامت (Health Checks)، ترافیک ورودی را منحصرا به سرورهای سالم هدایت کرده و از بروز اختلال در سیستم‌های توزیع شده جلوگیری می‌کند.

مراحل استقرار

برای مشاهده راهنمای گام‌به‌گام ساخت سرویس و پیکربندی‌های پایه، به مستندات «استقرار برنامه‌های آماده» مراجعه کنید. همچنین برای تنظیمات زیرساختی نیز به بخش مدیریت اپلیکیشن مراجعه کنید:

پیش‌نیازها و استقرار برنامه

در استقرار کانتینری HAProxy، معماری سیستم دارای الزامات و محدودیت‌های زیر است که باید در زمان دیپلوی به آن‌ها توجه کنید:

  • معماری بدون حالت (Stateless): این کانتینر صرفا وظیفه هدایت و توزیع ترافیک را بر عهده دارد؛ بنابراین فاقد فضای ذخیره‌سازی پایدار (Persistent Volume) جهت نگهداری داده‌ها است و دیسکی به آن متصل نمی‌شود.

  • سطح دسترسی سیستمی: جهت حفظ امنیت شبکه، ترمینال و اپلیکیشن این سرویس با سطح دسترسی کاربر عادی (Non-Root) اجرا می‌شوند تا امکان اجرای دستورات سیستمی در هسته سیستم‌عامل مسدود باشد.

متغیرهای محیطی

در فرایند پیکربندی، علاوه بر تعیین نام پروژه، نام اپلیکیشن و نام دامنه (Sub-domain)، تنظیم دقیق متغیرهای سلامت (Probes) کاملا حیاتی است. پیکربندی اشتباه این مقادیر می‌تواند منجر به قطع شدن مسیر ترافیک یا ری‌استارت شدن مداوم کانتینر شود:

  • Liveness Probe (بررسی زنده بودن): این تست مشخص می‌کند که آیا برنامه به درستی در حال اجرا است یا خیر. در صورت عدم موفقیت، زیرساخت کانتینر را از کار افتاده (Unhealthy) تلقی کرده و آن را ری‌استارت می‌کند.

    • initial delay: زمان انتظار اولیه برای شروع تست (پیش‌فرض: ۵ ثانیه).

    • timeout: حداکثر زمان انتظار برای دریافت پاسخ (پیش‌فرض: ۱ ثانیه).

  • Readiness Probe (بررسی آمادگی): تایید می‌کند که سرویس آماده دریافت بار و ترافیک ورودی است. در صورت پاس نشدن این تست، ترافیک به سمت زیردامنه تنظیم شده هدایت نخواهد شد.

    • initial delay: (پیش‌فرض: ۳۰ ثانیه).

    • timeout: (پیش‌فرض: ۱ ثانیه).

  • Startup Probe (بررسی شروع موفق): تعیین می‌کند که آیا برنامه با موفقیت راه‌اندازی اولیه را پشت سر گذاشته است یا خیر. تا زمان اتمام این بررسی، دو پروب قبلی متوقف می‌مانند.

    • initial delay: (پیش‌فرض: ۳۰ ثانیه).

    • timeout: (پیش‌فرض: ۵ ثانیه).

نکته: برای آموزش گام‌به‌گام نحوه تعریف متغیرهای اختصاصی، ConfigMapها و Secretها در داشبورد، به مستندات متغیرهای محیطی مراجعه کنید.

تنظیمات دامنه

جهت اتصال دامنه یا ساب‌دامین اختصاصی خود برای هدایت ترافیک، به راهنمای تنظیمات دامنه و IP مراجعه نمایید.

راه‌اندازی و ورود اولیه

به دلیل ماهیت پردازشی و عدم نیاز به ذخیره‌سازی داده‌ها، اسلایدر مربوط به فضای دیسک در این سرویس در دسترس نیست. برای تخصیص منابع، می‌توانید از پلن پایه (شامل ۱ گیگابایت رم و ۱ هسته پردازنده) استفاده کرده یا برای شبکه‌های دارای ترافیک ورودی بالا، منابع را از طریق اسلایدرها شخصی‌سازی کنید. پس از تایید هزینه، بر روی دکمه «ایجاد اپلیکیشن» کلیک کنید:

  1. با شروع فرایند ساخت، پنجره خلاصه اطلاعات باز می‌شود. در این صفحه می‌توانید زیردامنه اختصاص یافته و نسخه ایمیج مستقر شده را مشاهده کنید.
  2. پس از پر شدن نوار پیشرفت بیلد، سرویس HAProxy شما آماده مسیریابی و توزیع ترافیک در شبکه خواهد بود.

نکته فنی مهم:

به دلیل ماهیت لودبالانسر، بلافاصله پس از استقرار و پیش از تعریف سرورهای مقصد، در صورت فراخوانی دامنه با خطای 503 Service Unavailable مواجه خواهید شد. این حالت کاملاً طبیعی است و نشان می‌دهد هسته سرویس به درستی فعال شده است. برای شروع مسیریابی و توزیع ترافیک، باید در گام بعدی سرورهای پس‌زمینه (Backend) خود را در فایل پیکربندی سرویس تعریف کنید.