فرمت فایل : word(قابل ویرایش)
تعداد صفحات:36
چکیده:
Redundancy تحمل خرابی یا Fault telurance : مفهومی در شبکه می باشد که با استفاده از آن می توان نسبت به بسیاری از مسائل نظیر Hard ها خیالمان راحت باشد.
مثلاً اگر یک PC داشته باشیم که روی آن یک HardIde داشته باشیم که روی این Hard اطلاعاتی قرار دارد، در اثر شوک الکتریکی که به این هارد وارد می شود و یا نوسانات برق، این هارد می سوزد و حال اگر back up ای هم گرفته نشده باشد، data از بین خواهد رفت.
اگر این مقدار ریسک پذیری را بخواهیم برای، server ها داشته باشیم، بسیار خطرناک خواهد بود. اینجاست که نیاز مبرمی برای استفاده از تکنیک های Redan dancy به میان می آید.
مثلاً Redandancy , Technology در مورد هارد (مثلاً در رایورز) تکنولوژی به نام raid می باشد.
raid : چند هارد را با هم به عنوان یک هارد به کامپیوتر معرفی می کند، اولاً فقط روی هاردهای اسکازی پیاده سازی می شود.
دارای تعداد زیادی pin (مثلاً 50 تا) و به کارت (کنترلی اسکازی متصل می شود. اسکازی
معمولاً
مادربوردهای سرور base اکثراً چند باس اسکازی، on board دارند. Ide
Scazy base server
IDE base client
اگر هاردهای IDE مدت زیادی روشن بمانند و خاموش نشوند، می سوزد (حتی در اثر زیاد روشن ماندن بدون هیچ نوسانی) scazy ها اگر به یکباره برق برود و خاموش شوند، cluster گم شده بسیار کم در آنها به وجود می آید، اما IDE ها بسیار زیاد پس در جایی که محیطی عملیاتی است و در حال کار کردن است حتماً scazy باید کار کرد و IDE پی مورد است.
چند Hard Scazy را به یک کنترلر raid متصل می کنند، در مادربوردهای حرفه ای، raid هم می تواند unboar باشد.
raid : چند هارد موازی با هم به یک کنترلر متصل می شوند، که سیستم عامل مجموعة این هاردهایی را که داریم را یک هارد می بیند، یعنی اگر در device manager ببینیم، یک disk می بینیم اما این disk یک آرایه ای از disk هاست و مجموعه ای از دریک ها می باشد. همانطور که بیان شد، raid نوعی از تکنولوژی redandency است، که cluster نیز یک نوع تکنولوژی Redandancy (تحمل خرابی) می باشد. با سوختن یک هارد مشکلی در شبکه پیش نیاید. پس روش دیگر برای تحمل خرابی clustering است که در سطحی بالاتر از raid قرار دارد.
انواع Raid :
mirror کردن هاردها، یعنی 2 هارد را با هم استفاده می کنیم، هر چه در هارد اول نوشته می شود، عیناً در هارد دوم کپی می شود یعنی آینة دیگری است و محتویات اولی و دومی دقیقاً یکی است.
Mirror Raid
مزیت استفاده از این raid, level این است که اگر یکی از هاردها سوخته، می توان از دیگری استفاده کرد. اما مشکل آن این است که 50% ظرفیت و هزینه ها به هدر رفته است.
Level 1 :
مزیت mirror خواندن سریع: چون همزمان از 2 تا هارد می خواند.
مشکل mirror نوشتن کند: چون همزمان روی هارد می نویسد.
Raid : Redandancy Array of inextensive disk
کلاً mirror , performance خوب است.
پس از raids , raid1 استفاده بسیاری می شود.
Raid 5 :
حداقل سه هارد می خواهیم، raid5 پیشرفته ترین و گرانترین نوع raid هاست. چون کارت کنترلر که برای raid می باشد بسیار گران است، پس حداقل 3 تا هارد Scazy می خواهیم، raid می گوید که هرگاه، هر کدام از این هاردها (که حداقل 3 تا هستند) سوخت، هارد سوخته را از array جدا کرده، هارد جدید را جایگزین کنید و خود raid ، اطلاعات را روی آن بازیابی خواهد کرد، بدون اینکه، هیچ اتفاقی بیفتد. پس این روش قطعاً تحمل خرابی support می کند. از تکنولوژی parrity استفاده می کند.
اگر تعداد فردی یک باشد. زوج
اگر تعداد زوجی یک باشد. فرد
در این نوع raid ، چند hard را قرار می دهند و از آنها script می سازند.
Raid strip
سرعت خواندن و نوشتن strip بسیار زیاد است اما اصلاً امنیت (از نظر تحمل خرابی) ندارد، نحوه عمل آن به این شکل است که بر فرض اگر بخواهیم کلمه strip را بنویسیم و سه هارد داشته باشیم.
پس با سوختن یک هارد، کلیه اطلاعات از بین خواهد رفت.
پس mirror حداقل 2 هارد
strip 2 هارد به بالا
raid5 حداقل 3 هارد
در raid1 ، 50% از دست می دادیم اما در raid ، 30%
دیگر اینکه در mirror اگر هارد بسوزد ممکن است دیگر حتی سیستم عامل بالا نیاید، ممکن است data سر جایش باشد، اما خلل ایجاد شده است.
از هر هاردی آن جدا شده، آدرس ها در آن نگهداری می شود نه خود data گرچه در mirror خود اطلاعات نگهداری می شد، پس چون این آدرس ها در هر سه هارد است و مساوی است پس با سوختن یکی، می توان دوباره آدرس ها را بازیابی نمود.
10 ترکیب raid ترکیب mirror 10 raid
50 0 با 1 raids 1-0
5 0 (پنج صفر)
یعنی 2 تا array داریم که هر کدام از array ها، raid هستند یعنی هر کدام از array ها خودشان با هم mirror هستند.
در جاهایی مثل yahoo یا Nasa که هیچگاه سرویس آنها down نمی شوند، از این روش ها استفاده می شود.
فقط mirror , raid را روی IDE می توان پیاده کرد اما کلاً همواره raid ها روی scazy هستند.
Raid , mirror را به 2 گونه می توان پیاده سازی کرد:
از طریق سیستم عامل این کارها را بر روی این چند هارد انجام می دهند.
Windows 2000 این امکان را دارد.
Basic disk partition بندی می کند.
Dynamic disk volume بندی می کند، حجم volume ها می تواند کم و زیاد شود اما partion را نمی شود، اگر مدل دیسکها dynamic باشد می توان آنها را با هم mirror کرد یا raid کرد اگرچه raid ای که به این شکل ساخته می شود قابل مقایسه با نوع سخت افزاری آن نیست، سخت افزاری، خیلی safe تر است و در ضمن همینکه raid مثلاً S می سازیم، کلی پردازش از سیستم عامل می برد چون باید محاسبه آدرس دهی شود اما خوب از نرم افزاری گران تر است.
چون عموماً خود مادربوردها هم نوع سخت افزاری را support می کنند معمولاً سخت افزاری پیاده سازی می شود و اگر نرم افزاری باشد، بدی دیگری هم دارد، اینکه به سیستم عامل وابسته است و اگر سیستم عامل fait شود، این تکنولوژی نیز قابل استفاده نیست. در حالیکه اگر سخت افزاری باشد. حتی اگر سیستم عامل بپرد هم، فوری سیستم عامل نصب می شود و باز هم خواهد شناخت.
به این خاصیت که می توان یک قطعه را در حین روشن بودن، از source اش جدا کرد، Hotplug گویند.
معمولاً سخت افزارها هم برنامه ای برای مدیریت raid دارند. سیستم عامل آنها را یک hard می بیند. OS های سروی مانند microsoft , Linux , Norell چون خاصیت مخصوص سرورهاست، این خاصیت را support می کنند.
Clusttring :
با پیاده سازی تکنولوژی raid ، تحمل خرابی برای hard ها درست شد اما حال مثلاً اگر سیستم عامل server بالا نیاید. پس هیچ کاری نمی توان انجام داد چون server خاموش است.
فلسفه Clusttring :
اگر یکی از server ها به هر دلیلی نظیر خراب شدن سیستم عامل، قطع شدن شبکه، ویروسی شدن، حملة اینترنتی، از بین رفت. شبکه نخوابد و یک server ای کار من را انجام دهد. به ظاهر بسیار ساده اما پیاده سازی خیلی پیچیده ای دارد.
که کار clusttring می باشد.
پیچیده است زیرا:
فرض کنید server ای دارید که روش SQL server نصب شده است. این server با یک IP خاصی کار می کند، چگونه می توان کاری کرد، که اگر این server از کار افتاد، همان IP مجدداً کار کند، یعنی نمی توان 2 تا IP روی شبکه داشت.
در clustring یک خوشه سرور تعریف می شود. این تعریف در سیستم عامل انجام می گیرد، سیستم عامل ها خود همچنین چیزی را دارند.
چند server تهیه شده اند که با هم خوشه می شدند، هر server ای علاوه بر اینکه یک IP دارد، service clustering هم که در سرویس
windows clustter server 2000 / 2003 فعال می شود، یک مجموعه سرور را در اینجا add می کنی یعنی تعیین می شود که این چند server جزء کلاستری به نام کلاستر 1 مثلاً هستند.
در آنجا یک IP می خواهد یعنی می پرسد IP اش چیست؟
این IP ای که داده می شود برای یک مجموعه سرور است پس کاربر وقتی ping می کند (یعنی با TCP/IP به اینها وصل می شود.) به server خاصی وصل نمی شود، به IP این مجموعه وصل می شود، حال با از کار افتادن یکی از سرورهای این مجموعه، server های دیگر با همان IP جواب می دهند. پس user از، از کار افتادن این سرور، اطلاعی نخواهد داشت و نمی فهمد. البته clustter کردن هر سرویسی نیز متفاوت است، یعنی اینکه بگوییم، server ها با هم، clustter شده اند بی معنی است و باید بگوییم که چه چیزی از server ها را clustter کرده ایم. SQL server آنها را clustter کرده ایم. سرویس file sharing آنها را clustter کرده ایم،
mail server شان را که clustter کردن هر کدام از آنها متفاوت است و شکل خودشان را دارد. یعنی پس از اینکه IP مشترک داده شد و پیکره clusttring بسته شد، حال باید داخل آن را پیکربندی کنیم که کدام سرویس ها و به چه شکل می خواهند پیکربندی شوند. پس فقط IP گرفتن به این معنی نیست که حالا همة server ها، clustter شده اند بلکه مثلاً حالا باید این clostter را به شکلی که SQL را support کند، پیکربندی کرد.
یعنی باید سرویس های مورد نظر را برای کار کردن تحت clusttring تنظیم کرد. فرض کنیم که می خواهیم SQL را clustter کنیم، server ای روی هارد در case داریم، به سرور دیگری که می گوییم که می خواهیم SQL را clusttring کنیم ابتدا باید یک چیز مشترک بین این 2 سرور وجود داشته باشد که بتوان data base را آنجا ذخیره کرد، نمی شود data base هم روی این server ها باشد، چون با خاموش شدن server ، چون data نیز همانجاست پس هیچ چیزی قابل دسترسی نخواهد بود. بنابراین از هاردهای مخصوص external اما به صورت raid استفاده می کنند. بنابراین از external storage device هایی با سرعت های بسیار بالا استفاده می کنند که به این 2 سرور متصل می شوند.
سرویس SQL روی این دو سرور که کلاستر شده اند فعال است، اما data base تعریف شده روی هارد این 2 سرور clusttring شده نیست در همین external hard قرار داده شده که به این 2 سرور وصل است و آنجائی که داریم clusttring را برای SQL تنظیم می کنیم، تعیین می کنیم که base data روی این هارد سوم است. (hard external)
برای بعضی از سرویس ها مثلاً SQL حتماً باید از این روش استفاده کنند وگرنه، اصلاً نمی توانند clusttering را برای آن پیاده سازی کنند.
این هارد هم با پورت های مخصوصی به دو سرور متصل است تا با سرعت بسیار بالائی کار کند.
حال اگر یکی از سرورها down شود، چون SQL سرور دیگری که با clustter , IP کار می کند و data اش هم جای دیگری است وجود دارد پس مشکل پیش نخواهد آمد.
کار این hard clustter فقط ذخیره کردن data است (کامپیوتر نیست.)
raid در حد hard هاست.
کلاستر پیاده سازی، تحمل خطا برای server هاست.
مهمترین اهداف پیاده سازی clusttring :
دسترس پذیری بیشتر
یک server دیگری به array اضافه می شود اما این بار به array کلاسترها مثل هاردها در raid
یعنی سرور جدیدی تحت IP کلاستر قرار خواهد گرفت.
مفهوم clusttring با load balancing مثل خواهر و برادر می مانند / همیشه با هم هستند / یکی دیگر از هدف های بسیار مهم کلاسترینگ علاوه بر تحمل خرابی، همان load balancing است.