Load Balancers vs Reverse Proxy vs Proxy

Load Balancers vs Reverse Proxy vs Proxy

 
یک Reverse Proxy یک درخواست از یک کلاینت را می پذیرد، آن را به سروری که می تواند آن را انجام دهد، ارسال می کند و پاسخ سرور را به مشتری برمی گرداند.

یک Load Balancers درخواست های مشتری دریافتی را بین گروهی از سرورها توزیع می کند و در هر مورد پاسخ را از سرور انتخاب شده به مشتری مناسب برمی گرداند.
 

Proxy

در شکل یک برنامه کاربردی سرویس گیرنده-سرور ساده را نشان می دهد. تمامی کلاینت ها درخواست های خود را به پروکسی ارسال می کنند و سپس پروکسی درخواست های کلاینت را به سرور ارسال می کند. بنابراین، کاری که این سرور پروکسی اساسا انجام می دهد این است که به عنوان یک فایروال یا یک سپر در سمت کلاینت عمل می کند و تمام درخواست های مشتری را مدیریت می کند و بر اساس آن به سرور ارسال می کند. هدف اصلی این نوع پروکسی ایمن سازی برنامه های مشتری از سرورهای خارجی و سایر آسیب پذیری های امنیتی است. چرا؟ زیرا می‌توانید ببینید که این کلاینت‌ها و آدرس‌های IP آنها در معرض دنیای خارج نیست، اما سرور پروکسی خود را از طرف برنامه‌های کلاینت نشان می‌دهد. 
 

 
 
 
Load Balancers
Load Balancers معمولاً زمانی به کار می‌روند که یک سایت به چندین سرور نیاز داشته باشد، زیرا حجم درخواست‌ها برای یک سرور بسیار زیاد است که نمی‌تواند به طور کارآمد رسیدگی کند. استقرار چندین سرور همچنین یک نقطه از شکست را حذف می کند و وب سایت را قابل اعتمادتر می کند. معمولاً همه سرورها محتوای یکسانی را میزبانی می کنند و وظیفه متعادل کننده بار این است که بار کاری را به گونه ای توزیع کند که از ظرفیت هر سرور به بهترین شکل استفاده کند، از اضافه بار روی هر سروری جلوگیری کند و منجر به سریع ترین پاسخ ممکن به مشتری شود .
Load Balancers همچنین می تواند تجربه کاربر را با کاهش تعداد پاسخ های خطا که مشتری می بیند بهبود بخشد. این کار را با تشخیص زمان از کار افتادن سرورها و هدایت درخواست ها از آنها به سرورهای دیگر در گروه انجام می دهد. در ساده‌ترین پیاده‌سازی، Load Balancer  سلامت سرور را با رهگیری پاسخ‌های خطا به درخواست‌های معمولی تشخیص می‌دهد. بررسی سلامت برنامه یک روش انعطاف‌پذیرتر و پیچیده‌تر است که در آن Load Balancer درخواست‌های بررسی سلامت جداگانه را ارسال می‌کند و به نوع مشخصی از پاسخ نیاز دارد تا سرور را سالم در نظر بگیرد.
یکی دیگر از عملکردهای مفید ارائه شده توسط برخی از Load Balancer ها ، پایداری  session است، که به معنای ارسال تمام درخواست ها از یک مشتری خاص به همان سرور است. اگرچه HTTP در تئوری بدون حالت است، بسیاری از برنامه‌ها باید اطلاعات وضعیت را فقط برای ارائه عملکرد اصلی خود ذخیره کنند - به سبد خرید در یک سایت تجارت الکترونیک فکر کنید. اگر Load Balancer درخواست ها را به جای هدایت همه آنها به سروری که به درخواست اولیه پاسخ داده است، در یک session کاربر به سرورهای مختلف توزیع کند، چنین برنامه هایی عملکرد ضعیفی دارند یا حتی می توانند در یک محیط متعادل بار شکست بخورند.
 


Reverse Proxy
در حالی که استقرار یک Load Balancer  تنها زمانی منطقی است که چندین سرور داشته باشید، اغلب منطقی است که یک Reverse Proxy را حتی با یک وب سرور یا سرور برنامه اجرا کنید. می توانید Reverse Proxy را به عنوان "public face" یک وب سایت در نظر بگیرید. آدرس آن آدرسی است که برای وب سایت تبلیغ می شود و در لبه شبکه سایت قرار دارد تا درخواست های مرورگرهای وب و برنامه های تلفن همراه برای محتوای میزبانی شده در وب سایت را بپذیرد. فواید آن دو جنبه دارد:
افزایش امنیت - هیچ اطلاعاتی در مورد سرورهای پشتیبان شما در خارج از شبکه داخلی شما قابل مشاهده نیست، بنابراین کلاینت های مخرب نمی توانند مستقیماً به آنها دسترسی داشته باشند تا از هر گونه آسیب پذیری سوء استفاده کنند. بسیاری از سرورهای Reverse Proxy دارای ویژگی هایی هستند که به محافظت از سرورهای backend  در برابر حملات انکار سرویس توزیع شده (DDoS) کمک می کنند، برای مثال با رد کردن ترافیک از آدرس های IP مشتری خاص (blacklisting)، یا محدود کردن تعداد اتصالات پذیرفته شده از هر مشتری.
افزایش مقیاس‌پذیری و انعطاف‌پذیری – از آنجایی که مشتریان فقط آدرس IP پروکسی معکوس را می‌بینند، می‌توانید پیکربندی زیرساخت پشتیبان خود را تغییر دهید. این به ویژه در یک محیط Load Balancer مفید است، جایی که می‌توانید تعداد سرورها را بالا و پایین کنید تا با نوسانات حجم ترافیک مطابقت داشته باشد.
دلیل دیگر برای استقرار یک پروکسی معکوس، شتاب وب(web acceleration) است – کاهش زمان تولید پاسخ و بازگرداندن آن به مشتری. تکنیک های شتاب وب شامل موارد زیر است:
فشرده‌سازی – فشرده‌سازی پاسخ‌های سرور قبل از بازگرداندن آن‌ها به مشتری (مثلاً با gzip) پهنای باند مورد نیاز آنها را کاهش می‌دهد که انتقال آن‌ها از طریق شبکه را سرعت می‌بخشد.
SSL – رمزگذاری ترافیک بین کلاینت ها و سرورها از آن هنگام عبور از یک شبکه عمومی مانند اینترنت محافظت می کند. اما رمزگشایی و رمزگذاری می تواند از نظر محاسباتی گران باشد. با رمزگشایی درخواست‌های دریافتی و رمزگذاری پاسخ‌های سرور، Reverse Proxy منابعی را در سرورهای backend  آزاد می‌کند که سپس می‌توانند به هدف اصلی خود، یعنی ارائه محتوا اختصاص دهند.
ذخیره سازی – قبل از بازگرداندن پاسخ سرور backend به مشتری، پروکسی معکوس یک کپی از آن را به صورت محلی ذخیره می کند. هنگامی که مشتری (یا هر مشتری) همان درخواست را می کند، Reverse Proxy می تواند به جای ارسال درخواست به سرور backend  ، پاسخ را از حافظه پنهان ارائه دهد. این هم زمان پاسخگویی به مشتری را کاهش می دهد و هم بار روی سرور باطن را کاهش می دهد.
 
نویسنده :
مجید پورداود
  • مجید پورداود
  • مهندس نرم افزار و تحلیلگر ارشد سیستم های کامپیوتری تحت وب می باشم. از سال 1395 برنامه نویسی را شروع کردم و به زبان های php (فریم ورک laravel -codeigniter)  و زبان جاوا اسکریپت (فریم ورک express.js-nest.js)  تسلط دارم.  

ثبت دیدگاه جدید

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *