Load Balancing در میکروتیک

مقدمه

روش متعادل کردن بار (تقسیم بار) با هدف گسترش ترافیک در لینک های متعدد (برای مثال : چند خط اینترنت) برای بالا بردن کارایی شبکه را Load Balancing می گویند . متعادل سازی را می تواند براساس Packet یا Connection انجام داد. 

در صورتی که ما میکروتیک خود را درست و منطقی پیکربندی کنیم می توانیم از چندین مزیت که در این روش می باشد استفاده کنیم:

  • افزایش پهنای باند در دسترس برای کاربران
  • توزیع بار و بالا بردن کارایی در شبکه
  • امکان Fail Over در صورت قطع شدن یک ISP

مراحل پیکربندی

  • کانفیگ اولیه Router
  • Input Output Marking
  • Route Marking
  • نوشتن Default Routes اختصاصی
  • نتیجه گیری

کانفیگ اولیه Router

سناریوی ما به این صورت است که ما یک Mikrotik داریم که به دو ISP مجزا و به ترتیب از طریق ether1 و ether2 به آن متصل می باشیم و قراره که این دو لینک اینترنت را از طریق ether3 بین کاربران در شبکه LAN توزیع کنیم. توپولوژی مورد نظر را می توانید در عکس زیر مشاهده کنید:

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

ابتدا برای هر کدام از ether ها مانند توپولوژی IP ست می کنیم:

/ip address
add address=192.168.34.134/24 interface=ether1 comment="ISP1"
add address=192.168.150.244/24 interface=ether2 comment="ISP2"
add address=192.168.24.254/24 interface=ether3 comment="LAN Gateway"

ست کردن default gateways:

/ip route
add dst-address=0.0.0.0/0 check-gateway=ping gateway=192.168.34.1,192.168.150.4

نوشتن (NAT (masquerade برای پورتهای WAN:

/ip firewall nat
add action=masquerade chain=srcnat comment="ISP1" out-interface=ether1
add action=masquerade chain=srcnat comment="ISP2" out-interface=ether2

Input Output Marking

یک مشکلاتی که با داشتن بیش از یک WAN داریم این است که بسته های موجود در یک ارتباط WAN ممکن است از طرف دیگر خارج شوند. این مسئله میتواند مشکلاتی را ایجاد کند و شبکه های مبتنی بر VPN را از بین ببرد و حتی در سایتهایی که IP ما چک میشود به مشکل برمی خوریم. ما می خواهیم بسته هایی که متعلق به یک اتصال WAN هستند به داخل و خارج همان پورت WAN بروند. در صورتی که یکی از ISP ها روی یک پورت down شود، می تواند آن را از بین ببرد و سپس دوباره در WAN دیگر برقرار شود.

/ip firewall mangle
add action=mark-connection chain=input comment="ISP1" in-interface=ether1 new-connection-mark="ISP1"
add action=mark-connection chain=input comment="ISP2" in-interface=ether2 new-connection-mark="ISP2"

این به روتر کمک می کند تا با مارک کردن Connection ها بتواند بفهمد که هر Connection مربوط به کدام اتصال می باشد.

اکنون ما از routing mark استفاده می کنیم فقط برای connection mark بسته هایی که از داخل می رسند. این routing mark می خواهند استفاده شوند بعدا برای مسیریابی ارتباطی که پورت ISP به بیرون دارد.

/ip firewall mangle
add action=mark-routing chain=output comment="ISP1" connection-mark="ISP1 Input" new-routing-mark="ISP1"
add action=mark-routing chain=output comment="ISP2" connection-mark="ISP2 Input" new-routing-mark="ISP2"

connection mark ها که مشخص شدند، routing mark را دریافت می کنند تا روتر بتواند مسیری را که می خواهد آماده کند. در مرحله بعد، ما از روتر می خواهیم بسته ها را از طریق connection هایی که از طریق اینترفیس WAN خارج می شود بفرستد.

نکته:

  • chain input : برای پردازش بسته هایی که از طریق یکی از اینترفیس ها به روتر وارد می شود، مورد استفاده قرار می گیرد.
  • mark connection : برای قرار دادن علامت مشخص در کل ارتباطات موجود در یک رول مورد استفاده قرار می گیرد.
  • chain output : برای پردازش بسته هایی که توسط روتر ایجاد شده است، مورد استفاده قرار می گیرد.
  • mark routing : برای قرار دادن یک علامت مشخص بر روی یک بسته فقط برای اهداف مسیریابی، مورد استفاده قرار می گیرد.

LAN Route Marking

این rules به روتر می گوید، برای تعادل ترافیک در (ether3 (LAN، به آدرسی غیر محلی (! local) از طریق اینترنت برود. در این قسمت ترافیک هایی که از سمت شبکه ارسال می شوند را به جریان های برابر تقسیم کرده و با استفاده از mark connection به آدرس مقصد یعنی Wan مورد نظر در مرحله routing می فرستیم.

دستورات زیر، ترافیک ether3 را در دو گروه بالانس می کند:

add action=mark-routing chain=prerouting comment="LAN load balancing 2-0" \
    dst-address-type=!local in-interface=ether3 new-routing-mark=\
    "Out ISP1" passthrough=yes per-connection-classifier=\
    both-addresses-and-ports:2/0
add action=mark-routing chain=prerouting comment="LAN load balancing 2-1" \
    dst-address-type=!local in-interface=ether3 new-routing-mark=\
    "Out ISP2" passthrough=yes per-connection-classifier=\
    both-addresses-and-ports:2/1

نوشتن Default Routes اختصاصی

در این مرحله Default Route های خود را اضافه می کنیم ، و از routing mark هایی که در مرحله قبل ایجاد کردیم استفاده می کنیم.

/ip route
add distance=1 gateway=192.168.34.1 routing-mark="Out ISP1"
add distance=1 gateway=192.168.150.4 routing-mark="Out ISP2"

توجه: این route های که در این مرحله نوشتیم فقط در صورتی که با یک routing mark تطبیق داده شد، اعمال می شود. بسته های نامعلوم از Default Routeی که در مرحله “کانفیگ اولیه Router” نوشتیم استفاده می کنند.

نتیجه گیری

در اینجا نتیجه پیکربندی که انجام دادیم می توانید ببینید:

  • ما دو ارتباط را با هم تجمیع کردیم و پهنای باند بیشتری در اختیار داریم و همچنین همان طور که در عکس زیر مشاهده می کنید سرعت دانلود بالاتری را خواهیم داشت.
  • امکان Fail Over را در شبکه خود داریم یعنی در صورتی که یکی از ارتباطات ما دچار مشکل شود، کل ترافیک به خط دیگر منتقل می شود.
  • در ارتباطاتی که با شبکه WAN خواهیم داشت دچار مشکل نمی شویم.

امیدوارم از این آموزش لذت برده باشید.

در صورت هر گونه مشکل می توانید از طریق راه های ارتباطی که در سایت می باشد با من در تماس باشید

شاد باشید.

یا حق.

۵ ۳ votes
Article Rating
اشتراک گذاری:
مسولیت زندگیتان را به عهده بگیرید. این را بدانید … فقط شما هستید که میتوانید خودتان را به جایی که میخواهید برسانید، نه هیچکس دیگری.
پست ایجاد شده 14
اشتراک در
اطلاع از
guest

9 نظرات
قدیمی ترین
جدیدترین بیشترین رای
Inline Feedbacks
View all comments
مرتضی
مرتضی
۲۱ اردیبهشت ۱۳۹۸ ۱۲:۵۶ ب٫ظ

سلام. ممنون از توضیحات کامل و مفید

مدیریت
مدیریت
Admin
Reply to  مرتضی
۲۳ اردیبهشت ۱۳۹۸ ۹:۵۲ ق٫ظ

خواهش میکنم
امیدوارم کاربرد داشته باشه براتون

|mohamad
۱۰ خرداد ۱۳۹۸ ۹:۱۰ ق٫ظ

با سلام
ممنون از توضیحات بسار خوبیتون فقط من این قسمت رو نفهمیدم این new rou ting mark خط پایین برای کجا استفاده داره آخه در هیچ روتی شما استفاده اش نکردید حتی من این دو خط رو غیر فعال کردم مشکلی پیش نیومد و کار میکرد . میشه بفرمایید به چه صورته ؟؟
add action=mark-routing chain=output comment=”ISP1″ connection-mark=”ISP1 Input” new-routing-mark=”ISP1″
add action=mark-routing chain=output comment=”ISP2″ connection-mark=”ISP2 Input” new-routing-mark=”ISP2″

مدیریت
مدیریت
Admin
Reply to  |mohamad
۱۹ خرداد ۱۳۹۸ ۱۲:۰۵ ب٫ظ

سلام در خط اول این بخش توضیح دادم که اگه این کانکشنها رو مارک نکنیم نمی تونه بفهمه هر کانکشن مربوط به کدوم اتصال بوده مثلن وقتی شما داخل یه سایتی مثل سایتای بانکها یا دانشگاهها میرید مشکل ایجاد میشه چون نمی دونه این اتصال مربوط به کدوم کانکشن هستش و امکان داره با اتصال بعدی ادامه کار رو توی اون سایتها انجام بده که این مشکل سازه و در اون سایتها به خاطر چک کردن ای پی و اتصالات امنیتی شما رو از اون سایت بیرون میندازن ولی این قضیه برای دانلود مشکلی ایجاد نمیکنه. امیدوارم توضیحم کامل باشه… ادامه مطلب »

محسن
محسن
۶ مرداد ۱۳۹۹ ۳:۳۰ ب٫ظ

add distance=1 gateway=192.168.150.244 routing-mark=”Out ISP2″

فکر میکنم ای پی باید ۱۹۲.۱۶۸.۱۵۰.۴ می بود. درسته؟

مدیریت
مدیریت
Admin
Reply to  محسن
۶ مرداد ۱۳۹۹ ۳:۴۴ ب٫ظ

سلام
بله حق با شماست
تصحیح شد
ممنونم

Last edited 3 سالها قبلا by مدیریت
محسن
محسن
۲۰ مرداد ۱۳۹۹ ۸:۰۷ ق٫ظ

سلام من با همین روش کانفیگ کردم اما در وب سایت های بانک‌ها و همچنین سی پنل مشکل دارم و مدام از سیستم خارج میشم. مشکل رو چطور حل کنم؟
با توجه به این که شبکه ما بزرگ هست و تعداد یوزرها زیاد. میشه هر ای پی داخلی رو به یک اینترنت متصل کرد و تا وقتی اون کانکشن قطع نشده به همون متصل بمونه؟ این روش چطور پیاده سازی میشه؟
راه حل بهتری برای رفع این مشکل هست؟

مدیریت
مدیریت
Admin
Reply to  محسن
۲۰ مرداد ۱۳۹۹ ۱۰:۰۴ ق٫ظ

سلام من تست کردم همچین مشکلی نباشه این قسمت مربوط به همین مییشه “یک مشکلاتی که با داشتن بیش از یک WAN داریم این است که بسته های موجود در یک ارتباط WAN ممکن است از طرف دیگر خارج شوند. این مسئله میتواند مشکلاتی را ایجاد کند و شبکه های مبتنی بر VPN را از بین ببرد و حتی در سایتهایی که IP ما چک میشود به مشکل برمی خوریم. ما می خواهیم بسته هایی که متعلق به یک اتصال WAN هستند به داخل و خارج همان پورت WAN بروند. در صورتی که یکی از ISP ها روی یک پورت… ادامه مطلب »

مجید
مجید
۲۳ بهمن ۱۳۹۹ ۰:۳۴ ق٫ظ

سلام
این تیکه از تنظیمات رو متوجه نشدم
ممنون میشم توضیح بدید
dst-address-type=!loca

ممنون اوکی شد

Last edited 2 سالها قبلا by مجید

پست های مرتبط

متنی که میخواهید برای جستجو وارد کرده و دکمه جستجو را فشار دهید. برای لغو دکمه ESC را فشار دهید.

بازگشت به بالا
2
0
Would love your thoughts, please comment.x