پاسارگارد
آموزش‌ها

محدودیت ترافیک نودها

راهنمای جامع تنظیم و مدیریت محدودیت ترافیک برای نودهای پاسارگارد

معرفی

قابلیت محدودیت ترافیک نودها (Per-Node Data Limits) یکی از ویژگی‌های پیشرفته پاسارگارد است که در PR #215 معرفی شد. این قابلیت به شما امکان می‌دهد برای هر نود به‌صورت جداگانه محدودیت ترافیک تعریف کنید و به‌طور خودکار نودهایی که به محدودیت رسیده‌اند را مدیریت کنید.

این قابلیت برای مدیریت هزینه‌های سرور و کنترل مصرف ترافیک نودها بسیار مفید است.

چرا محدودیت ترافیک نود؟

مزایای استفاده

  • کنترل هزینه: جلوگیری از مصرف بیش از حد ترافیک در سرورها
  • مدیریت خودکار: غیرفعال‌سازی خودکار نودهای پرمصرف
  • شفافیت: مانیتورینگ دقیق مصرف هر نود
  • انعطاف‌پذیری: استراتژی‌های مختلف بازنشانی محدودیت
  • هشدارهای هوشمند: اطلاع‌رسانی خودکار هنگام رسیدن به محدودیت

نحوه عملکرد

فرآیند کلی

  1. تنظیم محدودیت: تعیین حجم مجاز ترافیک برای نود (مثلاً 1000 گیگابایت)
  2. مانیتورینگ مداوم: سیستم به‌صورت خودکار مصرف نود را بررسی می‌کند
  3. شناسایی نود محدود: وقتی مصرف نود به محدودیت برسد، شناسایی می‌شود
  4. تغییر وضعیت: وضعیت نود به limited تغییر می‌کند
  5. قطع اتصال: نود به‌طور خودکار disconnect می‌شود
  6. اطلاع‌رسانی: نوتیفیکیشن به تلگرام/دیسکورد ارسال می‌شود

معادلات محاسبه

محاسبه مصرف کل نود:

Used Traffic = Uplink + Downlink

شرط محدود شدن نود:

اگر Data Limit > 0 و Used Traffic >= Data Limit:
  Is Limited = true
در غیر این صورت:
  Is Limited = false

تنظیمات در پنل

ایجاد نود با محدودیت ترافیک

هنگام ایجاد یا ویرایش نود، می‌توانید محدودیت ترافیک را تنظیم کنید:

باز کردن دیالوگ نود

در بخش Nodes، روی دکمه Add Node یا Edit کلیک کنید.

تنظیم محدودیت ترافیک

در بخش Data Limit (GB):

  • مقدار مورد نظر را به گیگابایت وارد کنید
  • برای ترافیک نامحدود، مقدار را 0 بگذارید یا خالی بگذارید

مثال: برای محدودیت 500 گیگابایت، عدد 500 را وارد کنید.

انتخاب استراتژی بازنشانی

در منوی Data Limit Reset Strategy یکی از گزینه‌های زیر را انتخاب کنید:

  • No Reset: هرگز بازنشانی نشود (پیش‌فرض)
  • Daily: هر روز بازنشانی شود
  • Weekly: هر هفته بازنشانی شود
  • Monthly: هر ماه بازنشانی شود
  • Yearly: هر سال بازنشانی شود

تنظیم زمان بازنشانی (اختیاری)

اگر استراتژی بازنشانی انتخاب کردید، می‌توانید زمان دقیق بازنشانی را مشخص کنید:

  • Daily: ساعت دلخواه (0-86399 ثانیه از ابتدای روز)
  • Weekly: روز و ساعت دلخواه (0-604799 ثانیه از ابتدای هفته)
  • Monthly: روز و ساعت دلخواه (0-2678399 ثانیه از ابتدای ماه)
  • Yearly: ماه، روز و ساعت دلخواه

برای بازنشانی بر اساس فاصله زمانی، مقدار -1 را وارد کنید.

مثال‌های کاربردی

مثال 1: محدودیت 1 ترابایت بدون بازنشانی

{
  "data_limit": 1073741824000,  // 1TB به بایت
  "data_limit_reset_strategy": "no_reset",
  "reset_time": -1
}

این تنظیمات برای نودهایی مناسب است که می‌خواهید کنترل کامل دستی روی بازنشانی داشته باشید.

مثال 2: محدودیت 500 گیگابایت با بازنشانی روزانه

{
  "data_limit": 536870912000,   // 500GB به بایت
  "data_limit_reset_strategy": "day",
  "reset_time": 0  // نیمه‌شب UTC
}

این تنظیمات برای کنترل مصرف روزانه سرورها مفید است.

مثال 3: محدودیت ماهانه ۲ ترابایت

{
  "data_limit": 2147483648000,   // 2TB به بایت
  "data_limit_reset_strategy": "month",
  "reset_time": 0  // اول هر ماه، نیمه‌شب
}

برای همگام‌سازی با پلن‌های ماهانه هاستینگ مناسب است.

وضعیت‌های نود

نودها می‌توانند وضعیت‌های مختلفی داشته باشند:

وضعیتتوضیحنمایش در UI
connectedنود فعال و متصل است🟢 Connected
connectingدر حال تلاش برای اتصال🟡 Connecting
errorخطا در اتصال🔴 Error
disabledغیرفعال شده توسط ادمین⚫ Disabled
limitedمحدودیت ترافیک رسیده⚠️ Limited

وقتی نود به وضعیت limited می‌رسد، به‌طور خودکار قطع اتصال می‌شود و کاربران نمی‌توانند از آن استفاده کنند.

مانیتورینگ و لاگ‌ها

بررسی مصرف نود

در لیست نودها، می‌توانید مصرف فعلی هر نود را مشاهید کنید:

نام نود: Server-1
مصرف: 750 GB / 1000 GB (75%)
وضعیت: Connected ✅

هنگامی که نود به 100% برسد، به‌طور خودکار محدود می‌شود.

لاگ‌های بازنشانی

تمامی بازنشانی‌های ترافیک نود در جدول node_usage_reset_logs ثبت می‌شوند:

SELECT * FROM node_usage_reset_logs ORDER BY created_at DESC;

اطلاعات ثبت شده شامل:

  • node_id: شناسه نود
  • uplink: حجم آپلود در زمان بازنشانی
  • downlink: حجم دانلود در زمان بازنشانی
  • created_at: تاریخ و زمان بازنشانی

API اطلاعات نود

برای دریافت اطلاعات کامل نود از طریق API:

curl -X GET "https://your-panel.com/api/node/{node_id}" \
  -H "Authorization: Bearer YOUR_TOKEN"

پاسخ شامل این فیلدها خواهد بود:

{
  "id": 1,
  "name": "Server-1",
  "status": "connected",
  "data_limit": 1073741824000,
  "uplink": 536870912000,
  "downlink": 268435456000,
  "lifetime_uplink": 2147483648000,
  "lifetime_downlink": 1073741824000,
  "data_limit_reset_strategy": "month",
  "reset_time": 0
}

نوتیفیکیشن‌ها

تلگرام

هنگام محدود شدن نود، پیام زیر ارسال می‌شود:

⚠️ #Limited_Node
➖➖➖➖➖➖➖➖➖
Name: Server-1
Data Limit: 1.00 TB
Used Traffic: 1.02 TB
➖➖➖➖➖➖➖➖➖
ID: 1

دیسکورد

همین پیام با فرمت Discord Embed ارسال می‌شود.

فعال‌سازی نوتیفیکیشن‌ها

در تنظیمات پنل (Settings > Notifications):

{
  "node": {
    "limited": true,
    "reset_usage": true
  }
}

عملیات مدیریتی

بازنشانی دستی مصرف نود

اگر نیاز دارید مصرف نود را به‌صورت دستی بازنشانی کنید:

رفتن به بخش Nodes

در پنل ادمین، به لیست نودها بروید.

انتخاب نود

روی نود مورد نظر کلیک کنید.

بازنشانی

دکمه Reset Usage را کلیک کنید.

بازنشانی دستی در جدول node_usage_reset_logs ثبت می‌شود و نوتیفیکیشن ارسال می‌گردد.

فعال‌سازی مجدد نود محدود شده

برای فعال‌سازی مجدد نود محدود شده، دو راه وجود دارد:

راه اول: بازنشانی مصرف

مصرف نود را بازنشانی کنید (توضیح داده شد در بالا).

راه دوم: افزایش محدودیت

  1. نود را ویرایش کنید
  2. محدودیت ترافیک را افزایش دهید
  3. ذخیره کنید

نود به‌طور خودکار به حالت عادی برمی‌گردد.

بهترین روش‌ها (Best Practices)

1. تنظیم محدودیت واقع‌بینانه

محدودیت را بر اساس پلن واقعی هاستینگ تنظیم کنید:

پلن سرور: 5 TB/ماه
محدودیت پیشنهادی: 4.5 TB
(10% حاشیه امن)

2. استفاده از استراتژی مناسب

  • کاربران تجاری: استراتژی ماهانه با زمان مشخص
  • تست و توسعه: استراتژی روزانه
  • پروژه‌های محدود: بدون بازنشانی (no_reset)

3. مانیتورینگ منظم

یک داشبورد مانیتورینگ برای بررسی روزانه:

# اسکریپت نمونه برای چک کردن نودهای نزدیک به محدودیت
curl -X GET "https://your-panel.com/api/nodes" | \
  jq '.nodes[] | select(.used_traffic / .data_limit > 0.8)'

4. آلارم پیشگیرانه

می‌توانید آلارم سفارشی برای 80% مصرف تنظیم کنید تا قبل از محدود شدن اقدام کنید.

Jobs و Schedulers

Job بررسی محدودیت نودها

سیستم به‌صورت دوره‌ای (پیش‌فرض هر 5 دقیقه) نودها را بررسی می‌کند:

# در config.py
JOB_CHECK_NODE_LIMITS_INTERVAL = 300  # به ثانیه (5 دقیقه)

نحوه عملکرد Job

  1. دریافت لیست نودهای is_limited = True
  2. بررسی وضعیت فعلی نود
  3. قطع اتصال نود
  4. تغییر وضعیت به limited
  5. ارسال نوتیفیکیشن

تنظیم فاصله زمانی

می‌توانید فاصله زمانی را در فایل تنظیمات تغییر دهید:

# برای بررسی سریع‌تر (هر 2 دقیقه)
JOB_CHECK_NODE_LIMITS_INTERVAL = 120

# برای بررسی کندتر (هر 10 دقیقه)
JOB_CHECK_NODE_LIMITS_INTERVAL = 600

استراتژی‌های بازنشانی

no_reset

محدودیت هرگز بازنشانی نمی‌شود:

  • کاربرد: نودهای با مصرف محدود
  • مدیریت: دستی توسط ادمین

day (روزانه)

محدودیت هر روز بازنشانی می‌شود:

# مثال: هر روز ساعت 3 صبح UTC
reset_time = 3 * 3600  # 10800 ثانیه

week (هفتگی)

محدودیت هر هفته بازنشانی می‌شود:

# مثال: هر دوشنبه ساعت 0:00 UTC
reset_time = 0  # ابتدای هفته

# مثال: هر جمعه ساعت 18:00 UTC
# جمعه = روز 5 هفته (0-6)
reset_time = (4 * 86400) + (18 * 3600)  # 410400 ثانیه

month (ماهانه)

محدودیت هر ماه بازنشانی می‌شود:

# مثال: اول هر ماه ساعت 0:00 UTC
reset_time = 0

# مثال: روز 15 هر ماه ساعت 12:00 UTC
reset_time = (14 * 86400) + (12 * 3600)  # 1252800 ثانیه

year (سالانه)

محدودیت هر سال بازنشانی می‌شود:

# مثال: اول ژانویه ساعت 0:00 UTC
reset_time = 0

استفاده از فاصله زمانی (Interval)

برای بازنشانی بر اساس فاصله زمانی از زمان اولین فعال‌سازی:

reset_time = -1

عیب‌یابی (Troubleshooting)

نود محدود نمی‌شود

علت‌های احتمالی:

  1. محدودیت به درستی تنظیم نشده است
  2. Job بررسی غیرفعال است
  3. مصرف نود هنوز به محدودیت نرسیده

راه حل:

# بررسی تنظیمات نود
curl -X GET "https://your-panel.com/api/node/{node_id}"

# بررسی لاگ‌های Job
tail -f /var/log/pasarguard/jobs.log | grep "node_checker"

نوتیفیکیشن ارسال نمی‌شود

بررسی تنظیمات:

  1. تنظیمات تلگرام/دیسکورد صحیح است؟
  2. نوتیفیکیشن limited فعال است؟
curl -X GET "https://your-panel.com/api/settings/notifications"

نود خودکار فعال نمی‌شود

پس از بازنشانی یا افزایش محدودیت، باید:

  1. وضعیت نود را به connecting تغییر دهید
  2. یا از طریق API نود را دوباره فعال کنید:
curl -X PUT "https://your-panel.com/api/node/{node_id}" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"status": "connecting"}'

Migration از نسخه قبلی

اگر از نسخه‌های قدیمی‌تر پاسارگارد استفاده می‌کنید:

1. آپدیت کردن دیتابیس

Migration به‌طور خودکار اجرا می‌شود، اما می‌توانید به‌صورت دستی نیز اجرا کنید:

cd /opt/pasarguard
alembic upgrade head

2. بررسی تغییرات

-- بررسی ستون‌های جدید
DESCRIBE nodes;

-- مشاهده جدول جدید
DESCRIBE node_usage_reset_logs;

3. تنظیم محدودیت برای نودهای موجود

تمام نودهای موجود به‌صورت پیش‌فرض بدون محدودیت خواهند بود (data_limit = 0). می‌توانید آن‌ها را ویرایش کنید.

سوالات متداول (FAQ)

آیا محدودیت نود روی محدودیت کاربران تأثیر دارد؟

خیر، این دو محدودیت مستقل از هم هستند. کاربران همچنان محدودیت ترافیک خود را دارند.

چه اتفاقی برای کاربران متصل به نود می‌افتد؟

وقتی نود محدود می‌شود، تمام کاربران متصل به آن قطع می‌شوند و باید از نودهای دیگر استفاده کنند.

آیا می‌توانم محدودیت متفاوت برای نودهای مختلف تنظیم کنم؟

بله، هر نود می‌تواند محدودیت و استراتژی بازنشانی خاص خود را داشته باشد.

lifetime traffic چیست؟

lifetime traffic کل مصرف تاریخی نود است که هرگز بازنشانی نمی‌شود، حتی با استراتژی‌های بازنشانی.

lifetime_used_traffic = lifetime_uplink + lifetime_downlink
  • Uplink: ترافیک ارسالی از سرور به کاربران
  • Downlink: ترافیک دریافتی از کاربران به سرور

معمولاً در سرویس‌های VPN، uplink بیشتر است.

منابع بیشتر

با استفاده از قابلیت محدودیت ترافیک نودها، می‌توانید سرورهای خود را بهتر مدیریت کنید و از هزینه‌های غیرمنتظره جلوگیری کنید.

On this page

معرفیچرا محدودیت ترافیک نود؟مزایای استفادهنحوه عملکردفرآیند کلیمعادلات محاسبهتنظیمات در پنلایجاد نود با محدودیت ترافیکباز کردن دیالوگ نودتنظیم محدودیت ترافیکانتخاب استراتژی بازنشانیتنظیم زمان بازنشانی (اختیاری)مثال‌های کاربردیمثال 1: محدودیت 1 ترابایت بدون بازنشانیمثال 2: محدودیت 500 گیگابایت با بازنشانی روزانهمثال 3: محدودیت ماهانه ۲ ترابایتوضعیت‌های نودمانیتورینگ و لاگ‌هابررسی مصرف نودلاگ‌های بازنشانیAPI اطلاعات نودنوتیفیکیشن‌هاتلگرامدیسکوردفعال‌سازی نوتیفیکیشن‌هاعملیات مدیریتیبازنشانی دستی مصرف نودرفتن به بخش Nodesانتخاب نودبازنشانیفعال‌سازی مجدد نود محدود شدهراه اول: بازنشانی مصرفراه دوم: افزایش محدودیتبهترین روش‌ها (Best Practices)1. تنظیم محدودیت واقع‌بینانه2. استفاده از استراتژی مناسب3. مانیتورینگ منظم4. آلارم پیشگیرانهJobs و SchedulersJob بررسی محدودیت نودهانحوه عملکرد Jobتنظیم فاصله زمانیاستراتژی‌های بازنشانیno\_resetday (روزانه)week (هفتگی)month (ماهانه)year (سالانه)استفاده از فاصله زمانی (Interval)عیب‌یابی (Troubleshooting)نود محدود نمی‌شودنوتیفیکیشن ارسال نمی‌شودنود خودکار فعال نمی‌شودMigration از نسخه قبلی1. آپدیت کردن دیتابیس2. بررسی تغییرات3. تنظیم محدودیت برای نودهای موجودسوالات متداول (FAQ)آیا محدودیت نود روی محدودیت کاربران تأثیر دارد؟چه اتفاقی برای کاربران متصل به نود می‌افتد؟آیا می‌توانم محدودیت متفاوت برای نودهای مختلف تنظیم کنم؟lifetime traffic چیست؟تفاوت uplink و downlink چیست؟منابع بیشتر