راه‌اندازی آسان Proxmox، بخش ۵: خوشه و دسترس‌پذیری بالا

تا اینجای مجموعه با یک سرور تنها کار کردیم. برای استفاده‌ی جدی و سازمانی، معمولاً چند سرور را کنار هم می‌گذاریم تا یک خوشه (Cluster) بسازند. این بخش، اولین قدم به سمت زیرساخت سازمانی است: ساخت خوشه، مفهوم کورام (quorum)، و دسترس‌پذیری بالا (High Availability).

این پنجمین بخش از مجموعه‌ی Proxmox است. بخش‌های پیشین: نصب، ساخت ماشین، ذخیره‌سازی و پشتیبان‌گیری و شبکه.

خوشه چیست و چرا به آن نیاز داریم؟

خوشه یعنی چند سرور Proxmox که با هم یک سیستم واحد را می‌سازند. مهم‌ترین سودها:

  • مدیریت یک‌جا. همه‌ی گره‌ها را از یک پنل واحد می‌بینید و مدیریت می‌کنید.
  • پیکربندی مشترک. تنظیمات از طریق یک فایل‌سیستم خوشه‌ای (pmxcfs) روی همه‌ی گره‌ها همگام می‌ماند.
  • مهاجرت زنده. می‌توانید یک ماشین در حال اجرا را بدون خاموشی از یک گره به گره‌ی دیگر ببرید.
  • دسترس‌پذیری بالا. اگر یک گره از کار بیفتد، ماشین‌های مهم روی گره‌ی دیگر دوباره روشن می‌شوند.

پیش‌نیازها

  • دست‌کم دو گره، ولی برای کورام سالم سه گره پیشنهاد می‌شود (کمی جلوتر توضیح می‌دهیم چرا).
  • یک شبکه‌ی جدا و کم‌تأخیر برای ارتباط خوشه (corosync). این ترافیک به تأخیر حساس است، پس بهتر است از شبکه‌ی پرترافیک ماشین‌ها جدا باشد.
  • زمان همگام روی همه‌ی گره‌ها (NTP).

در این آموزش سه گره با نام‌های pve، pve2 و pve3 داریم که روی یک شبکه‌ی خوشه‌ی جدا (10.20.20.0/24) با هم حرف می‌زنند.

گام ۱: ساخت خوشه

خوشه را روی گره‌ی اول می‌سازیم. در پنل به Datacenter > Cluster بروید و روی «Create Cluster» بزنید؛ یک نام و شبکه‌ی خوشه انتخاب کنید. اگر خط فرمان را ترجیح می‌دهید، یک دستور کافی است:

pvecm create obsernetics-lab --link0 10.20.20.11
ساخت خوشه با دستور pvecm create
ساخت خوشه روی گره‌ی اول. Proxmox کلید احراز هویت corosync را می‌سازد و پیکربندی خوشه را می‌نویسد.

گزینه‌ی --link0 مشخص می‌کند corosync از کدام شبکه استفاده کند. بعد از ساخت، در پنل بخش Cluster اطلاعات خوشه را می‌بینید.

گام ۲: افزودن گره‌ها

برای هر گره‌ی دیگر، در گره‌ی اول روی «Join Information» بزنید و رشته‌ی نمایش‌داده‌شده را کپی کنید؛ سپس روی گره‌ی جدید در «Join Cluster» آن را بچسبانید. با خط فرمان هم می‌شود:

pvecm add pve.obsernetics.lab --link0 10.20.20.12

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

پنل Cluster با سه گره
بخش «Cluster» در پنل: نام خوشه، تعداد گره‌ها و فهرست گره‌ها همراه با آدرس شبکه‌ی خوشه.
درخت گره‌های خوشه در پنل
هر سه گره (pve، pve2، pve3) زیر یک Datacenter و از یک پنل قابل مدیریت‌اند.

کورام: چرا تعداد فرد بهتر است؟

خوشه برای اینکه تصمیم بگیرد باید «کورام» داشته باشد، یعنی اکثریت گره‌ها با هم در ارتباط باشند. این کار جلوی حالت خطرناک split-brain را می‌گیرد که در آن دو بخش جداشده هر کدام فکر کنند رئیس‌اند.

با سه گره، کورام یعنی حداقل دو گره سالم. پس اگر یک گره بیفتد، دو گره‌ی دیگر همچنان اکثریت دارند و خوشه کار می‌کند. با دو گره، از دست دادن یک گره یعنی از دست دادن اکثریت؛ برای همین تعداد فرد (۳، ۵، ...) توصیه می‌شود. برای خوشه‌های دوگره‌ای می‌توان یک شاهد سبک به نام QDevice اضافه کرد.

خروجی pvecm status و کورام
دستور pvecm status: خوشه با سه رأی، کورام لازم ۲، و وضعیت «Quorate». هر سه گره عضو هستند.

دسترس‌پذیری بالا (HA)

حالا که خوشه کورام دارد، می‌توانیم HA را فعال کنیم. HA یعنی اگر گره‌ای که یک ماشین مهم روی آن است از کار بیفتد، آن ماشین به‌طور خودکار روی گره‌ی سالم دیگری دوباره روشن شود.

یک ماشین را به‌عنوان منبع HA اضافه می‌کنیم: در Datacenter > HA روی «Add» بزنید و ماشین را انتخاب کنید (اینجا VM 100).

افزودن منبع HA برای یک ماشین
افزودن ماشین به مدیریت HA. می‌توانید تعداد دفعات تلاش برای ری‌استارت و جابه‌جایی را هم تعیین کنید.

Proxmox چطور «master» را انتخاب می‌کند؟

سازوکار HA در Proxmox دو بخش دارد. روی هر گره یک مدیر محلی به نام LRM (Local Resource Manager) اجرا می‌شود که کارهای واقعی مثل روشن و خاموش کردن ماشین‌ها را انجام می‌دهد. در سطح خوشه هم یک CRM (Cluster Resource Manager) وجود دارد که یکی از گره‌ها به‌عنوان master آن انتخاب می‌شود و تصمیم می‌گیرد هر ماشین کجا اجرا شود.

انتخاب master با گرفتن یک قفل روی فایل‌سیستم خوشه‌ای انجام می‌شود و به کورام وابسته است؛ یعنی فقط وقتی اکثریت برقرار باشد یک master معتبر داریم. اگر گره‌ی master از کار بیفتد، گره‌ی دیگری قفل را می‌گیرد و master می‌شود. در خروجی زیر می‌بینید که گره‌ی pve به‌عنوان master فعال است:

خروجی ha-manager status و انتخاب گره master
دستور ha-manager status: گره master فعال است، هر گره یک LRM دارد، و ماشین vm:100 تحت مدیریت HA است.

در پنل هم همین وضعیت را می‌بینید: منبع HA با وضعیت خود، گره‌ی میزبان، و سیاست ری‌استارت و جابه‌جایی.

پنل HA با منبع مدیریت‌شده
پنل «HA»: وضعیت کورام، گره master و فهرست منابع تحت مدیریت HA.

HA بدون ذخیره‌سازی مشترک کامل نیست

برای اینکه یک ماشین واقعاً روی گره‌ی دیگر بالا بیاید، دیسک آن باید روی یک ذخیره‌سازی مشترک باشد که همه‌ی گره‌ها به آن دسترسی دارند. با دیسک محلی، گره‌ی دیگر به داده‌ها دسترسی ندارد. ذخیره‌سازی مشترک موضوع بخش بعد است.

مهاجرت زنده

یکی از زیباترین قابلیت‌های خوشه، مهاجرت زنده است: می‌توانید یک ماشین در حال اجرا را بدون قطعی به گره‌ی دیگر ببرید، مثلاً برای نگه‌داری سخت‌افزار. این قابلیت هم مثل HA برای بهترین نتیجه به ذخیره‌سازی مشترک نیاز دارد تا دیسک ماشین لازم نباشد کپی شود.

جمع‌بندی و بخش بعد

در این بخش از یک سرور تنها به یک خوشه‌ی سه‌گره‌ای رسیدیم، با کورام آشنا شدیم و دیدیم HA چطور با انتخاب یک گره master، ماشین‌های مهم را زنده نگه می‌دارد. تکه‌ی گمشده برای کامل شدن این تصویر، ذخیره‌سازی مشترک است.

در بخش بعد سراغ Ceph می‌رویم: یک ذخیره‌سازی توزیع‌شده و مشترک که مهاجرت زنده و HA واقعی را ممکن می‌کند.

بخش‌های این مجموعه

← بازگشت به وبلاگ