محدودیت ترافیک نودها
راهنمای جامع تنظیم و مدیریت محدودیت ترافیک برای نودهای پاسارگارد
معرفی
قابلیت محدودیت ترافیک نودها (Per-Node Data Limits) یکی از ویژگیهای پیشرفته پاسارگارد است که در PR #215 معرفی شد. این قابلیت به شما امکان میدهد برای هر نود بهصورت جداگانه محدودیت ترافیک تعریف کنید و بهطور خودکار نودهایی که به محدودیت رسیدهاند را مدیریت کنید.
این قابلیت برای مدیریت هزینههای سرور و کنترل مصرف ترافیک نودها بسیار مفید است.
چرا محدودیت ترافیک نود؟
مزایای استفاده
- کنترل هزینه: جلوگیری از مصرف بیش از حد ترافیک در سرورها
- مدیریت خودکار: غیرفعالسازی خودکار نودهای پرمصرف
- شفافیت: مانیتورینگ دقیق مصرف هر نود
- انعطافپذیری: استراتژیهای مختلف بازنشانی محدودیت
- هشدارهای هوشمند: اطلاعرسانی خودکار هنگام رسیدن به محدودیت
نحوه عملکرد
فرآیند کلی
- تنظیم محدودیت: تعیین حجم مجاز ترافیک برای نود (مثلاً 1000 گیگابایت)
- مانیتورینگ مداوم: سیستم بهصورت خودکار مصرف نود را بررسی میکند
- شناسایی نود محدود: وقتی مصرف نود به محدودیت برسد، شناسایی میشود
- تغییر وضعیت: وضعیت نود به
limitedتغییر میکند - قطع اتصال: نود بهطور خودکار disconnect میشود
- اطلاعرسانی: نوتیفیکیشن به تلگرام/دیسکورد ارسال میشود
معادلات محاسبه
محاسبه مصرف کل نود:
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 ثبت میشود و نوتیفیکیشن ارسال میگردد.
فعالسازی مجدد نود محدود شده
برای فعالسازی مجدد نود محدود شده، دو راه وجود دارد:
راه اول: بازنشانی مصرف
مصرف نود را بازنشانی کنید (توضیح داده شد در بالا).
راه دوم: افزایش محدودیت
- نود را ویرایش کنید
- محدودیت ترافیک را افزایش دهید
- ذخیره کنید
نود بهطور خودکار به حالت عادی برمیگردد.
بهترین روشها (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
- دریافت لیست نودهای
is_limited = True - بررسی وضعیت فعلی نود
- قطع اتصال نود
- تغییر وضعیت به
limited - ارسال نوتیفیکیشن
تنظیم فاصله زمانی
میتوانید فاصله زمانی را در فایل تنظیمات تغییر دهید:
# برای بررسی سریعتر (هر 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)
نود محدود نمیشود
علتهای احتمالی:
- محدودیت به درستی تنظیم نشده است
- Job بررسی غیرفعال است
- مصرف نود هنوز به محدودیت نرسیده
راه حل:
# بررسی تنظیمات نود
curl -X GET "https://your-panel.com/api/node/{node_id}"
# بررسی لاگهای Job
tail -f /var/log/pasarguard/jobs.log | grep "node_checker"نوتیفیکیشن ارسال نمیشود
بررسی تنظیمات:
- تنظیمات تلگرام/دیسکورد صحیح است؟
- نوتیفیکیشن
limitedفعال است؟
curl -X GET "https://your-panel.com/api/settings/notifications"نود خودکار فعال نمیشود
پس از بازنشانی یا افزایش محدودیت، باید:
- وضعیت نود را به
connectingتغییر دهید - یا از طریق 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 head2. بررسی تغییرات
-- بررسی ستونهای جدید
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 چیست؟
- Uplink: ترافیک ارسالی از سرور به کاربران
- Downlink: ترافیک دریافتی از کاربران به سرور
معمولاً در سرویسهای VPN، uplink بیشتر است.
منابع بیشتر
با استفاده از قابلیت محدودیت ترافیک نودها، میتوانید سرورهای خود را بهتر مدیریت کنید و از هزینههای غیرمنتظره جلوگیری کنید.