۲۵ بهمن ۱۳۹۴
دسته: مقالات
۲۵ بهمن ۱۳۹۴,
 ۰

DNS Load Balancer

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

 برخی از مزایای استفاده از Load Balancer به شرح زیر است:

- کاهش میزان بار روی یک  سرور

- انجام تعداد زیاد  پروسه به صورت همزمان

- بهبود عملکرد وبسایت به دلیل پاسخ دهی سریع تر به کاربران

- در یک محیط توزیع بار (Load Balanced) شده، اگر یک سرور دچار مشکل شده و نتواند سرویس خود را ارائه دهد، وبسایت با کمک دیگر سرور های مجموعه همچنان در دسترس بوده به سرویس دهی ادامه خواهد داد.

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

برای ایجاد محیطی که در آن بار میان چند سرور توزیع شده باشد، مدل ها و سناریو های متفاوتی وجود دارد که بسته به نیاز سیستم و کارکرد وبسایت مورد نظر، می توان از هریک از این سناریو ها استفاده کرد. در این مقاله به شرح نوعی از Load Balancer به نام DNS Load Balancer می پردازیم.

در روش DNS Load Balancing یک یا چند سرور DNS بار را میان سرورهای سرویس دهنده اصلی (مانند وب) توزیع می کنند.

به صورت خلاصه، در این روش سرورهای DNS طوری پیکربندی می شوند که برای یک وبسایت آی پی یا آی پی های مختلفی را برگردانند. رکورد A رکوردی است که نام دامنه را به آدرس آی پی ترجمه می کند. برای مثال وقتی شما در مرورگر خود آدرس tebyanidc.com را وارد می کنید، کامپیوتر شما در پشت صحنه از یک سرور DNS می خواهد که این دامنه را به آدرس آی پی ترجمه کند. در DNS Load Balancing باید برای یک دامنه، رکوردهای A با آی پی های مختلفی وجود داشته باشد.

برای مثال اگر از یک سرور DNS راجع به دامنه tebyanidc.com سوال کنید (query بگیرید) یک آدرس آی پی به شما برگردانده می شود. زیرا دامنه tebyanidc.com فقط روی یک سرور وب میزبانی شده، در نتیجه تنها یک رکورد A داشته و به همان آی پی نیز Resolve می شود. (شکل ۱)

1

حالا اگر بخواهیم یک مثال پیچیده تر بزنیم می توانیم دامنه yahoo.com را چک کنیم. (شکل ۲)

2

همانطور که در شکل بالا نشان داده شده است با اجرای دستور nslookup سه آدرس آی پی برای دامنه yahoo.com برگردانده شده است که نشان می دهد دامنه yahoo.com  سه  رکورد dns از نوع A دارد. اجرای دوباره دستور nslookup برای دامنه yahoo.com همان آدرس های آی پی را با ترتیبی متفاوت برمی گرداند. این امر در بیشتر اوقات نشان دهنده وجود DNS Load Balancing می باشد. (شکل ۳)

3

به این ترتیب می توانیم نتیجه بگیریم که سه سرور با سه آدرس آی پی متفاوت مسوول سرویس دهی به سایت yahoo می باشد. هرگاه بازدید کننده ای دامنه yahoo.com را توسط مرورگر خود مرور  کند، این درخواست به سرورهای DNS رسیده و هر بار یکی از آدرس های آی پی (یکی از سه آی پی آدرس موجود در شکل) به وی بازگردانده می شود و در نتیجه به سراغ یکی از این سه سرور یاهو می رود. (شکل ۴)

4

حالا یکبار دیگر همین سناریو را با این فرض دنبال کنیم که یکی از این سه سرور وب خاموش شده است. وقتی درخواست برای دامنه yahoo.com از مرورگر کاربر به سرور DNS می رسد، سرور DNS یکی از سه آدرس آی پی را بازمی گرداند. اگر این آی پی متعلق به سرور خاموش باشد، بازدیدکننده به سراغ همان سرور رفته و در نتیجه با TimeOut مواجه خواهد شد. ترتیبی که سرورهای DNS براساس آن آی پی ها را به درخواست کنندگان اعلام می کنند بیین سرورهای DNS مختلف متفاوت است اما معمولا برای این کار از الگوریتم Round-robin  استفاده می شود. بنابراین وقتی تعداد زیادی بازدیدکننده از سراسر جهان، دامنه yahoo.com را از سرورهای DNS پرس و جو می کنند، یک سوم آنها با دریافت آی پی متعلق به سرور خاموش، به سراغ آن رفته و با Time Out مواجه می گردند. در این صورت اگر یکی از سرورها پس از گذشت مدتی،همچنان پاسخی ندهد درخواست کننده به سراغ سرور بعدی می رود و این روند تا جایی ادامه پیدا می کند که یک پاسخ از یکی از سرورها دریافت کرده و یا اینکه لیست سرورها تمام شود. البته بیشتر مرورگرهای مدرن این پروسه را به صورت خودکار طی می کنند. (شکل ۵)

120

مهم ترین نتیجه ای که از این سناریو به دست می آید این است که سرویس DNS از سلامت سرویسی که برای آن Load Balance انجام می دهد آگاه نیست. در مثال بالا، سرورهای DNS بدون توجه به خاموش بودن یکی از سه سرور وب، همچنان آی پی آن را در اختیار درخواست کنندگان قرار می دهند. بنابراین نتیجه می گیریم برای سرویسی که بالا بودن آن از اهمیت برخوردار است، DNS Load Balancing کافی نبوده و باید در کنار آن از یک TCP Load Balancer نیز استفاده شود.

ارائه دهنده: عاطفه حسیبی

پاسخ دهید

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

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>