Dev Stream
Dev Stream
خواندن ۹ دقیقه·۴ سال پیش

NGINX PLUS

نوشته شده توسط علی آخی و بردیا اکبری


آشنایی با NGINX PLUS :

به طور خلاصه میتوان گفت که nginx pluse نمونه ای مشتق شده از nginx است به طوری که خود وب سایت nginx در این مورد می گوید:

If You Like NGINX, You'll Love NGINX Plus


ابزار NGINX Plus یک load balancer بار نرم افزار ، web server و hidden content است که بر روی NGINX ساخته شده است. NGINX Plus دارای ویژگی های منحصر به فرد در سطح سیستم و فراتر از بستر متن باز است ، که شامل session resilience ، پیکربندی از طریق API و بررسی active health است. از NGINX Plus به جای load balancer سخت افزاری نیز می توانید استفاده کنید و بدون محدود کردن زیرساخت های خود ، آزادانه نوآوری خود را پیاده سازی کنید.

همان طور که گفته شد nginx plus نمونه ای مشتق شده از nginx است اما چرا ؟!

نکته قابل توجه این است که ابزار NGINX Plus کاملاً توسط NGINX، Inc پشتیبانی می شود و طیف وسیعی از ویژگی های پیشرفته را ارائه می دهد.

در این مقاله ما قرار است با قابلیت load balacing و یکسری مطالب دیگر که در این جا آن ها را اسپویل نمی کنیم، آشنا شویم.

مزایای NGINX Plus :

۱- مقرون به صرفه بودن: در مقایسه با ADC های سخت افزاری ، بیش از 80٪ صرفه جویی می کنید ، بدون اینکه عملکردی را قربانی کنید، همچنین NGINX Plus برای سازمان هایی که در حال حاضر از load balancer مبتنی بر سخت افزار استفاده می کنند ، مجموعه ی کاملی از ویژگی های ADC را در قالب یک فرم نرم افزاری بسیار انعطاف پذیرتر ، با هزینه ای مقرون به صرفه ارائه می دهد.

۲- انعطاف پذیری: قابلیت استقرار در هر پلتفرمی از جمله: private cloud ,public cloud ,ماشین مجازی, bare metal, در بحث docker و container و...

۳- عملکرد خودکار: با انجام کارهای مشترک از طریق API ساخته شده در NGINX Plus در وقت صرفه جویی کنید.

۴- برای سیستم هایی که در حال حاضر از NGINX استفاده می کنند ، NGINX Plus پیچیدگی مدیریت یک زنجیره از فرآیند های به اصطلاح "do-it-yourself" از پروکسی ها، load balancer و سرورهای ذخیره را در یک محیط برنامه از بین می برد.

۵- ابزار NGINX Plus برای سیستم هایی که نیاز به راه حلی برای تحویل ویدیوی HTTP با قابلیت مقیاس پذیری گسترده دارند ، از پشتیبانی پیشرفته ی ویدیویی برخوردار است.(این مورد در وب سرورها از اهمیت ویژه ای برخوردار است).

آشنایی با قابلیت های NGINX Plus :Load Balancer & Load Balancing

ابتدا Load Balancer & Load Balancing

برای این که با قابلیت load balancing و load balancer بهتر آشنا شویم باید نقش یک پلیس راهنمایی و رانندگی را متصور شد که وظیفه دارد تا ماشین ها را به مسیرهای باز و خلوت هدایت کند و ترافیک را در خیابان های منتهی به چهار راه متعادل سازد. کاری که آقای پلیس انجام می دهد را load balancing و خود پلیس را load balancer نامیم.

خب حالا آقای پلیس یا همان load balancer برای هدایت ترافیک باید چکار کند؟

البته موارد زیر بیشتر به load balancer شبکه اشاره دارد تا آقای پلیس!

۱- تقاضای مشتری یا بار شبکه را به صورت کارآمد در چندین سرور توزیع کند.

۲- با ارسال درخواست فقط به سرورهایی که آنلاین هستند ، در دسترس بودن و قابلیت اطمینان بالایی را تضمین کند.

۳- انعطاف پذیری برای اضافه کردن یا کم کردن سرورها، به طریقی تقاضا را فراهم کند.

لازم به ذکر است که الگوریتم های مختلفی برای load balancing وجود دارد و انتخاب روش load balancing به شما بستگی دارد.

تعادل بار به توزیع موثر ترافیک شبکه ی ورودی به گروهی از سرور ها، که به عنوان server pool (منبع سرور) نیز شناخته می شود، اشاره دارد. در مورد یک web-app ، درخواست های HTTP در میان سرورهای برنامه متعادل می شوند.

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

حجم این داده ها با تعداد سرورهای مورد نیاز برای جابجایی این دیتاها رابطه ی مستقیم دارد.

خب این چالش چگونه باید مدیریت شود؟!

آیا راه حل، اضافه کردن سرور های بیشتر است؟!!

دو تعادل اصلی وجود دارد :

یکی این است که با یک سرور واحد، تعداد بیشتری از کاربران را مدیریت کنید.

حالت دوم افزونگی است - اگر سرور از کار بیفتد، دیگر سرور ها برای اطمینان از ماندن برنامه بصورت آنلاین، در دسترس هستند.

مزایای load balancing :

1-کاهش downtime

2-مقیاس پذیری(Scalable)

3-افزونگی(Redundancy)

4-انعطاف پذیری

5-بهره وری

6-تعادل ترافیک سرور جهانی

هر دو منبع آزاد NGINX و NGINX Plus می توانند ترافیک HTTP ، TCP و UDP را تعادل بخشند.گفتیم که NGINX Plus منبع بازی است که از NGINX مشتق شده است و شامل session persistence ،active health checks که با تنظیم مجدد و پویای مجموعه ی سرورها بدون راه اندازی مجدد سرورها، سبب گسترش سرور ها می شود.

قبل از هر کار دیگری اول با session persistence و active health checks آشنا می شویم:

به طور خلاصه session persistence منبع باز nginx pluse می تواند user sessions را شناسایی کرده و کلیه درخواست ها را در یک client session به همان سرور بالادست ارسال کند. این می تواند از خطاهای مهلکی جلوگیری کند که در این مقاله اصلا مورد بحث نیستند. در غیر اینصورت سرورهای برنامه، در حالت local ذخیره می شوند و load balancer درخواستی را برای user sessions در حال پیشرفت، به یک سرور دیگر ارسال می کند.

همچنین session persistence می تواند وقتی برنامه ها اطلاعات را در یک کلاستر به اشتراک می گذارند عملکرد را بهبود بخشد.

به طور خلاصه active health checks: در حقیقت NGINX بررسی های اساسی در مورد پاسخ های سرورهای بالادست را انجام می دهد و در صورت امکان ,درخواست های ناموفق را امتحان می کند. NGINX Plus به بررسی active health برنامه های کاربردی خارج از باند (همچنین به عنوان Artificial transactions نیز شناخته می شود) و یک شروع آرام برای اضافه کردن سرورهای جدید و بازیابی شده به گروه سرور های load balancing شده است.

اگر کد وضعیت برگردانده شده "سالم یا همان healthy" باشد ، پیشخوان "Successes" را برای target افزایش می دهد و تمام شمارنده های دیگر آن را پاک می کند.

اگر نتواند اتصال برقرار کند ، پیشخوان "TCP failures" را برای target افزایش می دهد و پیشخوان "Successes" را پاک می کند.

در صورت خاموش شدن ، پیشخوان "timeout" را برای target افزایش می دهد و پیشخوان "Successes" را پاک می کند.

اگر کد وضعیت برگشتی به عنوان "unhealthy" تنظیم شده باشد ، پیشخوان "خرابی های HTTP" یا اصطلاحا "HTTP failures" را برای target افزایش می دهد و پیشخوان "Successes" را پاک می کند.

در صورت خاموش شدن ، پیشخوان "timeout" را برای target افزایش می دهد و پیشخوان "Successes" را پاک می کند.

اگر کد وضعیت برگشتی به عنوان "unhealthy" تنظیم شده باشد ، پیشخوان "خرابی های HTTP" یا اصطلاحا "HTTP failures" را برای target افزایش می دهد و پیشخوان "Successes" را پاک می کند.

قبل از هر کار دیگری، اگر مدل شبکه OSI را برای همه لایه های شبکه می دانید ، شکل زیر را بررسی کنید.

خب حالا (HTTP Load Balancer(S (لایه ی 7) به عنوان یک پروکسی معمولی عمل می کند که اغلب بین یک روتر خارجی و سرویس های backend شما قرار می گیرد.

شکل زیر ، نمایش جریان برنامه برای یک L7-LB معمولی است که در آن بسته A از روتر وارد می شود و توسط Load Balancer مونتاژ ، پردازش و دستکاری می شود.

بخش LB به دلیل Manipulation(دست کاری) های مختلفی که در داخل LB اتفاق می افتد بسته های شماره 1 تا N را نیز تولید می کند. بسته های اضافی می توانند برای تکمیل اطلاعات برای سرور backend ایجاد شوند ، یا این بسته ها می توانند در بسته های کوچک تر با metadata غنی شده تقسیم شوند. L7-LB ها می توانند انواع مختلف Manipulation هایی مانند Manipulation HTTP header را انجام دهند.

در مورد HTTP load balancer NGINX :

هنگام تعادل بار در ترافیک HTTP ، NGINX Plus هر اتصال HTTP را خاتمه می دهد و هر درخواست را بصورت جداگانه پردازش می کند.شما این امکان را دارید که رمزگذاری SSL / TLS را حذف کنید ، درخواست را بازرسی و دستکاری کنید ، استفاده از محدودیت نرخ درخواست را صف کنید و سپس سیاست متعادل کردن بار را انتخاب کنید یا خود آن را تنظیم کنید!

البته انجام پیکربندی درست و همچنین الگوریتمی که شما استفاده می کنید همه و همه به کاربرد شما بستگی دارد. مثلا هر شرکت یا سامانه ای بنا به نیازهای خود nginx را کانفیگ می کند.

اظهار نظر در مورد HTTP Load Balancer بیشتر نیاز به دانش عملی دارد!

اما در مورد TCP Load Balancer NGINX

تعادل بار TCP نوعی از load balancer هاست که از پروتکل کنترل و انتقال (TCP) استفاده می کند ، که در لایه ی 4 (لایه ی حمل و نقل) در مدل اتصال سیستم های باز (OSI) عمل می کند. ترافیک TCP در یک سطح متوسط ​​بین یک برنامه کاربردی و پروتکل اینترنت (IP) برقرار می شود. پیکربندی تعادل بار TCP ، یک جریان مطمئن و باخطا, از بسته ها را به آدرس های IP فراهم می کند ، که در غیر این صورت به راحتی از بین می روند یا خراب می شوند.

به هر برنامه یک شماره پورت TCP منحصر به فرد اختصاص داده شده است تا بتواند برنامه صحیح را تحویل دهد تا health checks را انجام دهد.

و این مطلب ادامه دارد...

با سپاس فراوان از شما!






وب سرورانجین ایکسnginxوبسرور
جایی برای یادگرفتن و گپ برنامه نویس ها
شاید از این پست‌ها خوشتان بیاید