در این مقاله به خاصیت تعادل بار ترافیکی (network load balancing) یا NLB در ویندوز های سرور ۲۰۱۲ و ۲۰۱۲ R2 می پردازیم.
NLB چیست؟
Network Load Balancing پایداری و دسترسی پذیری application ها اینترنتی مانند Web ، FTP ، Firewall و… را با مدیریت دو یا چند سرور مختلف در یک گروه افزایش می دهد. این قابلیت با توزیع متعادل و قابل مدیریت بار ترافیکی بین دو یا چند سرور در یک گروه مجازی از طریق پروتکل TCP/IP کارایی و ثبات سرور هایی مانند یک وب سرور که یک سرویس حیاتی است و در دسترس نبودن آن حتی برای لحظاتی ممکن است خسارات جبران ناپذیری به بار آورد- را افزایش می دهد. به طوری که با وجود تنظیمات و امکانات سخت افزاری مناسب، می توان down time چنین سرویس هایی را تا حد زیادی به سمت صفر سوق داد.
برخی از قابلیت های NLB
- از دسترس خارج شدن یک میزبان (host) در یک گروه تعریف شده (cluster) را به سرعت شناسایی می کند.
- اگر یک host به cluster اضافه و یا از آن کم بشود بار ترافیکی را به صورت خودکار در cluster متعادل می کند.
- در کسری از ثانیه لود توزیع شده به یک host غیر قابل دسترسی را بازیابی و مجدد توزیع می کند.
- از حد اکثر ۳۲ host در یک cluster پشتیبانی می کند.
- در زمان بالا رفتن بار ترافیکی به صورت خودکار یک host تعریف شده را به چرخه لود اضافه می کند.
- زمانی که بار ترافیکی کاهش یافت، host اضافه شده را از چرخه خارج می کند.
راه اندازی NLB
NLB به صورت یک feature به ویندوز اضافه می شود. (توجه داشته باشید برای راه اندازی NLB نیاز به حداقل دو سرور اختصاصی خواهید داشت) جهت راه اندازی NLB وارد منوی start شده و روی server manager کلیک کنید. با انتخاب گزینه add roles and features وارد بخش نصب افزونه های ویندوز سرور ۲۰۱۲ شوید.
با کلیک بر روی next صفحه معرفی wizard را پشت سر گذاشته و وارد صفحه انتخاب نوع نصب سرویس بشوید.
با انتخاب گزینه اول با عنوان نصب به صورت featured-baed وارد صفحه انتخاب سرور نصب شوید(در صورتی که در حال نصب سرویس به صورت مجازی هستید، از انتخاب گزینه دوم اجتناب کنید. چرا که با انتخاب این گزینه ویندوز علاوه بر افزونه مورد نظر اقدام به نصب یک سری افزونه های بهینه ساز سرور مجازی می کند که باعث افزایش بیش از حد مصرف RAM و CPU سرور می شود که در صورت در اختیار نداشتن منابع قدرتمند، باعث کندی سرور می شود. )
در این صفحه تمامی سرور هایی که با دستور Add Server در Server Manager اضافه شده اند نمایش داده می شود. سروری که در حال نصب سرویس روی آن هستید به صورت پیش فرض در این لیست موجود است. با انتخاب سرور مورد نظر روی next کلیک کرده و به صفحه انتخاب role وارد شوید.در این صفحه، بدون انتخاب هیچ گزینه ای روی next کلیک کرده و وارد صفحه انتخاب features شوید.
در این صفحه پس از انتخاب افزونه Network Load Balancing از شما سوال می شود که آیا مایل به نصب Network load balancing tools هستید یا خیر که با انتخاب گزینه add feature موافقت خود را اعلام کرده و روی next کلیک کنید تا وارد صفحه تایید نهایی نصب شوید.
در صفحه تایید نهایی نصب، پس از کلیک روی گزینه install تا پایان یافتن نصب این سرویس شکیبا باشید. پس از پایان نصب روی گزینه finish کلیک کنید تا نصب افزونه پایان یابد.
تنظیمات network load balancing
همانطور که در ابتدای مقاله اشاره شد، از NLB می توان در سرویس های متفاوتی استفاده کرد. در این مقاله تنظیمات مربوط به سرویس وب ارائه می شود. ساز و کار باقی سرویس ها با توجه به port و task آن سرویس تقریبا یکسان است. برای راه اندازی NLB حد اقل نیاز به دو سرور داریم که در آنها سرویس IIS و سرویس NLB نصب شده باشد. یکی از این سرور ها می تواند همان سرور مدیریت کننده NLB باشد. هر کدام از این سرور ها می بایست دارای حداقل دو کارت شبکه باشند که از یکی از آنها صرفا برای NLB استفاده می شود. همانطور که در تصویر زیر اشاره شده است، در کارت شبکه ای که قصد دارید برای NLB استفاده کنید می بایست آیتم Client For Microsoft Networks غیر فعال شود.
در Server Manager با کلیک روی منوی Tools و انتخاب گزینه Network Load Balancing Manager وارد کنسول مدیریتی NLB شوید (این کنسول با استفاده از دستور nlbmgmt.msc در Run نیز قابل اجراست). پس از باز شدن کنسول، روی گزینه Network Load Balancing Clusters کلیک راست کرده و گزینه New Cluster را انتخاب کنید. در صفحه باز شده IP کارت شبکه یکی از وب سرور ها را وارد کنید. همانطور که در شکل مشخص است، در صورت هم رنج بودن IP های دو کارت شبکه هر دو discover می شود، نسبت به انتخاب کارت شبکه اختصاص داده شده به NLB (کارت شبکه ای که Client For Microsoft Networks روی آن غیر فعال شده است) اقدام کنید. سپس روی گزینه next کلیک کرده تا وارد صفحه انتخاب اولویت شوید.
در این صفحه با کلیک روی گزینه next اولویت اول را برای این host باقی گذارید. (به علت Cluster Manager بودن این سرور.)در صورت هم وزن بودن load موجود روی سرور ها، این مورد تایین کننده دسترسی به سرور است.
با کلیک روی next وارد صفحه تعین Cluster IP می شوید.
Cluster IP: یک IP یکتا است که با دو کارت شبکه اختصاص داده شده به NLB در دو سرور هم رنج است. این IP به نوعی یک IP مجازی است که Request های ارسال شده به این IP روی Host های موجود در Cluster متعادل (Balance) می شود. در واقع کاربر درخواست خود را به این IP ارسال می کند و از task های صورت گرفته پشت این IP که NLB است بی اطلاع خواهد بود.
در این قسمت با توجه به شرایط ذکر شده یک IP برای این Cluster انتخاب کنید و روی next کلیک کنید تا وارد صفحه Cluster Parameters شوید.
در این صفحه با انتخاب گزینه Multicast روی گزینه next کلیک کنید تا وارد صفحه تخصیص پورت شوید. (این مورد روش تشخیص سلامت و پاسخگویی هاست ها توسط Cluster Manager را مشخص می کند)
همانطور که در این صفحه مشاهده می کنید، سرویس NLB با یک rule به تمامی پورت ها اعمال شده است. با توجه به این که در حال حاضر این سرویس تنها برای وب سرور راه اندازی شده است، نیاز است که با edit کردن این rule تنها پورت های ۸۰ و ۴۴۳ را برای اعمال NLB معرفی کنیم. پس از ویرایش پورت ها، گزینه affinity را ترجیحا روی none قرار دهید.
Affinity چیست؟
Affinity یا پیوستگی، نظم پاسخدهی به درخواست های یک کاربر را مشخص می کند. بدین منظور که درخواست کاربر به کدام سرور برسد و یا نرسد. سه نوع affinity قابل انتخاب است:
None: کارا ترین نوع affinity این نوع است. در این نوع، پاسخ به request کاربر هیچ نظمی ندارد و همیشه خلوت ترین سرور به درخواست کاربر پاسخ می دهد. نقطه ضعف این پیوستگی در مورد session های ایجاد شده از طرف کاربر است. به طور مثال اگر کاربر برای استفاده از محتوای یک صفحه نیاز به لاگین دارد، در هر بار refresh کردن و یا تغییر صفحه ممکن است session کاربر به علت تغییر سرور expire شده و کاربر مجدد نیاز به لاگین داشته باشد.
Single: همیشه یک سرور در صورت دسترس بودن پاسخ کاربر را می دهد. به این صورت که اولین request کاربر به سمت خلوت ترین سرور ارسال شده و از این پس تنها این سرور پاسخ کاربر را ارائه می دهد(مگر در صورت از دسترس خارج شدن.)
Network: از این نوع affinity در windows 2008 R2 با نام Class C یاد می شود. در این نوع پیوستگی، request های داخل شبکه به صورت single و request های خارج از شبکه(اینترنت) به صورت none پاسخ داده می شود.
Timeout: با استفاده از این گزینه می توانید زمان timeout شدن request کاربر و در نتیجه بازیابی توسط cluster manager و توزیع مجدد به یک host دیگر را تعیین کنید. این زمان به صورت پیشفرض ۱۰ ثانیه است.
Single Host: برای ارسال request ها صرفا به یک هاست استفاده می شود، حتی در صورت timed out شدن این هاست load balancing اعمال نمی شود.
Disable This Port Range: برای غیر فعال کردن NLB روی یک port range خاص استفاده می شود.
پس از کلیک روی دکمه finish فرآیند اضافه کردن اولین Host و همچنین cluster manager به پایان رسیده است. هاست دوم را نیز مانند هاست اول(با کلیک راست روی Network Load Balancing Cluster) اضافه کنید.(فرآیند کاملا مشابه اضافه کردن هاست اول است. با این تفاوت که در بخش priority اولویت دوم برای سرور دوم انتخاب می شود.)
حال برای آزمایش کردن صحت عملکرد این سرویس، یک کد php در صفحه دو سایت در دو سرور گذاشته شد که نام سرور مربوطه را Echo می کند. با بررسی های انجام شده مشخص شد که request ها به صورت random بین دو سرور توزیع می شود و با stop کردن NLB برای یک سرور از طریق NLB manager درخواست ها به سرور دیگر فرستاده شد.
نکته۱: در Windows Server 2008 R2 نیز فرآیند راه اندازی NLB کاملا به صورت فوق است با این تفاوت که در ابتدای نصب، feature می بایست از server manger و در قسمت جداگانه features نصب شود. همچنین تفاوت مختصری در نام یکی از affinity ها نیز وجود دارد که در بخش مربوطه به آن پرداخته شده است.
نکته ۲: بدیهی است که در صورتی که سرور ها قرار است به صورت بک آپ و Load balancing برای هم عمل کنند، تنظیمات سرور ها مانند DNS Zones، IIS و…می بایست مانند هم باشد. (تریجیحا در سرور با اولویت پایین تر از Secondary DNS Zone استفاده شود.)
مقاله ی ما با موضوع ” Load balancing چیست “برای کسب اطلاعات بیشتر در این حوزه مطالعه نمایید.