Redhat Cluster (بخش اول: اجزای کلاستر)

Redhat Cluster (بخش اول: اجزای کلاستر)



رایانش خوشه‌ای یا کلاستر نوعی از سیستم‌های پردازش موازی و توزیع شده است، که متشکل از مجموعه‌ای از کامپیوترهای مستقل می‌باشد که تمام این گره‌ها در ارتباط تنگاتنگ با کل سیستم هستند و به عنوان یک منبع یکپارچه کار می‌کنند.

 

اجزای کلاستر به این شرح میباشند:

 

redhat cluster

 

  • GFS یا Global File System

این فایل سیستم به طور ویژه برای محیط کلاستری طراحی شده است. با استفاده از این فایل سیستم چندین سیستم قادر خواهند بود تا به طور همزمان به عمل read/write بر روی یک Storage مشترک داشته باشند.

 

  • CLVM یا Cluster Logical Volume Management

همان LVM معمولی است با این تفاوت که برای محیط کلاستر قابلیتهایی در دستورات اضافه شده است بدان صورت که اگر بر روی یکی از سیستمها LVMها بر روی استوریج مشترک تغییر کنند،‌ اطلاعات در تمام نودها به هنگام خواهد شد.

 

  • DLM یا distributed Lock Management

که یک قفل توزیع شده در محیط کلاستر میباشد که بقیه اجزای کلاستر از آن برای مدیریت دسترسیها به منابع مشترک استفاده میکنند. GFS از آن برای هماهنگی دسترسیها به FileSystem Metadata بر روی استوریج مشترک استفاده میکند و CLVM برای هماهنگی به‌روزرسانیها اطلاعات LVM Volumes و volume groups بین نودهای کلاستر استفاده میکند.

 

  • CMAN یا Cluster MANagement

که وظیفه مدیریت کلاستر را بر عهده دارد. Cman یک مدیریت توزیع شده است و با مانیتور کردن تعداد نودهای فعال از مقدار quorum (حد نصاب) محافظت میکند. کنترل عضویت (join) با مانیتور کردن پیامهای نودهای کلاستربر عهده cman است. در صورت عضویت و یا خروج هر یک از نودها، cman موضوع را به دیگر سیستمها جهت انجام کارهای مربوطه اطلاع میدهد. به عنوان مثال وقتی که نود A به کلاستری که نودهای b و c د رآن هستند ملحق میشود و بخواد فایل سیستمی را مونت کند که توسط دوتای دیگر در حال استفاده میباشد نیاز به یک Journla و Lock دارد، همچنین چنانکه نود در محدوده مشخصی به پیامها پاسخ ندهد CMAN آنرا از کلاستر حذف میکند و بقیه اجزا ترک نود را اطلاع میدهد که هر قسمت وظیفه محوله را انجام خواهد داد. مثلا قسمت fence نود مورد نظر را دور خواهد انداخت. همچنین زیرسیستم GFS تمام دسترسیها به استوریج مشترک را متوقف میکند و بعد از اطمینان از انجام موفقیت آمیز عمل fence عمل recovery را انجام میدهد.

 

  • CCS یا Cluster Configuration System

مدیریت تنظیمات کلاستر را برعهده دارد. این سیستم کنترل میکند که فایل کانفیگ (/etc/cluster/cluster.conf/) در تمام نودها به روز باشد و در صورت به روزرسانی در تمامی نودها اعمال میکند. CMAN از طریق CCS به فایل تنظیمات دسترسی دارد.

 

  • Fencing

عبارت است از قطع اتصال نود از استوریج مشترک در کلاستر.fence عمل IO را از استوریج مشترک قطع میکند که نتیجه ان اطمینان از صحت اطلاعات است.

 

  • مدیریت HA در کلاستر

در کلاستر یک سرویس در صورت fail شدن به نود دیگری منتقل میشود و یا اینکه در صورتیکه یکی از نودهای کلاستر fail شد تمامی سرویسهای موجود در آن به سیستم دیگری منتقل میشوند. این عمل توسط سرویس rgmanager در کلاستر انجام میشود. در redhat کلاستر، یک سرویس مجموعه‌ای از چند resource است که به صورت جداگانه تعریف و در قالب سرویسها سازماندهی میشوند. مکان قرارگیری تمامی این موارد فایل تنظیمات کلاستر /etc/cluster.cluster.conf/ میباشد. جهت فراهم آوردن امکان انتقال سرویس در نودها در صورت fail شدن میبایست سرویس را به یک failover Domain منتسب کرد. یک Failover Domain زیرمجموعه‌ای از نودهای کلاستر است که برای اجرای سرویس یا مجموعه‌ مشخصی از سرویسها در نظر گرفته شود. در درون Failover Domain امکان اولویت دهی به نودها وجود دارد که مشخص کننده اولویت سیستمها در انتقال سرویسها میباشد. در مدیریت HA یک سرویس در آن واحد فقط میتواند بر روی یک نود در حال اجرا باشد.

 

  • دستورات خط فرمان مدیریت کلاستر

۱- دستور ccs_tool: مدیریت فایل تنظیمات مانند به‌روزرسانی

۲- دستور cman_tool: مدیریت کلاستر مانند ملحق شدن به و خارج شدن از کلاستر

۳- دستور fence_tool که ابزار خط فرمان برای fence کردن دیوایسها است.برای هر ابزار،‌ دستور خاصی نیز وجود دارد که میتواند مختص آن ابزار مورد استفاده قرار گیرد. به عنوان مثال برای ilo دستور fence_ilo وجود دارد که طریقه استفاده از آن به این شرح است:

 fence_ilo -a ip-address -l login-name -p password -o off -v

 

این دستور سیستم مورد نظر را خاموش خواهد کرد. -o مشخص کننده نوع عمل است که میتوان مقادیر on و status را استفاده کرد. (توجه: fence_ilo به بسته pyOpenSSL نیاز دارد. این دستور از اتصال ssl به سیستم استفاده میکند)

۴- دستور clustat که نشاندهنده وضعیت کلاستر شامل وضعیت نودها و وضعیت سرویسهای کلاستر میباشد. در مورد سرویسها مشخص میکند که هر سرویس در حال حاضر بر روی کدام سرویس در حال اجرا میباشد. دستور clustat -s servcie_name وضعیت سرویس ذکر شده را نشان میدهد. مقدار برگشتی (?$) در صورت در حال اجرا بودن صفر و در غیرانصورت غیر صفر خواهد بود.

۵- دستور cluscvadm مدیریت سرویسهای موجود در کلاستر مانند اجرای بر روی نود خاص،‌ انتقال سرویس (relocate) از یک نود به نود دیگر، متوقف کردن سرویس و ... میباشد.

 

  • آدرس MultiCast

RedHat Cluster برای تبادل اطلاعات مابین نودها از پیامهای MultiCast استفاده میکند.

آدرس MultiCast یک شناسه برای یک گروه هاست میباشد که به یک MultiCast Group پیوسته‌اند. آدرس دهی MultiCast میتواند در لایه ۲ (LinkLayer) و لایه ۳ (Internet) انجام شود.

چهاربیت اول آدرسهای Multicast برابر 1110 میباشد که از 244.0.0.0/4 شروع میشود. محدوده شناسه‌های MutiCast از 244.0.0.0 تا 239.255.255.255 میباشد.

آدرس 244.0.0.0/24 برای MutiCast در LAN در نظر گرفته شده است. بدان معنی که پیامی که با این شناسه ارسال شود برای تمام سیستمهای درون LAN ارسال خواهد شد.

محدوده 239.0.0.0/8 برای فعالیتهای محلی و درون سازمانی در نظر گرفته شده است که RedhatCluster نیز از این محدوده استفاده میکند.

 

  • سرویسها در کلاستر

چنانچه بیان شد واحد مدیریت در کلاستر سرویس است. تمام مفاهیم HA بر روی سرویسها پیاده‌ میشوند. یک سرویس مجموعه‌ای از چند Resource است که به صورت جداگانه تعریف و درقالب سرویسها سازماندهی میشوند.

در هنگام تعریف سرویس میبایست Recovery Policy برای هر کدام مشخص شود. Recovery Policy سیاست برخورد با سرویس در صورت fail شدن سرویس است. سه مقدار برای این مورد قابل تنظیم است :

۱- Disabled: در صورت fail شدن سرویس، سرویس راه‌اندازی مجدد نخواهد شد.

۲- Relocate: در صورت fail شدن سرویس، سعی میکند که سرویس را بر روی نود دیگری restart کند.

۳- Restart: در صورت fail شدن سرویس، سعی میکند اجزای fail شده را بر روی نود فعلی restart کند قبل از اینکه آنها را relocate کند. در صورت انتخاب این مقدار، مقادیری همچون میزان restart کردن بر روی نود فعلی قبل از relocate کردن نیز باید مشخص گردند.

مفهوم دیگری در هنگام تعریف سرویسها وجود دارد به نام Exclusive که در صورت انتخاب این پارامتر برای یک سرویس، سرویس فقط بر روی نودی اجرا خواهد شد که سرویس دیگری بر روی آن در حال اجرا نباشد. این پارامتر برای سرویسهایی که تغییرات بنیادی در نود ایجاد میکنند (مانند تغییر hostname) مناسب است.

 

  • نصب کلاستر

پیش‌نیازهای استفاده از کلاستر :

۱- غیر فعال کردن selinux (از طریق فایل کانفیگ)

۲- غیرفعال کردن acpi :

 # chkconfig --del acpid

 

۳- بازکردن پورتها و یا غیر فعال کردن iptables

پکیجهای مورد نیاز جهت نصب به این شرح است:

 # yum groupinstall Clustering # yum install lvm2-cluster sg3_utils gfs2-utils cmirror gfs-utils kmod-gfs kmod-cmirror # yum install pyOpenSSL