تنظیم سرور : ۵ تنظیم رایج سرور برای برنامه تحت وب شما

مقدمه

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

۱- همه چیز در یک سرور

کل محیط یک سرور واحد است. برای یک برنامه وب نوعی که می تواند شامل وب سرور، سرور برنامه و سرور پایگاه داده باشد.
یک نوع رایج از این نصب پشته LAMP است که مخفف لینوکس، آپاچی، MySQL و PHP در یک سرور واحد است.


مورد استفاده : برای نصب سریع یک برنامه ، به عنوان ساده ترین نصب ممکن خوب است ، اما در مقیاس پذیری و جداسازی اجزا چیز کمی ارائه می دهد.

مزایا :

  • ساده

معایب :

  • برنامه و پایگاه داده برای منابع مشابه سرور (پردازنده، حافظه، I / O و غیره) مورد استفاده قرار می گیرند که، علاوه بر عملکرد ضعیفِ ممکن، می تواند تعیین منبع عملکرد ضعیف(برنامه یا پایگاه داده) را سخت کند.
  • به راحتی مقیاس پذیر به صورت افقی نیست.

مقاله مرتبط :
روش نصب lamp در سرور مجازی اوبونتو

 

۲- جدا کردن سرور پایگاه داده

سیستم مدیریت پایگاه داده (DBMS) را می توان از بقیه محیط جدا کرد تا اختلاف منابع بین برنامه و پایگاه داده را از بین برد، و امنیت را با حذف پایگاه داده از DMZ، و یا اینترنت عمومی افزایش داد.

مورد استفاده: برای تنظیم سریع برنامه خوب است ، و برنامه و پایگاه داده را از مبارزه با منابع سیستم مشابه نگه می دارد.

 

مزایا :

  •  سطوح برنامه و پایگاه داده برای منابع سرور مشابه رقابت نمی کنند. (پردازنده، حافظه، I / O، و غیره)
  •  شما می توانید هر سطح را به صورت جداگانه مقیاس بندی کنید، با اضافه کردن منابع بیشتر به هر سرور که نیاز به افزایش ظرفیت دارد.
  •  بسته به نصب شما ، حذف پایگاه داده خود از DMZ ممکن است امنیت را افزایش دهد.

معایب:

  • تنظیمات کمی پیچیده تر از سرور واحد
  •  مشکلات مربوط به عملکرد می توانند در صورتی رخ دهند که اتصال شبکه بین دو سرور با تاخیر زیاد باشد (به عنوان مثال سرورها به صورت جغرافیایی از یکدیگر دور هستند) یا پهنای باند برای مقدار داده انتقال یافته کم باشد.

۳- لودبالانسر (پراکسی معکوس)

لود بالانسر را می توان به محیط یک سرور اضافه کرد تا عملکرد و قابلیت اطمینان را با توزیع بار کاری در چندین سرور افزایش دهد. اگر یکی از سرورهای لود بالانس از کار بیفتد ، سرورهای دیگر ترافیک ورودی را مدیریت می کنند تا زمانی که سرور از کار افتاده دوباره فعال شود. همچنین می تواند با استفاده از لایه ۷ (لایه کاربردی) پروکسی معکوس برای سرویس دهی به برنامه های متعدد از طریق همان دامنه و پورت استفاده کند.

نمونه هایی از نرم افزار که قادر به لودبالانس پروکسی معکوس هستند: HAProxy، Nginx و Varnish

مورد استفاده: مفید در محیطی است که نیاز به مقیاس پذیری با اضافه کردن سرور های بیشتر دارد، همچنین به عنوان مقیاس افقی شناخته شده است.

مزایا:

  • مقیاس افقی را فعال می کند، یعنی ظرفیت محیط می تواند با اضافه کردن سرورهای بیشتری به آن بیشتر شود.
  • می تواند در برابر حملات DDOS با محدود کردن اتصالات مشتری به مقدار محسوس و تکرار ، محافظت کند.

معایب :

  •  لودبالانسر می تواند باعث جلوگیری از عملکرد موثر باشد ، اگر منابع کافی نداشته و یا اگر به صورت ضعیف تنظیم شده باشد.
  •  می تواند پیچیدگی هایی را که نیاز به توجه بیشتری دارند پدید آورد، مانند جایی برای خاتمه دادن به SSL و نحوه اداره برنامه هایی که به نشست های سخت نیاز دارند.
  • لود بالانسر یک نقطه شکست است؛ اگر از کار افتاد، تمام خدمات شما می تواند از کار بیفتد. نصب سرویس دسترسی بالا( HA) یک زیرساخت بدون یک نقطه شکست است. برای یادگیری اینکه چگونه می توانید لود بالانسر ایجاد کنید به مقاله های زیر مراجعه کنید:

نحوه استفاده از HAProxy برای لودبالانس سرور مجازی اوبونتو(قسمت اول)
نحوه استفاده از HAProxy برای لودبالانس سرور مجازی اوبونتو(قسمت دوم)

۴-شتابدهندهHTTP (پروکسی معکوس کش)

یک شتابدهنده HTTP و یا پروکسی معکوس HTTP کش میتواند برای کاهش زمان لازم برای ارائه محتوا به یک کاربر با تکنیکهای مختلف استفاده شود. تکنیک اصلی که با یک شتاب دهنده HTTP کار می کند، پاسخ های کش شده از سرور وب یا سرور نرم افزار در حافظه است، بنابراین درخواست های آینده برای همان محتوا می تواند به سرعت، با تعامل غیر ضروری کمتر با سرور وب و یا نرم افزار پاسخ داده شود.

نمونه هایی از نرم افزار قادر به شتاب HTTP : Varnish, Squid, Nginx

مورد استفاده: مفید در محیطی با برنامه های وب پویا با محتوای سنگین و یا با بسیاری از فایل های معمول دسترسی یافته

مزایا :

  • افزایش عملکرد سایت با کاهش بار پردازنده در سرور وب، از طریق ذخیره و فشرده سازی، در نتیجه افزایش ظرفیت کاربر
  • می تواند به عنوان یک لودبالانسر پروکسی معکوس استفاده شود
  •  برخی از نرم افزارهای ذخیره سازی میتوانند از حملات DDOS محافظت کنند

معایب:

  •  نیاز به تنظیم برای به دست آوردن بهترین عملکرد از آن دارد
  •  اگر میزان حافظه پنهان کم باشد، می تواند عملکرد را کاهش دهد

۵- تکثیر پایگاه داده Master-Slave

یکی از راه های بهبود عملکرد یک سیستم پایگاه داده ای که در مقایسه با نوشتن تعداد زیادی خواندن انجام می دهد ، مانند CMS، استفاده از تکثیر پایگاه داده master-slave است. تکثیر Master-slave نیازمند یک سرور master و یک یا چند سرور slave است. در این راه اندازی، تمام آپدیت ها به سرور master فرستاده می شود و عمل خواندن می تواند در میان تمام سرورها توزیع شود.

مورد استفاده: خوب برای افزایش عملکرد خواندن برای سطح پایگاه داده یک برنامه.

در اینجا یک مثال از راه اندازی یک تکثیر master-slave با یک سرور slaveاست.

مزایا:

  • عملکرد خواندن پایگاه داده را با توزیع خواندن در میان سرورهای slave بهبود می بخشد.
    می تواند عملکرد نوشتن را توسط استفاده از سرور master به صورت اختصاصی برای به روز رسانی ها ، بهبود ببخشد.( هیچ وقتی را مخصوص درخواست های خواندن صرف نمی کند)

معایب :

  •  برنامه دسترسی به پایگاه داده باید یک مکانیزم برای تعیین سرورهای پایگاه داده ای که باید به روزرسانی ها را ارسال کرده و درخواستها را بخوانند ، داشته باشد.
  •  به روز رسانی ها برای slave ها ناهمگن است، بنابراین احتمال وجود دارد که محتویات آنها از بین رفته باشد.
  • اگر master از کار بیفتد، تا زمانی که مسئله اصلاح شود، به روز رسانی نمی تواند بر روی پایگاه داده انجام شود.

مثال : ترکیب مفاهیم

این امکان وجود دارد که سرورهای ذخیره سازی را علاوه بر سرورهای برنامه لودبالانس کنید ، و از تکثیر پایگاه داده در یک محیط استفاده کنید. هدف از ترکیب این تکنیک ها، بهره مندی از مزایای هر یک از افراد بدون ارائه بسیاری از مسائل و پیچیدگی است. در اینجا یک نمودار نمونه از آنچه یک محیط سرور می تواند باشد نشان داده شده است:

بیایید فرض کنیم که لودبالانسر برای تشخیص درخواست های استاتیک پیکربندی شده است(مثل عکسها ، css, javascript و ..) و این درخواست ها را مستقیما به سرورهای ذخیره سازی ارسال می کند و درخواست های دیگر را به سرورهای برنامه ارسال می کند.

در اینجا یک توضیح آورده شده درباره آنچه اتفاق می افتد زمانی که یک کاربردرخواست یک محتوای پویا را ارسال می کند :

۱- کاربر درخواست یک محتوای پویا را از http://example.com(لودبالانسر) می دهد.
۲- لودبالانسر درخواستها را به برنامه backend ارسال می کند.
۳- برنامه backend از پایگاه داده می خواند و محتویات درخواستی را به لود بالانسر برمی گرداند.
۴- لود بالانسر اطلاعات درخواست شده را به کاربر باز می گرداند.

اگر کاربر درخواست یک محتوای استاتیک را ارسال کند:

۱- لودبالانسر حافظه کش را بررسی می کند تا ببیند آیا محتوای درخواست شده ذخیره شده است یا نه .
۲- اگر ذخیره کرده باشد محتوای درخواستی را به لودبالانسر برمی گرداند و به مرحله ۷ می رود ، اگر نه سرور ذخیره سازی درخواست را از طریق لودبالانسر به برنامه backend برمی گرداند.
۴- لود بالانسر درخواست را از طریق برنامه backend ارسال می کند.
۵- لود بالانسر پاسخ را به کش backend ارسال می کند.
۶- کش backend محتوا را ذخیره می کند سپس به لود بالانسر برگشت می دهد.
۷- لود بالانسر داده درخواستی را به کاربر برمی گرداند.

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

نتیجه گیری

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

 

منبع

برگردان : آرزو رنجبرپور

لینک کوتاه مقاله :