پرش به مطلب اصلی

افزایش منابع و مقیاس‌پذیری (Scaling)

🖼
تصویر: تنظیم مقیاس‌پذیری اپلیکیشنplaceholder — تصویر را اینجا جایگزین کنید

اپلیکیشن‌های مستقر بر ابرکلیک می‌توانند به‌صورت عمودی (افزایش منابع) یا افقی (افزایش تعداد نمونه‌ها) مقیاس‌دهی شوند.


روش‌های مقیاس‌دهی

۱. مقیاس‌پذیری عمودی (Vertical Scaling)

منابع فیزیکی (CPU و RAM) اختصاص‌یافته به اپلیکیشن را افزایش می‌دهید. این کار از طریق تغییر پلن یا خرید افزونه‌های vCPU و RAM انجام می‌شود.


۲. مقیاس‌پذیری افقی (Horizontal Scaling)

تعداد نمونه‌های در حال اجرای اپلیکیشن (Replicas) را افزایش می‌دهید. لودبالانسر ابرکلیک ترافیک ورودی را بین ریپلیکاها توزیع می‌کند.

سقف تعداد ریپلیکاها (Replicas) در هر پلن:

نام پلن فعالسقف تعداد ریپلیکاهای هر برنامهقابلیت لودبالانسر
☁️ ابر (رایگان)۱ ریپلیکا (بدون مقیاس افقی)غیرفعال
🌧️ بارانحداکثر ۲ ریپلیکافعال
❄️ برفحداکثر ۵ ریپلیکافعال
رعدحداکثر ۱۰ ریپلیکافعال
🌪️ طوفانحداکثر ۲۰ ریپلیکافعال
🏢 سازمانیبدون محدودیت (∞)فعال

افزایش تعداد ریپلیکاها به‌صورت دستی (Manual Scaling)

شما می‌توانید تعداد کانتینرهای فعال برنامه خود را در چند ثانیه تغییر دهید:

از طریق داشبورد وب

۱. وارد جزئیات اپلیکیشن خود در داشبورد ابرکلیک شوید. ۲. به زبانه تنظیمات منابع > مقیاس‌دهی بروید. ۳. تعداد کانتینرها (ریپلیکاها) را افزایش داده و دکمه ذخیره را بزنید. پادهای جدید بلافاصله لود شده و به لودبالانسر متصل می‌شوند.

از طریق ابزار CLI

دستور زیر تعداد کانتینرهای فعال برنامه شما را به عدد ۳ تغییر می‌دهد:

abrclick scale <app-name> --replicas 3

مقیاس‌پذیری خودکار برنامه‌ها (HPA - Horizontal Pod Autoscaling)

در پلن‌های رعد و بالاتر، می‌توانید سیستم مقیاس‌پذیری خودکار را بر روی برنامه‌های حساس پروداکشن خود فعال کنید. با فعال‌سازی این بخش، کوبرنتیز به‌طور مداوم مصرف پردازنده (CPU) و حافظه (RAM) کانتینرهای شما را بررسی کرده و در صورت رد شدن از مرز تعریف‌شده، به‌طور خودکار کانتینرهای جدید ساخته یا در صورت افت ترافیک، کانتینرهای اضافی را هرس می‌کند.

نحوه فعال‌سازی و تنظیم قوانین HPA

abrclick autoscale <app-name> --min 2 --max 5 --cpu-percent 80
  • --min: حداقل تعداد کانتینرهای فعال در شرایط عادی.
  • --max: حداکثر تعداد کانتینرهای مجاز برای ساخت در بار ترافیکی سنگین.
  • --cpu-percent: آستانه مصرف پردازنده کانتینرها که در صورت رد شدن از آن، فرآیند ساخت نسخه جدید شروع می‌شود.


محدودیت منابع (Resource Limits)

می‌توانید منابع CPU و حافظه هر کانتینر را محدود کنید. این تنظیمات از طریق داشبورد، CLI، یا فایل abrclick.json قابل تنظیم هستند:

  • cpuLimit: حداکثر CPU (پیش‌فرض: "500m")
  • memoryLimit: حداکثر حافظه (پیش‌فرض: "512Mi")
  • cpuRequest: CPU درخواستی (اختیاری)
  • memRequest: حافظه درخواستی (اختیاری)

Health Checks

اپلیکیشن شما باید یک مسیر سلامت (مثلاً /health یا /) را expose کند. ابرکلیک از فیلد healthCheckPath برای تنظیم readiness، liveness، و startup probes استفاده می‌کند. این probes تضمین می‌کنند که ترافیک فقط به کانتینرهای آماده هدایت شود.


پورت‌ها و WebSocket

اپلیکیشن‌هایی که چند endpoint دارند (مثلاً Laravel Reverb برای WebSocket) می‌توانند از multi-endpoint استفاده کنند. هر endpoint می‌تواند پورت و مسیر خاص خود را داشته باشد. حداکثر ۱۰ endpoint برای هر اپلیکیشن مجاز است. تنظیم از طریق داشبورد یا abrclick.json انجام می‌شود.

چه زمانی افقی scale نکنیم

اپلیکیشن‌های stateful (مانند SQLite یا session حافظه‌ای) نیاز به sticky session یا تک replica دارند. برای این موارد، از دیسک دائمی یا Object Storage استفاده کنید.


مزایای مقیاس‌پذیری بدون قطعی (Zero-Downtime)

هنگام تغییر تعداد ریپلیکاها، ترافیک کاربران قطع نمی‌شود. کوبرنتیز ابتدا کانتینر جدید را آماده کرده و Readiness Probe آن را تأیید می‌کند، سپس ترافیک را به آن هدایت می‌کند و کانتینرهای قدیمی را ایمن خاموش می‌کند.