بلاگ/افزودن Compute Node به کلاستر OpenStack با Kolla-Ansible: مقیاس‌پذیری روی سرور اختصاصی
به‌روز شده

افزودن Compute Node به کلاستر OpenStack با Kolla-Ansible: مقیاس‌پذیری روی سرور اختصاصی

1405/06/2181 بازدید
افزودن Compute Node به کلاستر OpenStack با Kolla-Ansible: مقیاس‌پذیری روی سرور اختصاصی

افزودن Compute Node به کلاستر OpenStack با Kolla-Ansible: مقیاس‌پذیری روی سرور اختصاصی

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

پیش‌نیازهای سرور اختصاصی جدید

پیش از تغییر کلاستر، مشخصات و وضعیت سرور جدید را با نیازمندی‌های محیط فعلی هماهنگ کنید. اختلاف نسخهٔ سیستم‌عامل، معماری پردازنده یا تنظیمات شبکه می‌تواند باعث شود استقرار کانتینرها موفق باشد، اما اجرای ماشین مجازی با خطا مواجه شود. حداقل موارد زیر را بررسی کنید: - سیستم‌عامل پشتیبانی‌شده و هم‌نسخه با نودهای فعلی؛ برای نمونه 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 و SSHIP ثابت و دسترسی دوطرفه
زمان سیستم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 تعریف کرده‌اید اضافه کنید:

compute-03 ansible_host=203.0.113.23 ansible_user=cloudadmin

اگر نام کاربری یا پورت SSH متفاوت است، همان مقادیر را در اینونتوری مشخص کنید. برای اطمینان از دسترسی Ansible، ابتدا یک بررسی ساده اجرا کنید:

ansible -i multinode compute -m ping

در صورت موفقیت، متغیرهای شبکه و نقش Compute را در فایل globals کلاستر بررسی کنید. مقدارهایی مانند network_interface، tunnel_interface و در صورت استفاده، neutron_external_interface باید با رابط‌های واقعی سرور جدید مطابقت داشته باشند. سپس پیش‌نیازهای سیستم‌عامل را روی نود تازه اجرا کنید:

kolla-ansible -i multinode bootstrap-servers --limit compute-03

گزینهٔ --limit باعث می‌شود عملیات فقط روی نود جدید انجام شود. پس از پایان موفق bootstrap، سرویس‌های مربوط به این نود را مستقر کنید:

kolla-ansible -i multinode deploy --limit compute-03

در بعضی نسخه‌ها یا رویه‌های عملیاتی، به‌جای اجرای محدودشدهٔ deploy، ابتدا تنظیمات را بازسازی و سپس سرویس‌ها را دوباره اعمال می‌کنند:

kolla-ansible -i multinode reconfigure --limit compute-03

خروجی playbook را برای خطاهای مربوط به شبکه، دسترسی رجیستری، libvirt یا مجوزهای کانتینر بررسی کنید. در صورت تغییر توپولوژی شبکه، ممکن است لازم باشد تنظیمات Neutron و رابط‌های Provider را نیز با استاندارد کلاستر هماهنگ کنید.

بررسی ثبت Compute Node در OpenStack

پس از پایان استقرار، فایل اعتبارنامهٔ مدیر را بارگذاری و وضعیت سرویس‌های Nova را بررسی کنید:

source /etc/kolla/admin-openrc.sh
openstack compute service list

در خروجی باید سرویس nova-compute روی compute-03 با وضعیت up و معمولاً حالت enabled دیده شود. فهرست Hypervisorها را نیز کنترل کنید:

openstack hypervisor list

اگر نود جدید در این فهرست وجود دارد، منابع پردازنده و حافظهٔ آن را جزئی‌تر ببینید:

openstack hypervisor show compute-03

در صورت نمایش وضعیت down، ابتدا زمان سیستم، اتصال شبکهٔ مدیریت، کانتینر Nova Compute و لاگ‌های آن را بررسی کنید. همچنین مطمئن شوید Placement API در دسترس است و سرویس جدید توانستهٔ منابع خود را به آن گزارش کند. تا زمانی که nova-compute و Provider مربوطه سالم نباشند، ایجاد نمونه روی نود جدید را به محیط تولید نسپارید.

جمع‌بندی

افزودن Compute Node با Kolla-Ansible به سه کار اصلی محدود می‌شود: آماده‌سازی سرور اختصاصی، افزودن دقیق آن به اینونتوری و اجرای bootstrap و deploy با محدودیت نود. پس از آن، وضعیت nova-compute و فهرست Hypervisorها نشان می‌دهد که کلاستر منابع جدید را شناخته است. با تکرار همین الگو می‌توانید ظرفیت محاسباتی را بدون بازسازی کنترلرها افزایش دهید. برای تهیهٔ سرور مناسب این معماری، مشاهدهٔ پلن‌های سرور اختصاصی آریانت را ببینید و منابع Compute Node بعدی خود را متناسب با بار کاری انتخاب کنید.