CreateYourVPN Academy
دوره: همه‌چیز چگونه کار می‌کند

مسیرها و توازن بار

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

مسیر پلی است میان زیرساخت شما و آنچه کاربر می‌بیند. شما سرورها و inboundها را مدیریت می‌کنید، درحالی‌که کاربر فهرست کوتاهی از «سرورها» در برنامه‌اش می‌بیند — و هر آیتم آن فهرست در واقع یک مسیر است.

یک مسیر = یک خط در برنامه کاربر

مسیر گروهی از inboundها زیر یک نام واحد در اشتراک کلاینت است. قانون ساده است:

یک مسیر غیرخالی = یک آیتم در فهرست سرورهای کاربر.

یک مسیر می‌تواند تنها یک inbound داشته باشد — یا ده‌تا از آن‌ها روی سرورهای مختلف. کاربر هرگز این را نمی‌بیند: او «🇺🇸 آمریکا» را انتخاب می‌کند، و اینکه دقیقاً روی کدام سرور فرود بیاید را توازن‌کننده بار تصمیم می‌گیرد — بیشتر درباره آن در ادامه.

در همین حال، نامی که کاربر می‌بیند نامِ inbound انتخاب‌شده است: inboundهایتان را واضح نام‌گذاری کنید («🇺🇸 نیویورک»، «🇺🇸 دالاس») و دقیقاً همان چیزی است که کاربر می‌بیند.

وقتی اولین سرور خود را متصل می‌کنید، سیستم خودش یک مسیر پیش‌فرض می‌سازد و اولین inbound را در آن قرار می‌دهد — به همین دلیل همه‌چیز بدون هیچ تنظیمی از همان ابتدا کار می‌کند. مسیرها زمانی وارد بازی می‌شوند که چیز بیشتری بخواهید: چند کشور، یک مسیر اختصاصی «استریمینگ»، و غیره.

ساخت یک مسیر

در صفحه کلاستر، در بخش «مسیرها»، روی «مسیر جدید» کلیک کنید. ویزارد سه بخش دارد:

  1. نحوه دیدن این مسیر توسط کلاینت‌ها — نام (مثلاً 🇺🇸 آمریکا) و یک پرچم. این «تابلوی» مسیر است.
  2. الگوریتم توازن بار — «کم‌بارترین بر اساس ترافیک» (پیش‌فرض) یا «نوبتی (Round-robin)». تفاوت در ادامه توضیح داده می‌شود.
  3. inboundهای استخر — کدام inboundها به این مسیر تعلق دارند. این بخش اختیاری است: می‌توانید یک مسیر خالی بسازید و بعداً با کشیدن آن را پر کنید.

یک inbound فقط می‌تواند به یک مسیر تعلق داشته باشد. اگر inboundی را انتخاب کنید که از قبل توسط مسیر دیگری گرفته شده، به مسیر جدید منتقل می‌شود. این‌طور سیستم تضمین می‌کند که ترافیک هر نقطه ورود دقیقاً توسط یک مجموعه قانون اداره می‌شود.

نمودار توپولوژی: مسیرها در یک نگاه

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

خود جعبه‌های مسیر هم قابل جابه‌جایی هستند (با دستگیره کشیدن یا فلش‌ها) — این فقط یک ترتیب بصری برای راحتی شماست.

مسیرهای خالی

مسیری بدون حتی یک inbound با حاشیه خط‌چین کشیده می‌شود و هیچ «لوله‌ای» به گره توزیع ندارد — نشانه‌ای از اینکه کاربران نمی‌توانند آن را ببینند. مسیرهای خالی جای‌نگه‌دارنده‌های راحتی هستند: از قبل «🇯🇵 ژاپن» بسازید، و وقتی سروری در ژاپن پیدا شد، یک inbound داخل آن بکشید — مسیر زنده می‌شود.

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

توازن بار: چه کسی روی کدام سرور فرود می‌آید

وقتی کاربری درخواست اتصال می‌دهد، برای هر مسیر سیستم یک inbound از استخر انتخاب می‌کند — به‌صورت زنده، بر اساس متریک‌های تازه سرور (همان‌هایی که در درس ۳ دیدیم). دو الگوریتم وجود دارد:

«کم‌بارترین بر اساس ترافیک» (پیش‌فرض)

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

سیستم خودش ظرفیت کانال را تخمین می‌زند — از اوج‌های مشاهده‌شده ترافیک واقعی (یک اوج به‌تدریج «سرد» می‌شود اگر سرور مدتی بار نداشته باشد).

«نوبتی (Round-robin)»

یک قانون ساده: کاربر جدید به سروری می‌رود که در حال حاضر کمترین افراد را دارد — با تعدیل بر اساس ضریب سرور. ضریب یک وزن است: سروری با ضریب 2.0 به‌عنوان «دو برابر جادارتر» در نظر گرفته می‌شود و تقریباً دو برابر همسایه‌اش با 1.0 کاربر می‌گیرد. این به شما امکان می‌دهد ماشین‌های با اندازه‌های مختلف را منصفانه بار دهید.

اگر سروری در استخر هنوز تخمین ظرفیتی نداشته باشد (مثلاً سرور کاملاً جدید است و هیچ اوج ترافیکی ندیده)، مسیر به‌آرامی به نوبتی برمی‌گردد — این‌طور تصمیم‌گیری‌ها همیشه بر اساس داده‌ای است که واقعاً وجود دارد.

توازن مجدد چه زمانی اتفاق می‌افتد

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

و یک شبکه ایمنی دیگر: سرورهایی که مانیتورینگ آن‌ها را غیرقابل‌دسترس تشخیص می‌دهد از انتخاب کنار گذاشته می‌شوند — بیشتر درباره آن در درس ۷.

نکات کلیدی

  • مسیر «تابلوی» یک گروه از inboundهاست؛ یک مسیر غیرخالی = یک خط در برنامه کاربر.
  • یک inbound فقط به یک مسیر تعلق دارد. inboundی خارج از هر مسیری برای کلاینت‌ها نامرئی است.
  • مسیرهای خالی کاملاً عادی‌اند: یک جعبه خط‌چین، پنهان از کاربران.
  • دو الگوریتم: بر اساس پهنای باند آزاد (هوشمند، پیش‌فرض) و نوبتی با وزن.
  • توازن زنده است: در هر اتصال با متریک‌های فعلی دوباره محاسبه می‌شود.

بعدی

On this page