در شرکت های بزرگ که دارای چندین سرور هستند، امکان دارد بار ترافیک تنها بر روی یک سرور باشد و سرورهای دیگر فعالیت زیادی نداشته باشند. در چنین شرایطی راه حل استفاده از load balancer است. متعادل نمودن بار ترافیکی، یکی از عوامل پایه در تبادل اطلاعات در فضای مجازی امروزی به شمار می رود. یکی از این مدل راهکار NLB است که از مجموع قابلیت های ویندوز سرور است که به شما این امکان را می دهد که مجموعه ای از سرورها را در قالب گروه در کنار هم قرار دهید که یک سرویس یکسان را ارائه می دهند، در این مقاله به نقد و بررسی این ویژگی در ویندوز سرور میپردازیم.
قابلیت Network Load Balancing یا NLB پایداری و دسترسی پذیری application های اینترنتی مانند Web ،FTP ، Firewall وغیره را با مدیریت دو یا چند سرور مختلف در یک گروه افزایش می دهد. این قابلیت با توزیع متعادل و قابل مدیریت بار ترافیکی بین دو یا چند سرور در یک گروه مجازی از طریق پروتکل TCP/IP کارایی و ثبات سرورهایی مانند یک وب سرور که یک سرویس حیاتی است و در دسترس نبودن آن حتی برای لحظاتی ممکن است خسارات جبران ناپذیری به بار آورد را افزایش می دهد. به طوری که با وجود تنظیمات و امکانات سخت افزاری مناسب، می توان down time چنین سرویس هایی را تا حد زیادی به سمت صفر سوق داد. متعادل کننده بار برای افزایش ظرفیت کاربران همزمان و قابلیت اطمینان برنامه ها استفاده می شود. آنها عملکرد کلی برنامه ها را با کاهش بار روی سرورهای مرتبط با مدیریت و نگهداری جلسات برنامه و شبکه و همچنین با انجام وظایف خاص برنامه بهبود می بخشند. در این صورت اگر نیاز به پشتیبانی از آدرس IP استاتیک یا الاستیک باشد از NLB استفاده میشود.
NBL با استفاده از پروتکل شبکه ی TCP/IP ،ترافیک را روی چندین سرور توزیع می کند. NBL با ترکیب دو یا چند رایانه که برنامه های کاربردی را در یک کلاستر مجازی واحد اجرا می کند، قابلیت اطمینان و عملکرد را برای سرورهای وب و دیگر سرورهای مهم عملیاتی فراهم می کند. سرورهایی که در یک کلاستر NLB قرار دارند، Host نام دارند و هر Host یک کپی مجزا از برنامه های کاربردی سرور را اجرا می کند. البته NLB درخواست های ورودی Client را روی Host های درون کلاستر توزیع می کند. می توان میزان باری را که هر Host باید به آن رسیدگی کند تنظیم کرد. همچنین می توان Host ها را به صورت Dynamic اضافه کرد تا به بار افزایش یافته رسیدگی کنند. NLB همچنین می تواند تمام ترافیک را به یک Host واحد اختصاصی هدایت کند که Default Host نام دارد.
هدف از ارائه سرویسی به نام NLB ، بالا بردن دسترسی پذیری و مقیاس پذیری و یا scalability سرویس هایی است که روی Node های یک NLB Cluster قرار گرفته اند، توجه کنید که راه اندازی هر کدام از سرویس هایی که در ویندوز سرور وجود دارد به تنهایی کار ساده ای است اما قرار دادن آنها در NLB Cluster کمی سخت تر است. به هر حال در ادامه این مطلب انتظار داریم شما مفاهیم کلی NLB را یاد بگیرید، قرار نیست همه موارد پیشرفته NLB در این مطالب پوشش داده شود و بهتر است مباحث پیشرفته تری مانند priority یا اولویت ها و port rule ها را خودتان مطالعه بیشتری داشته باشید. سرویس NLB با دریافت کردن درخواست های کلاینت ها و توزیع کردن این درخواست ها در بین دو یا بیش از دو سروری که در یک NLB cluster قرار دارند دسترسی پذیری و مقیاس پذیری سرویس ما را بالا می برد.
استفاده کردن از سرویس NLB محدود به وب سایت ها و وب سرویس ها نمی شود و شما می توانید Remote Desktop Farm یا VPN Server Farm و یا حتی Proxy Server Farm را هم با استفاده از NLB ایجاد کنید. شما می توانید از یک سرویس NLB بصورت همزمان برای راه اندازی چندین فایروال TMG و ترکیب کردن آن با چندین سرور IIS یک NLB ترکیبی ایجاد کنید.
اولین گامی که NLB برای بالا بردن دسترسی پذیری سرویس به ما ارائه می دهد این است که با استفاده از شناسایی سرورهای مشکل دار دیگر درخواستی را به سمت این سرورها ارسال نمی کند و درخواست های جدید برای سرورهای فعال مجموعه ارسال می شوند ، بدین ترتیب هیچ کلاینتی متوجه بروز مشکل در یکی از سرورها نمی شود و سرویس همچنان ادامه پیدا می کند. در واقع NLB قابلیت شناسایی و سپس از مدار خارج کردن سرورهای غیر فعال مجموعه را دارد.
دومین گامی که NLB برای بالا بردن مقیاس پذیری یا scalability ارائه می دهد این است که گروهی از سرورها هستند که درخواست های کاربران را مدیریت و پاسخگویی می کنند و طبیعتاً تعداد درخواست هایی که می توان در لحظه پاسخگو بود بیشتر از یک سرور تنها خواهد بود. همچنین با گسترش پیدا کردن سرویس مورد نظر، برای مثال یک وب سرور و بالا رفتن تعداد درخواست های کاربران شما می توانید یک سرور جدید را به مجموعه NLB Cluster خود اضافه کنید و Load کاری را بین سرورهای بیشتری تقسیم کنید.
البته باید خاطر نشان شد که Database Server های خود را در یک NLB قرار دهید زیرا در چنین شرایطی هر یک از کلاینت ها با درخواست خود می خواهند پایگاه داده ای را بروز رسانی کنند و ممکن است تداخل کاری در این میان پیش بیاید، در خصوص برطرف کردن چنین مشکلاتی شما باید Clustering را با مفاهیمی دیگر و با روش های خاص اینگونه نرم افزارها پیاده سازی کنید. در بخش زیر نحوه ی پشتیبانی NLB از دسترس پذیری بالا، مقیاس پذیری و مدیریت پذیری سرورهای کلاسترشده که روی این برنامه های کاربردی اجرا می شوند شرح داده می شود.
در شرح ویژگی های NLB میتوان چند موضوع را در نظر گرفت که در ادامه مقاله به آن میپردازیم :
1. دسترس پذیری بالا: یک سیستم با دسترس پذیری بالا به طور قابل اطمینانی سطح قابل قبولی از سرویس را با حداقل Downtime فراهم می کند. NLB برای فراهم کردن دسترس پذیری بالا دارای ویژگی های Built-In است که می توانند به صورت خودکار عملیات زیر را انجام دهد:
• یک Host کلاستر را که دچار خرابی می گردد یا آفلاین می شود را شناسایی کرده و سپس آن را بازیابی کنند.
• وقتی Host ها اضافه یا حذف می شوند، بار شبکه را تعدیل نماید.
• Workload را در عرض ده ثانیه بازیابی و توزیع مجدد نماید.
2. مقیاس پذیری: مقیاس پذیری نشان می دهد که یک رایانه، سرویس یا برنامه کاربردی چگونه می تواند رشد کند تا با افزایش تقاضا بتواند پاسخگو باشد. برای پشتیبانی از مقیاس پذیری، می توان عملیات زیر را با NLB انجام داد:
• درخواست های Balance load روی کلاستر NLB برای سرویس های TCP/IP.
• پشتیبانی از 32 رایانه در یک کلاستر واحد.
• درخواست چندین Balance Server Load از یک Client یکسان یا از چندین Client روی چندین Host در کلاستر.
• اضافه کردن Host ها به کلاستر NLB وقتی که بار افزایش پیدا می کند، بدون اینکه موجب خرابی کلاستر گردد.
• حذف Host ها از کلاستر وقتی که بار کاهش پیدا می کند. ارتقا عملکرد و سربار پایین از طریق پیاده سازی کاملاً Pipeline انجام می شود. Pipelining به درخواست ها این توانایی را می دهد که بدون اینکه منتظر پاسخی به یک سرور قبلی باشند، به کلاستر NLB ارسال شوند.
3. قابلیت مدیریت: برای پشتیبانی از قابلیت مدیریت، می توان کارهای زیر را با NLB انجام داد:
• مدیریت و تنظیم چندین کلاستر و Host های کلاستر NLB از یک رایانه ی واحد با استفاده از NLB Manager یا Cmdletهای NLB در Windows Powershell.
• مشخص کردن رفتار Load Balancing برای یک پورت یا گروه پورت های IP واحد با استفاده از قواعد مدیریت پورت.
• تعریف قواعد پورت مختلف برای هر وب سایت. اگر از سرورهای تعدیل بار شده ی یکسانی برای چندین برنامه کاربردی یا وب سایت استفاده شود، قواعد پورت مبتنی بر آدرس IP مجازی، با استفاده از کلاسترهای مجازی مقصد هستند.
• هدایت تمام درخواست های Client به یک Host واحد با استفاده از قواعد عملیاتی و Single-Host. NLB درخواست های Client را به یک Host به خصوص هدایت می کند که برنامه های کاربردی به خصوصی را اجرا می نماید.
• بلاک کردن دسترسی نامطلوب به شبکه برای پورت های IP به خصوص.
• فعال سازی پشتیبانی از Internet Group Management Protocol یا IGMP روی Hostهای کلاستر برای کنترل Flooding پورت سوئیچ، در هنگام عملیات در حالت Multicast وقتی که Packet های ورودی شبکه به تمام پورت های روی سوئیچ ارسال می گردند.
• شروع، توقف و کنترل اقدامات NLB از راه دور با استفاده از دستورات یا اسکریپت های Windows PowerShell.
• مشاهده ی Windows Event Log برای چک کردن رخدادهای NLB. NLB تمام اقدامات و تغییرات کلاسترها را در Log رخداد ثبت می کند.
• از دسترس خارج شدن یک میزبان یا host در یک گروه تعریف شده یعنی cluster را به سرعت شناسایی می کند.
• اگر یک host به cluster اضافه و یا از آن کم بشود بار ترافیکی را به صورت خودکار در cluster متعادل می کند.
• در کسری از ثانیه لود توزیع شده به یک host غیر قابل دسترس را بازیابی و مجدد توزیع می کند.
• از حداکثر ۳۲ host در یک cluster پشتیبانی می کند.
• در زمان بالا رفتن بار ترافیکی به صورت خودکار یک host تعریف شده را به چرخه لود اضافه می کند.
• زمانی که بار ترافیکی کاهش یافت، host اضافه شده را از چرخه خارج می کند.
الزامات سخت افزاری و نرم افزاری اجرای یک کلاستر NLB :
1. تمام Hostها در کلاستر باید در Subnet یکسانی قرار داشته باشند.
2. هیچ محدودیتی در مورد تعداد آداپتورهای شبکه روی هر Host وجود ندارد و Host های متفاوت می توانند تعداد متفاوتی آداپتور داشته باشند.
3. در هر کلاستر، تمام آداپتورهای شبکه باید یا Multicast یا Unicast باشند.NLB از محیط ترکیبی Multicast و Unicast در یک کلاستر واحد پشتیبانی نمی کند.
4. برای افرادی که از شیوه ی Unicast استفاده می کنند، آداپتور شبکه که برای رسیدگی به ترافیک Client به کلاستر استفاده می شود، باید از تغییر آدرس MAC پشتیبانی کند.
5. فقط TCP/IP را می توان روی آداپتوری که NLB برای آن روی هر Host فعال است مورد استفاده قرار داد. نباید هیچ پروتکل دیگری، مثل IPX روی این آداپتور اضافه شود.
6. آدرس های IP متعلق به سرورها در کلاستر باید استاتیک باشند.