افزودن Compute Node به کلاستر OpenStack با Kolla-Ansible: مقیاسپذیری روی سرور اختصاصی
وقتی تعداد ماشینهای مجازی در OpenStack بیشتر میشود، معمولاً نخستین گلوگاه در لایهٔ محاسباتی (Compute) دیده میشود. در این وضعیت لازم نیست کنترلرها یا سرویسهای مدیریتی را از ابتدا نصب کنید. میتوانید یک سرور اختصاصی جدید را بهعنوان Compute Node اضافه کنید تا Nova بار اجرای نمونههای جدید را میان منابع بیشتری توزیع کند.
Kolla-Ansible این کار را با الگوی زیرساخت بهعنوان کد ساده میکند. کافی است سرور جدید را آماده کنید، اینونتوری را بهروزرسانی کنید و playbookهای مناسب را اجرا کنید. اگر کلاستر پایه را هنوز راهاندازی نکردهاید، ابتدا نصب و راهاندازی OpenStack روی سرور اختصاصی با Kolla-Ansible را ببینید؛ در این راهنما، مراحل افزودن compute node به openstack را روی یک کلاستر موجود بررسی میکنیم و در پایان، صحت قرارگیری نود در سرویسهای Nova و Placement را میسنجیم.

پیشنیازهای سرور اختصاصی جدید
پیش از تغییر کلاستر، مشخصات و وضعیت سرور جدید را با نیازمندیهای محیط فعلی هماهنگ کنید. اختلاف نسخهٔ سیستمعامل، معماری پردازنده یا تنظیمات شبکه میتواند باعث شود استقرار کانتینرها موفق باشد، اما اجرای ماشین مجازی با خطا مواجه شود.
حداقل موارد زیر را بررسی کنید:
- سیستمعامل پشتیبانیشده و همنسخه با نودهای فعلی؛ برای نمونه Ubuntu یا Rocky Linux مطابق نسخهای که Kolla-Ansible شما پشتیبانی میکند.
- نام میزبان یکتا و رکوردهای DNS یا /etc/hosts برای همهٔ نودها.
- دسترسی شبکهای پایدار به شبکهٔ مدیریت، API و شبکهٔ تونل یا Provider.
- فعال بودن VT-x یا AMD-V در BIOS/UEFI.
- دیسک کافی برای ایمیجهای موقت، لاگها و سرویسهای کانتینری؛ اگر بعداً به فضای بیشتری نیاز شد، مدیریت دیسک با LVM روی سرور اختصاصی و VPS افزایش فضا را بدون Downtime ممکن میکند.
- زمان سیستم هماهنگ با NTP یا Chrony.
اگر سرور از چند رابط شبکه استفاده میکند، از همان ابتدا نقش هر رابط را مشخص کنید. یک رابط معمولاً برای مدیریت و API، و رابط دیگر برای تونلهای شبکه یا ترافیک Provider استفاده میشود. نام رابطها باید با مقادیر network_interface و tunnel_interface در تنظیمات Kolla-Ansible مطابقت داشته باشد.
سازگاری منابع سختافزاری
اگر هنوز سرور اختصاصی جدید را انتخاب نکردهاید، راهنمای انتخاب پلن سرور اختصاصی آریانت کمک میکند تیر مناسب را متناسب با بار موردانتظار این Compute Node انتخاب کنید. قرار نیست همهٔ Compute Nodeها دقیقاً یکسان باشند، اما بهتر است تفاوتها را مستند کنید. تعداد هسته، مقدار RAM، نوع دیسک و قابلیتهای CPU روی ظرفیت زمانبندی Nova اثر میگذارند. اگر یک سرور پردازندهٔ قدیمیتری دارد، مدل CPU را در تنظیمات Nova طوری انتخاب کنید که مهاجرت زنده میان نودها با مشکل ناسازگاری مواجه نشود.
| مورد | کنترلرهای موجود | Compute Node جدید |
|---|---|---|
| سیستمعامل و نسخه | یکسان یا سازگار | مطابق نسخهٔ کلاستر |
| نام میزبان | یکتا | یکتا و قابل resolve |
| مجازیسازی سختافزاری | فعال | فعال در BIOS/UEFI |
| شبکهٔ مدیریت | دسترسی به API و SSH | IP ثابت و دسترسی دوطرفه |
| زمان سیستم | NTP/Chrony | همگام با کلاستر |
آمادهسازی SSH و دسترسی Ansible
Kolla-Ansible از طریق SSH به سرور جدید متصل میشود. روی نودی که فرمانهای استقرار را اجرا میکنید، کلید عمومی کاربر مدیریتی را در authorized_keys سرور جدید قرار دهید. سپس اتصال را بدون درخواست رمز عبور آزمایش کنید:
ssh-copy-id cloudadmin@compute-03
ssh cloudadmin@compute-03 'sudo -n true && hostnamectl'
کاربر باید اجازهٔ اجرای دستورات مدیریتی با sudo داشته باشد. در فایل /etc/sudoers.d/cloudadmin میتوانید دسترسی لازم را تعریف کنید:
cloudadmin ALL=(ALL) NOPASSWD: ALL
مجوز فایل را محدود کنید:
sudo chmod 440 /etc/sudoers.d/cloudadmin
اگر سیاست امنیتی شما استفاده از NOPASSWD را نمیپذیرد، باید روش تأمین رمز sudo را در Ansible بهصورت امن تنظیم کنید. رمز را در متن playbook یا مخزن Git قرار ندهید. برای سختسازی بیشتر همین دسترسی، امنسازی دسترسی SSH به سرور لینوکس را هم مطالعه کنید.
فایروال سرور جدید نیز باید پورتهای SSH و ارتباطات موردنیاز سرویسهای OpenStack را اجازه دهد. در محیطهای تولیدی، بهجای باز کردن همهٔ پورتها، دامنهٔ IP شبکهٔ مدیریت و تونل را محدود کنید؛ برای تعریف دقیق این قوانین میتوانید از راهاندازی فایروال nftables روی سرور لینوکس کمک بگیرید.
افزودن نود به اینونتوری Kolla-Ansible
فایل اینونتوری مورد استفادهٔ کلاستر را پیدا کنید. در بسیاری از نصبها نام آن multinode است. بخش را باز کنید و سرور جدید را با نامی که در DNS یا فایل hosts تعریف کردهاید اضافه کنید:
```ini




