لود بالانسر (Load balancer) ترافیک اپلیکیشن یا ترافیک شبکه را در چندین سرور توزیع میکند و عملکرد آن مانند یک پروکسی معکوس است. لود بالانسرها میتوانند قابلیت اطمینان و ظرفیت اپلیکیشنها (یا تعداد احتمالی کاربران همزمان) را افزایش دهند. متعادلکنندههای بار وظایف خاص اپلیکیشن را انجام میدهند و بار روی سرورهای مرتبط با نگهداری و مدیریت Sessionهای اپلیکیشن و شبکه را کاهش میدهند. بهاینترتیب عملکرد کلی اپلیکیشن بهبود پیدا خواهد کرد.
بهطور کلی، 7 لایه شبکه وجود دارد که توسط مدل مرجع اتصال سیستمهای باز (OSI) تعریف شده است. لود بالانسرها به دو دسته کلی لایه 4 و لایه 7 تقسیم میشوند که هرکدام بر اساس عوامل مختلفی تصمیمگیری و عمل میکنند. حتما برایتان سوال است که لود بالانسینگ لایه 4 چیست و چه تفاوتی با لایه 7 دارد؟ در این مقاله قصد داریم شما را با لود بالانسینگ لایه 4 آشنا کنیم و از تفاوت لود بالانسینگ لایه 4 و لود بالانسینگ لایه 7 سخن بگوییم.
لود بالانسینگ لایه 4 چیست؟
لود بالانسینگ لایه 4 از اطلاعات تعریفشده در لایه انتقال شبکه (لایه 4) بهعنوان مبنایی برای تصمیمگیری درباره نحوه توزیع درخواستهای کلاینت در میان گروهی از سرورها استفاده میکند. به عبارت دیگر، لود بالانسینگ لایه 4 تصمیمهای مسیریابی خود را بر اساس اطلاعات تعریفشده در لایه 4 (لایه انتقال شبکه) میگیرد.
لایه 4 سطح انتقال است که شامل پروتکل دیتاگرام کاربر (UDP) و پروتکل کنترل انتقال (TCP) میشود. برای ترافیک اینترنت، یک لود بالانسر لایه 4 تصمیمهای مرتبط با لود بالانسینگ را بر اساس مبدا و مقصد آدرسهای IP و پورتهای ثبتشده در Packet header میگیرد، بدون آنکه به محتویات Packet توجهی داشته باشد.
توصیه میکنیم برای درک بهتر لود بالانسینگ لایه 4 درباره لود بالانسینگ بیشتر بدانید و مقاله جامع ابر دراک درباره این روش توزیع مساوی ترافیک شبکه را مطالعه کنید.
لود بالانسینگ لایه چهارم چگونه کار میکند؟
امروزه اصطلاح «لود بالانسینگ لایه 4» معمولا به استقراری (Deployment) اشاره دارد که آدرس IP لود بالانسر همان آدرسی است که برای یک وبسایت یا سرویس (مثلا از طریق DNS) به کلاینتها Advertised میشود. در نتیجه، کلاینتها آدرس لود بالانسر را بهعنوان مقصد آدرس IP در درخواستهای خود ثبت میکنند. اگر میخواهید درباره توزیع بار در DNS بیشتر بدانید، مقاله مرتبط با این موضوع را بخوانید.
هنگامی که لود بالانسر لایه 4 درخواستی دریافت میکند و تصمیم لود بالانسینگ میگیرد، ترجمه آدرس شبکه (NAT) را روی Packet درخواست انجام میدهد و آدرس IP مقصد ثبتشده را از خود به آدرس IP سرور محتوایی که در شبکه داخلی انتخاب کرده است، تغییر میدهد.
بهطور مشابه، قبل از ارسال پاسخهای سرور به مشتریان، لود بالانسر آدرس مبدا ثبتشده را در Packet header از آدرس IP سرور به آدرس خود تغییر میدهد. (شمارههای پورت TCP مبدا و مقصد ثبتشده در Packetها نیز گاهی به همین روش تغییر میکنند.)
لود بالانسرهای لایه 4 بر اساس اطلاعات آدرس استخراجشده از چند Packet اول در جریان (Stream) TCP و بدون بازرسی محتوای Packet برای مسیریابی تصمیمگیری میکنند. لود بالانسر لایه چهارم اغلب یک دستگاه سختافزاری اختصاصی است که توسط فروشنده عرضه میشود که نرمافزار لود بالانسینگ اختصاصی را اجرا میکند و عملیاتهای NAT ممکن است توسط تراشههای (Chips) تخصصی بهجای نرمافزار انجام شوند.
در گذشته که نرمافزار لود بالانسینگ بهاندازه نرمافزارهای امروزی قدرتمند نبود و تعامل بین کلاینتها و سرورهای اپلیکیشن پیچیدگی کمتری داشت، لود بالانسینگ لایه 4 یک رویکرد معماری محبوب برای مدیریت ترافیک محسوب میشد. این رویکرد معماری به محاسبات کمتری نسبت به روشهای پیچیدهتر لود بالانسینگ (مانند لایه 7) نیاز دارد، اما در حال حاضر CPU و حافظه بهقدر کافی سریع و ارزان است که مزیت عملکرد برای لود بالانسینگ لایه 4 در بیشتر مواقع را میتوان ناچیز و نامرتبط دانست.
بررسی تفاوت لود بالانسر لایه 4 و لود بالانسر لایه 7
لود بالانسر لایه 7 در بالاترین سطح در مدل OSI یعنی لایه اپلیکیشن عمل میکند (در اینترنت، HTTP پروتکل غالب در این لایه است). لود بالانسر لایه 7 بر مبنای ویژگیهای مختلف هدر HTTP و محتواهای واقعی پیام، مانند URL، نوع داده (متن، ویدئو و گرافیک) یا اطلاعات در کوکی، تصمیمهای مسیریابی را میگیرد.
در نظر گرفتن بسیاری از جنبههای اطلاعاتی که منتقل میشوند، میتواند باعث گرانتر شدن لود بالانسینگ لایه 7 نسبت به لایه 4 از نظر زمان و قدرت محاسباتی مورد نیاز شود؛ بااینوجود، لود بالانسر لایه 7 در حالت کلی میتواند کارایی بیشتری به همراه داشته باشد. بهعنوان مثال، ازآنجاییکه یک لود بالانسر لایه 7 میتواند نوع داده مورد درخواست کلاینت (از جمله ویدئو، متن و…) را تعیین کند، مجبور به کپی کردن همان دادهها روی همه سرورهایی با بار متعادلشده نخواهید بود.
پروکسیهای لود بالانسینگ لایه 7 بهجای مدیریت ترافیک بهصورت Packet-by-packet مانند لود بالانسرهای لایه 4 که از NAT استفاده میکنند، قادر به خواندن درخواستها و پاسخها بهصورت کامل هستند. آنها ترافیک را بر اساس درک کامل تراکنش بین کلاینت و سرور اپلیکیشن مدیریت و دستکاری (Manipulate) میکنند.
بعضی از لود بالانسرها را میتوان بهگونه پیکربندی کرد که بسته به ماهیت سرویس، تعادل بار لایه 4 یا 7 ارائه دهند. اگر میخواهید با توزیع بار در سی دی ان آشنا شوید، مقاله ابر دراک با موضوع توزیع بار CDN و مزایای آن را مطالعه کنید.
بررسی لایهها در مدلهای اینترنت و OSI برای درک بهتر
مفهوم 7 لایه شبکه از مدل مرجع اتصال سیستمهای باز (OSI) گرفته شده است. این مدل توابع (Functions) شبکه را به هفت لایه انتزاعی تقسیم میکند که از لایه 1 تا 7 هر لایه با عدد نامگذاری میشود. در هر لایه استانداردهایی وجود دارد که موارد زیر را مشخص یا تعریف میکنند:
- نحوه بستهبندی و انتقال دادهها
- نحوه تقسیمبندی جریان (Stream) بیتهای تشکیلدهنده یک درخواست یا پاسخ به پکیجهای مجزا با نام «واحد داده پروتکل» (PDU)
- متادیتای (Metadata) اضافهشده به هر PDU در قالب هدر؛ بهعنوان مثال، متادیتا ممکن است آدرسهای هاست مبدا و مقصد را مشخص کند.
اختصاص دادن جنبههای مختلف عملکرد شبکه به لایههای مختلف، پردازش در هر لایه را ساده میکند؛ زیرا هر پروتکل فقط باید نحوه ارتباط با PDUهای لایه خود را بداند و از این که چه متادیتایی را در هدر قرار دهد، اطلاع داشته باشد. بهاینترتیب پروتکلها در لایههای مجاور میتوانند PDUها را در تقسیمبندی دادههای سطح خود Repackage کنند.
توزیع توابع (Function) شبکه در میان پروتکلهای اساسی برای ترافیک روی شبکه جهانی وب – که در کل بهعنوان مجموعه پروتکل اینترنت (IP suite) شناخته میشود – دقیقا با مدل OSI مطابقت ندارد؛ به این خاطر که مجموعه IP قبل از انتشار مدل نهایی OSI تعریف و پیادهسازی شده است. بااینوجود، پروتکلهای مختلف در مجموعه IP توابع مجزایی دارند که تقریبا مطابق با لایههای OSI هستند.
انواع پروتکلهای تعریفشده در هر سطح شبکه
در هر سطح شبکه چندین پروتکل تعریفشده وجود دارد که در ادامه به بررسی پروتکلها و سطحهای مرتبط با لود بالانسینگ ترافیک وبسایت میپردازیم:
- پروتکل اینترنت (IP) در لایه Internetwork (لایه 3) عمل میکند. PDUهای این پروتکل «Packet» نامیده میشود و IP مسئول تحویل آنها از یک هاست مبدا به هاست مقصد از میان مرزهای بین چندین شبکه کوچکتر است که اینترنت را تشکیل میدهند. هر دستگاهی که بهطور مستقیم به اینترنت متصل است، یک آدرس IP منحصربهفرد دارد. از این IP برای مکانیابی دستگاه بهعنوان گیرنده Packetها استفاده میشود.
- پروتکل کنترل انتقال (TCP) در لایه انتقال (Transport) یا همان لایه چهارم عمل میکند. TCP بین هاستی که مرورگر روی آن در حال اجرا است و هاستی که اپلیکیشن سرور در آن اجرا میشود، یک اتصال مجازی ایجاد میکند. بهدلیل ماهیت غیرقابل اعتماد شبکهها، Packetهای IP ممکن است گم شوند، خراب شوند یا از مسیر خارج شوند. TCP برای اصلاح این خطاها و تبدیل جریان Packetهای IP به یک کانال ارتباطی قابل اعتماد از مکانیزمهایی برخوردار است. هر اپلیکیشن به یک شماره پورت TCP منحصربهفرد اختصاص مییابد تا امکان تحویل به اپلیکیشن صحیح روی هاستهایی که اپلیکیشنهای زیادی روی آنها در حال اجرا است، فراهم شود.
- پروتکل انتقال ابرمتن (HTTP) در لایه اپلیکیشن (لایه 7) عمل میکند. HTTP نحوه کدگذاری برای ارتباط بین مرورگرهای وب و وب سرورها (یا هر اپلیکیشنی که قادر به درک کدگذاری HTTP است) تعریف میکند.
با توجه به انواع پروتکل، میتوانیم بگوییم که اصطلاح دقیقتر لود بالانسینگ لایه 4 در واقع «لود بالانسینگ لایه 3/4» است؛ زیرا لود بالانسر بر اساس هر دو آدرس IP سرورهای مبدا و مقصد (لایه 3) و شماره پورت TCP اپلیکیشن (لایه 4) تصمیمگیری میکند. اصطلاح دقیقتر لود بالانسینگ لایه 7 نیز میتواند «لود بالانسینگ لایه 5 تا 7» باشد؛ زیرا HTTP توابع لایههای 5، 6 و 7 مدل OSI را با هم ترکیب میکند.
منابع: Nginx | Avinetworks