این سیاست قدیمی ترین و شاید سخت ترین مورد از نظر مفهومی می باشد زیرا الگوریتم و مکانیزم کار پیچیده تری دارد که کمتر از بقیه سیاست ها درک شده است. اما سعی ما بر این است که در ساده ترین حالت آن را توضیح دهیم. هنگام پیکربندی کلاستر در قسمت Host Failure Cluster Tolerates، مشخص می کنیم کلاستر تحمل از دست رفتن چه تعداد از هاست ها را داشته باشد. به عنوان مثال اگر در یک کلاستر با چهار هاست این عدد یک انتخاب شود، به این معنی است که هر گاه یکی از هاست ها از دست رفت (فرقی نمی کند کدام هاست چرا که نمی توان پیش بینی کرد که در کدام زمان چه هاستی ممکن است از دست برود) سه هاست دیگر بتوانند تمام ماشین های مجازی کلاستر را روشن نگه دارند. این عدد می تواند بین یک تا یکی کمتر از تعداد هاست های کلاستر باشد.
این سیاست بدترین سناریو ممکن را برای Failover در نظر می گیرد (مثلاً از دست رفتن هاستی که بیشتر میزان منابع را دارد) و این کار را با استفاده از مفهومی به نام Slot انجام می دهد. Slot از دو جز تشکیل شده است:
1- Memory
2- CPU
به عبارتی دیگر Slot یک واحد منطقی از منابع CPU و Memory برای روشن کردن ماشین های مجازی می باشد. این مکانیزم به این صورت عمل می کند:
مرحله اول: اندازه Slot محاسبه می شود. HA اندازه Slot برای Memory را از بیشترین حافظه رزرو شده و بیشترین Memory Overhead (حافظه ای که VMKernel برای روشن کردن و کنترل ماشین مجازی مصرف می کند) ماشین های مجازی روشن در کلاستر انتخاب می کند. پس اگر در کلاستر شما از بین تمام ماشین های مجازی بیشترین میزان RAM رزرو شده 8GB باشد، اندازه (Memory Slot) ، 8GB به اضافه بیشترین مقدار Memory Overhead خواهد بود. اگر هیچ یک از ماشین ها رزرو نداشته باشند، اندازه Slot به میزان بیشترین Memory Overhead در بین ماشین های مجازی در نظر گرفته می شود.
میزان Memory Overhead برای یک ماشین مجازی
در محیط vCenter با انتخاب Cluster -> Monitor -> vSphere HA -> Summary -> Advanced Runtime info می توانید اندازه Slot ها را مشاهده کنید.
Slot Size زمانی که هیچ ماشین مجازی روشن نیست معنی ندارد
Slot Size زمانی که هیچ رزروی برای ماشین های کلاستر وجود ندارد
اندازه Slot ها زمانی که 1024MB بیشترین میزان رزرو شده برای RAM در ماشین های مجازی داخل کلاستر است
(Memory Slot Size = Max Reservation + Max Overhead)
برای CPU نیز بیشترین مقدار رزرو شده بر روی ماشین های مجازی روشن درون کلاستر در نظر گرفته می شود و در صورت عدم رزرو منابع، مقدار پیش فرض 32MHz به عنوان اندازه CPU Slot انتخاب می گردد. اگر شما یک ماشین مجازی با 8vCPU و 2GHz رزرو داشته باشید مقدار 2GHz برای CPU slot در نظر گرفته خواهد شد.
اندازه Slot ها زمانی که 2000MHz بیشترین میزان رزرو شده برای CPU در ماشین های مجازی داخل کلاستر است
در مرحله بعدی Admission Control تعداد Slot هایی که در کلاستر موجود می باشند را محاسبه می کند.
مرحله دوم: در این مرحله HA Admission Control به تمام منابع نگاه می کند و تعداد کل Slotهای حافظه در هر هاست را بدست می آورد. تعداد Slot ها از طریق تقسیم مقدار حافظه کلی موجود بر اندازه Memory Slot بدست می آید و همین عمل برای CPU نیز انجام می شود و کمترین عدد (از بین اندازه CPU Slot و Memory Slot) به عنوان تعداد کل Slot های Host در نظر گرفته می شود. به عنوان مثال زمانی یک هاست 6GB رم و دو عدد CPU Core با سرعت پردازش 3GHz داشته باشد و همانند مثال بالا CPU Slot = 2000MHz و Memory Slot = 1095MB باشد، تعداد کل Slot های این هاست به روش زیر محاسبه می شود:
Total Memory = 6000 MB
Memory Slot Size = 1095 MB
Total Memory Slot = Total Memory ÷ Memory Slot Size = 6000 ÷ 1095 = 5.47
عدد به دست آمده به سمت پایین رند می شود بنابراین هاست ما 5 عدد Memory Slot خواهد داشت.
Total CPU Cores = 2
CPU Speed = 3000 MHz
Total CPU = 2 Core * 3000 MHz = 6000 MHz
CPU Slot Size = 2000 MHz
Total CPU Slot = Total CPU ÷ CPU Slot Size = 6000 ÷ 2000 = 3
تعداد CPU Slot برای این هاست عدد 3 خواهد بود. Admission Control از بین این اعداد یعنی 5 برای Memory Slot و 3 برای CPU Slot، کمترین عدد یعنی 3 را در نظر می گیرد.
بنابراین اگر کلاستر ما چهار عدد هاست با مشخصات گفته شده یعنی 6GB RAM و دو عدد CPU با سرعت پردازش 3000MHz داشته باشد، تعداد Slot هر هاست 3 و تعداد کل Slot ها در کلاستر عدد 12 خواهد بود.
حال به شکل های زیر نگاه کنید تا نتیجه محاسبات انجام شده را با شرایط واقعی مقایسه کنیم:
کلاستر دارای چهار Host می باشد
هر Host دارای 6GB RAM و 6GHz CPU می باشد
قسمت Resource Reservation در کلاستر ظرفیت کلی برای CPU را 24.00GHz نشان می دهد که با توجه به وجود چهار هاست با ظرفیت 6GHz CPU کاملا درست و منطقی باشد. نکته قابل تأمل در شکل بالا قسمت Total Reservation Capacity می باشد که مقدار 13.92GHz را نشان می دهد. سوال اینجاست که چرا این عدد که کل منابع قابل رزرو شدن را به ما نشان می دهد کمتر از ظرفیت کلی کلاستر است؟ یعنی نمی توان کل منابع کلاستر را رزرو کرد؟ پاسخ این سوال خیر است. زیرا همیشه مقداری از منابع (CPU, RAM) برای Host و VMKernel رزرو شده اند و مابقی منابع قابل دسترس برای ماشین های مجازی خواهد بود. حال جمله ای که در ابتدای مقاله قسمت اول آمده است را مرور کنیم:
” Admission Control فضای مورد نیاز برای Failover را بر اساس منابع در دسترس (Available) محاسبه می کند”
“منابع در دسترس (Available Resources) پس از محاسبه و کم کردن overhead مجازی سازی از مقدار کل منابع بدست می آید”
بنابراین منابع در دسترس CPU برای کلاستر ما 13.92GHz خواهد بود.
نگاهی به منابع Memory در کلاستر بیاندازیم:
همانطور می بینید کل RAM در کلاستر برای چهار هاست که هر کدام 6GB RAM دارند معادل 24.00GB خواهد بود. ولی میزان منابع قابل رزرو کردن 11.23GB می باشد.
Admission Control هنگام محاسبه کل Slot های موجود در کلاستر به میزان منابع قابل استفاده یعنی 13.92GHz برای CPU و 11.23 GB برای Memory نگاه می کند. بنابراین فرمول محاسبه Slot در شرایط واقعی در مثال ما به شرح زیر می باشد:
Total Available Memory = 11.23 GB ≅ 11499.52 MB
Total Available Memory per Host ≅ 11499.52 ÷ 4 ≅ 2874.88 MB
Memory Slot Size = 1095 MB
Total Memory Slot = Total Available Memory ÷ Memory Slot Size = 2874.88 ÷ 1095 ≅ 2.62
در فرمول بالا چون هر چهار Host فیزیکی دارای سخت افزار و منابع یکسان هستند، می توان کل منابع در دسترس کلاستر را به چهار تقسیم کرد تا میزان تقریبی منابع در دسترس هر Host بدست آید. در شرایط واقعی Admission Control این کار را به صورت اتوماتیک انجام می دهد و نیازی به محاسبات دستی نخواهد بود. این عدد به سمت پایین رند می شود پس عدد 2 تعداد Memory Slot برای هر Host می باشد.
Total Available CPU = 13.92 GHz ≅ 14254.08 MHz
Total Available CPU per Host ≅ 3563.52 MHz
CPU Slot Size = 2000 MHz
Total CPU Slot per Host = Total Available CPU ÷ CPU Slot Size = 3563.52 ÷ 2000 ≅ 1.78176
Admission Control این عدد را نیز به سمت پایین رند می کند پس تعداد CPU Slot برای هر Host عدد 1 خواهد بود.
در انتها از بین مقدار 2 برای Memory Slot و 1 برای CPU Slot، عدد 1 به عنوان کل Slot های هر Host در نظر گرفته می شود زیرا Admission Control بدترین سناریو را در نظر می گیرد.
در نتیجه این کلاستر که دارای چهار Host یکسان می باشد، چهار Slot خواهد داشت:
بیایید نگاهی به منابع ماشین های مجازی بیاندازیم و ببینیم هر ماشین مجازی چند Slot را برای روشن شدن خود مصرف می کند. در این مثال ما دو ماشین مجازی در کلاستر داریم که تنظیمات آنها به صورت زیر می باشد.
اولین ماشین (VM1) دارای 2vCPU و 8192MB RAM می باشد که 2000MHZ از CPU و 1024MB از RAM برای آن رزرو شده است.
ماشین مجازی دوم (VM2) دارای 2vCPU و 256MB RAM می باشد و از Reservation استفاده نکرد است.
طبق محاسبات بالا هر کدام از ماشین ها برای روشن شدن نیاز به یک Slot دارند. چرا که Slot Size برای CPU معادل 2000MHZ می باشد پس مشخصاً VM1 از یک Slot استفاده می کند، VM2 نیز که رزروی ندارد هم همینطور چون حداقل Slot مورد نیاز برای روشن کردن یک ماشین مجازی، یک Slot می باشد. اگر نگاهی دوباره به وضعیت کلاستر بیاندازیم خواهیم دید که از 4 عدد Slot موجود یک عدد برای Failover ذخیره شده است چون در Admission Control، تنظیم Host failures cluster tolerates را عدد یک قرار دادیم:
در شکل بالا یک Slot برای failover رزرو شده است و با روشن کرد دو ماشین مجازی، 2 اسلات استفاده شده، یک اسلات باقی مانده نیز با روشن کردن یک ماشن جدید استفاده می شود و زمانی که تعداد Available Slots به صفر برسد، Admission Control اجازه روشن کردن ماشین های مجازی جدید را نمی دهد.
هیچ اسلاتی در کلاستر باقی نمانده و Admission Control اجازه روشن کردن ماشین مجازی جدید را نمی دهد