Parsi Coders
آموزش clusteringدرsql server 2008 - نسخه قابل چاپ

+- Parsi Coders (http://parsicoders.com)
+-- انجمن: Other sections (http://parsicoders.com/forumdisplay.php?fid=71)
+--- انجمن: Articles and books (http://parsicoders.com/forumdisplay.php?fid=74)
+--- موضوع: آموزش clusteringدرsql server 2008 (/showthread.php?tid=175)



آموزش clusteringدرsql server 2008 - parastoo - 05-04-2011

کلاسترینگ چیست؟
کلاسترینگ به گروهی از سرورها شامل یک یا بیشتر از یک سرور گفته میشود که با یکدیگر نرم افزاری مشخص را اجرا میکنند که نتیجه ی آن احتمال خطای کمتر و سرعت لد بالاتر برنامه هاست. سرویس کلاسترینگ بیشتر برای سازمان و شرکتهایی به کار میرود که برنامه ی آنها تحت هر شرایطی باید اجرا شود و در حالت اجرا باقی بماند حتی زمانی که یکی از سرورها از سرویس خارج شده باشد. در سرویس کلاسترینگ تمامی سرورها همان برنامه و قوانینی را که باقی سرورها اجرا میکنند اجرا خواهند کرد لذا اگر سروری از سرویس خارج شود باقی سرورها بلافاصه شروع به کار خواهند کرد که به آن Failover گفته میشود. زمانی که سرور از سرویس خارج شده دوباره به کار افتاد باقی سرورها آگاه میشوند و روند عادی دوباره ادامه خواهد یافت. به این عمل Failback گفته میشود.
ویندوز سرور 2003 دو نوع کلاسترینگ را پشتیبانی میکند:

1. سرورهای کلاستر
2. تعادل بارگذاری شبکه Network Load Balancing

سرورهای کلاستر بیشتر برای برنامه هایی به کار میروند که مدت زمان زیادی را در حافظه میمانند و یا تعویض داده ی بیشتری را انجام میدهند که به آنها Stateful Applications گفته میشود که میتوان سرورهای بانک اطلاعاتی نظیر Microsoft SQL یا سرورهای ایمیل مایکروسافت را نام برد. سرورهای در کلاسترینگ نود نیز نامیده میشوند و همگی نود ها از یک سری برنامه و داده ی خاص و دیگر امکانات شبکه استفاده میکنند. لذا هر کدام از نودها میتوانند درخواست های کلاینت را انجام دهند. تنظیم کردن نود که بتواند فعال Active یا غیرفعال Passive ( برای مواقع ضروری فعال شود) دست خود شماست.
برای مثال یک سرور کلاستر ساده میتواند شامل دو نود باشد که هر دو باید ویندوز سرور2003 و Microsoft SQL را در حالت اجرا داشته باشند و هر دو به NAS شبکه دستری داشته باشند که اطلاعات مربوط به بانک داده را درون خودش ذخیره کرده است. یکی از نود ها باید Active و دیگری باید Passive باشد. در حالت معمول نود فعال به صورت عادی به کار خود ادامه میدهد به درخواست های کلاینت ها پاسخ میدهد و اطلاعات را انتقال و یا دریافت میکند اما اگر نود فعال به هر دلیلی از سرویس خارج شد نود غیرفعال به سرعت از سرویس خارج شدن نود فعال را تشخیص میدهد و خود فعال میشود و به درخواست های کلاینت ها رسیدگی میکند. البته این روش یک مشکل عمده دارد که در این روش Ative/Passive همیشه یکی از سرورها بی کار میباشد و تا زمانی که سرور اول از سرویس خارج نشود کاری انجام نمیدهد اما بسته به نوع برنامه میتوان سرورکلاستر ها را طوری طراحی کرد که بتوانند کارهای مربوط به برنامه و وظایف را بین یکدیگر تقسیم کنند و بازدهی سرویس را بالا ببرند.


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



Network Load Balancing
Network Load Balancing
نوعی از کلاسترینگ میباشد که هم قابلیت دستیابی بالاتر و راحت تر و هم ظرفیت بیشتری دارد. NLB برای برنامه هایی طراحی شده است که وابستگی داده ای کمتری دارند و این داده ها کمتر تغییر میکنند که گاهاً حتی ممکن است فقط خواندنی نیز باشند و زمانی زیادی را در حافظه باقی نمانند. به این برنامه ها Stateless گفته میشود و معمولاً دارای پروتکل FTP و سرورهای VPN هستند. درخواست هر کلاینت به برنامه های Stateless یک فعل و انفعال جدا محسوب میشود پس میتوان درخواست ها را در میان تمامی سرورها توزیع کرد تا بتوان لد مورد پردازش برنامه ها را دارای تعادل کرد.
به جای داشتن یک منبع اطلاعات؛ در یک NLB کلاستر، تمامی سرورهای برای خود منبع اطلاعاتی یکسانی دارند و همگی نیز از نوع سرورهای فعال هستند. نرم افزار کلاسترینگ درخواست کلاینت را بین نودها توزیع میکند. هر کدام از نود ها که درخواست های خود را مستقلانه پردازش میکند از اطلاعات محلی خود استفاده میکند و هنگامی که یکی از سرورها خراب شود بقیه ی سرورها مقداری از درخواست های ارسال شده به سرور خراب را برمیدارند و اجرا میکنند.


هنگامی که یک سرور به فرض یک رکوردی را دریافت میکند و آن را در دیتابیس ذخیره میکند بقیه ی سرورها اجازه ی دسترسی به آن رکورد را ندارند تا زمانی که بقیه ی سرورها نیز آن رکورد را در دیتابیس خود ذخیره کنند.هنگامی که یک سرور به فرض یک رکوردی را دریافت میکند و آن را در دیتابیس ذخیره میکند بقیه ی سرورها اجازه ی دسترسی به آن رکورد را ندارند تا زمانی که بقیه ی سرورها نیز آن رکورد را در دیتابیس خود ذخیره کنند.
NLB علاوه بر دسترسی بالاتر و راحتی بیشتر قابلیت بزرگتر شدن مقیاس را نیز دارد. هنگامی که تعداد درخواستها بیشتر میشود تنها کاری که میشود این است تعداد سرورهای کلاستر را بیشتر کرد که در این صورت هر سرور تعداد درخواست کمتری را پردازش میکند. تمامی نسخه های ویندوز 2003 برای هر کلاستر 32 سرور را پشتیبانی میکنند.


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

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

برای کلاستر بندی باید ابتدا شبکه آماده شود وسپس نصب sql و بعد اقدامات نهایی که در لینک زیر گام به گام آموزش داده شده است:
http://www.ipsure.com/blog/2010/clustering-ms-sql-server-2008-r2-on-vmware-virtual-windows-server-2008-r2-1/