تمدید VMware برای دهها میزبان دیگر توجیه ندارد
هزینه اشتراک مبتنی بر هسته و محدودیت پشتیبانی رسمی Broadcom در ایران، محیطهای بزرگ را به سمت بستر متنباز میبرد. OpenStack یکی از این گزینههاست و برای هر محیطی مناسب نیست.
راهاندازی OpenStack برای محیط عملیاتی به Control Plane با HA، ذخیرهسازی Ceph، رجیستری داخلی و برنامه ارتقا نیاز دارد. کانفیگ سرور OpenStack را با Kolla-Ansible یا OpenStack-Ansible مستقر میکند و ماشینها را مرحلهای از VMware، Hyper-V یا Proxmox به آن منتقل میکند.
هزینه اشتراک مبتنی بر هسته و محدودیت پشتیبانی رسمی Broadcom در ایران، محیطهای بزرگ را به سمت بستر متنباز میبرد. OpenStack یکی از این گزینههاست و برای هر محیطی مناسب نیست.
OpenStack برای هر واحد Project، سهمیه و شبکه جدا دارد و منابع با داشبورد، API یا Infrastructure as Code ساخته میشوند.
DevStack برای محیط توسعه ساخته شده و برای production مناسب نیست. در ایران هم دریافت ایمیجها از مخازن خارجی اغلب وسط نصب قطع میشود.
ابر را طوری میسازیم که افزودن نود و ارتقای بعدی ممکن بماند.
نقش نودها و شبکهها پیش از نصب مشخص میشود.
ابزار استقرار را بر اساس مهارت تیم و روش ارتقا انتخاب میکنیم.
سرویسهای هسته ابر را با هم راهاندازی و به هم وصل میکنیم.
Ceph رایجترین استوریج OpenStack است و با افزودن نود بزرگ میشود.
با خرابی یک Controller، API نباید قطع شود. مبانی آن را در راهنمای HAProxy نوشتهایم.
پایش پیشرفته در مانیتورینگ و Observability آمده است.
راهاندازی OpenStack چند سرور را به ابری تبدیل میکند که واحدها و پروژهها از داشبورد یا API ماشین، شبکه و Volume بسازند و هر کدام سهمیه خودشان را داشته باشند. OpenStack مجموعهای از سرویسهای مستقل است: Keystone هویت را مدیریت میکند، Nova ماشینها را روی KVM اجرا میکند، Neutron شبکه میسازد، Cinder و Glance دیسک و ایمیج را نگه میدارند و Octavia Load Balancer میدهد. نگهداری این مجموعه به دانش Linux، شبکه و Ceph نیاز دارد. نکتههای زیر به تصمیم درباره OpenStack، طراحی آن و مسیر مهاجرت کمک میکند.
OpenStack وقتی منطقی است که دهها میزبان یا چند دیتاسنتر دارید، چند واحد باید شبکه و سهمیه جدا داشته باشند و منابع باید با API، Terraform یا Pipeline ساخته شوند. تیمی هم لازم است که Linux، Ceph و شبکه را نگهداری کند، یا این کار برونسپاری شود. برای چند میزبان و چند ده ماشین، کلاستر Proxmox VE با HA معمولاً همان نیاز را با پیچیدگی بسیار کمتر پاسخ میدهد و طراحی آن در خدمات مجازیسازی سرور انجام میشود. رفتار در خرابی میزبان هم متفاوت است، چون OpenStack بهصورت پیشفرض ماشینها را روی میزبان دیگر روشن نمیکند و برای برنامههایی طراحی شده که افزونگی را خودشان دارند.
در محیط عملیاتی، سرویسهای Control Plane روی سه نود Controller اجرا میشوند. HAProxy و Keepalived یک آدرس مجازی جلوی APIها میگذارند، MariaDB Galera دیتابیس را بین سه نود تکثیر میکند و RabbitMQ هم بهصورت کلاستر اجرا میشود. عدد سه برای رأیگیری است: Galera با خرابی یک نود از سه نود به کار ادامه میدهد، اما در کلاستر دونودی نود باقیمانده اکثریت ندارد و دیتابیس نوشتن را نمیپذیرد. نودهای Compute ماشینها را اجرا میکنند و Ceph با RBD دیسک ماشینها، Volumeها و ایمیجها را نگه میدارد. در محیط کوچکتر، Compute و Ceph روی همان نودها ترکیب میشوند.
شبکهها را از روز اول جدا طراحی کنید: Management برای ارتباط سرویسها، Tenant برای شبکههای مجازی پروژهها، Storage برای ترافیک Ceph و Provider برای اتصال به شبکه بیرونی. Replication خود Ceph هم بهتر است شبکه جدا داشته باشد. شبکه Tenant در Neutron با Open vSwitch یا OVN روی تونل ساخته میشود و هدر تونل اندازه بسته را بزرگتر میکند. اگر MTU شبکه فیزیکی برای آن تنظیم نشود، ماشینها ping میگیرند اما انتقال فایل و بعضی اتصالهای HTTPS قطع میشود.
Kolla-Ansible بهصورت پیشفرض ایمیج سرویسها را از quay.io میگیرد. Docker Hub دسترسی از IPهای ایران را مسدود میکند و دسترسی به quay.io هم ممکن است محدود یا ناپایدار باشد. ما مشکل دسترسی به این مخازن و تمام سرویسهای تحریمشده را حل میکنیم. با این حال نصبی که به این مخازن وابسته بماند، ممکن است وسط استقرار یا روز افزودن نود متوقف شود. به همین دلیل پیش از نصب رجیستری داخلی میسازیم و ایمیجهای نسخه انتخابشده را یک بار در آن نگه میداریم؛ جزئیات رجیستری در خدمات Docker آمده است. ترتیب کار این است:
کل نصب را یک بار بدون دسترسی به اینترنت خارجی آزمایش کنید. اگر مرحلهای هنوز به مخزن بیرونی نیاز داشته باشد، همین آزمایش آن را پیش از ارتقای بعدی نشان میدهد.
مسیر مهاجرت به بستر مبدأ بستگی دارد. virt-v2v ماشین را از vCenter یا ESXi میخواند و دیسک را مستقیم به Volume در Cinder مینویسد. برای تعداد زیاد ماشین، VMware Migration Kit پروژه os-migrate با همگامسازی تدریجی دیسک قطعی نهایی را کوتاه میکند. درایور Hyper-V از نسخه 2024.1 از Nova حذف شده است، پس دیسکهای VHDX با qemu-img تبدیل میشوند و ماشینها روی KVM اجرا میشوند. ماشینهای Proxmox از قبل روی KVM هستند و فقط دیسک، cloud-init و شبکهشان بازسازی میشود.
برای ماشینهایی که باید پس از خرابی میزبان دوباره روشن شوند، Masakari یا Evacuate را همراه ذخیرهسازی مشترک Ceph پیکربندی میکنیم. OpenStack هر شش ماه یک نسخه منتشر میکند و ارتقا مرحلهای انجام میشود، هرچند در مسیر SLURP میتوان از روی نسخه میانی پرید. هر ارتقا را اول در محیط Staging اجرا کنید و پیش از آن از دیتابیس و پیکربندیها بکاپ بگیرید؛ طرح بکاپ در بکاپ و بازیابی بحران نوشته میشود.
خود OpenStack لایسنس پولی ندارد و هزینه از سختافزار و زمان طراحی، استقرار و نگهداری میآید. تعداد نودها، طرح Ceph و شبکه، سرویسهایی مثل Octavia، حجم ماشینهایی که منتقل میشوند و نگهداری پس از تحویل پایه برآورد هستند. آمادهسازی رجیستری و Mirror داخلی هم بخشی از زمان نصب در ایران است. برای برآورد، تعداد و مشخصات سرورها، بستر فعلی، تعداد ماشینها و نیاز واحدها به API را بفرستید تا پس از بررسی اولیه قیمت اعلام شود.
ایمیجهای رجیستری داخلی را با تگ دقیق نسخه نگه دارید و از تگهای متحرک استفاده نکنید. در غیر این صورت نودی که ماه بعد اضافه میشود ممکن است سرویسهایی با نسخه متفاوت از بقیه کلاستر اجرا کند.
OpenStack از یک کلاستر مجازیسازی پیچیدهتر است. اگر وضعیت شما به ستون دوم نزدیک است، همین را پیش از هر هزینهای میگوییم.
Kolla-Ansible بهصورت پیشفرض ایمیجها را از quay.io میگیرد. Docker Hub اعلام کرده بهدلیل قوانین کنترل صادرات آمریکا IPهای ایران را مسدود میکند و quay.io هم سرویس Red Hat و مشمول همین قوانین است، پس دسترسی به آن از ایران ممکن است محدود یا ناپایدار باشد. کانفیگ سرور این مشکل را حل میکند و دسترسی به تمام سرویسهای تحریمشده را فراهم میکند.
ایمیجهای هر نسخه یک بار دریافت یا ساخته میشوند. جزئیات رجیستری در خدمات Docker آمده است.
بر اساس راهنمای رسمی OpenStack-Ansible برای نصب با اتصال محدود.
افزودن نود یا ارتقا نباید به مسیر خارجی گره بخورد.
مهاجرت شامل تبدیل دیسک، نصب درایور VirtIO، بازسازی شبکه و جابهجایی مرحلهای است و مبدأ تا تأیید نهایی شما دستنخورده میماند.
| در VMware vSphere | در OpenStack | نکته مهاجرت |
|---|---|---|
| ESXi و vCenter | Nova روی KVM، Keystone و Horizon | ماشینها باید درایور VirtIO بگیرند |
| Port Group و Distributed Switch | Network و Subnet در Neutron | IP و VLAN هر سرویس از قبل نقشهبرداری میشود |
| Datastore یا vSAN | Volume در Cinder روی Ceph | دیسکها به raw یا qcow2 تبدیل میشوند |
| Template | Image در Glance و Flavor | قالبها با cloud-init بازسازی میشوند |
| vSphere HA و DRS | Host Aggregate، زمانبندی Nova و در صورت نیاز Masakari | HA ماشینها بهصورت پیشفرض فعال نیست |
virt-v2v ماشین را از vCenter یا ESXi میخواند و دیسک را به Volume در Cinder منتقل میکند.
درایور Hyper-V از نسخه 2024.1 از Nova حذف شده است، پس ماشینها به KVM تبدیل میشوند.
ماشینهای Proxmox از قبل روی KVM اجرا میشوند و تبدیلشان سادهتر است.
ماشینها در موجهای کوچک و بر اساس وابستگی سرویسها منتقل میشوند.
تعداد میزبانها و ماشینها، نیاز به API و مهارت تیم را بررسی میکنیم. اگر OpenStack لازم نباشد، همین را میگوییم.
معماری نودها، شبکه، Ceph و ابزار استقرار را مکتوب میکنیم و رجیستری و Mirror داخلی را آماده میکنیم.
ابر را مستقر میکنیم، خاموشی Controller و نود Ceph را آزمایش میکنیم و مهاجرت را با موج آزمایشی شروع میکنیم.
مستندات، روش افزودن نود و برنامه ارتقا را تحویل میدهیم و در صورت نیاز، نگهداری ابر را ادامه میدهیم.
بسیاری از ابرهای OpenStack در نسخه اول میمانند، چون ارتقا در طراحی دیده نشده است. بررسی اولیه از طریق تلگرام رایگان است.
OpenStack، Proxmox و VMware را پیادهسازی میکنیم و اگر کلاستر سادهتر کافی باشد، همان را پیشنهاد میدهیم.
رجیستری و Mirror داخلی را از مرحله طراحی در معماری میگذاریم تا روز نصب به دسترسی خارجی وابسته نباشیم.
هایپروایزر زیر Nova را در آموزش کانفیگ سرور KVM و پایش را در آموزش Prometheus و Grafana توضیح دادهایم.
هایپروایزری که Nova ماشینها را روی آن اجرا میکند.
آموزشتوزیع بار جلوی APIهای Control Plane.
آموزشپایه پایش سرویسها و ظرفیت ابر.
OpenStack مجموعهای متنباز از سرویسهاست که چند سرور را به یک ابر با API، Project و سهمیه تبدیل میکند. Proxmox VE و VMware vSphere بستر مجازیسازی و کلاستر هستند؛ OpenStack لایه ابری بالاتری برای محیطهای بزرگ است و نگهداری بیشتری میخواهد.
برای محیط عملیاتی معمولاً سه نود Controller، دستکم دو نود Compute و سه نود Ceph پیشنهاد میشود و در محیط کوچکتر Compute و Ceph روی همان نودها ترکیب میشوند. برای آزمایش، Kolla-Ansible روی یک سرور بهصورت All-in-One نصب میشود.
انتخاب به روش ارتقا و مهارت تیم بستگی دارد: Kolla-Ansible سرویسها را در کانتینر اجرا میکند و ارتقا را سادهتر میکند، و OpenStack-Ansible از سورس در LXC یا روی سرور نصب میکند و کنترل جزئیتری میدهد. هر دو ابزار رسمی پروژه OpenStack هستند.
بله، اگر نصب به مخازن خارجی وابسته نباشد. ایمیجها در رجیستری داخلی و بستههای سیستمعامل، pip و Ceph در Mirror داخلی نگهداری میشوند تا نصب و ارتقا بدون دسترسی به quay.io انجام شود.
هر ماشین فقط در جابهجایی نهایی خاموش میشود و طول آن به حجم دیسک، سرعت شبکه و روش انتقال بستگی دارد. همگامسازی تدریجی دیسکها این پنجره خاموشی را کوتاهتر میکند.
بهصورت پیشفرض نه، چون OpenStack برای برنامههایی طراحی شده که افزونگی را خودشان دارند. برای ماشینهایی که این قابلیت را لازم دارند، Masakari یا Evacuate را با ذخیرهسازی مشترک Ceph پیکربندی میکنیم.
هزینه بر اساس تعداد نودها، طرح Ceph و شبکه، سرویسهایی مانند Octavia، حجم مهاجرت و نگهداری پس از تحویل محاسبه میشود. خود OpenStack لایسنس پولی ندارد. پس از بررسی رایگان اولیه، برای استعلام قیمت در تلگرام پیام دهید.
تعداد سرورها، بستر فعلی و ماشینها را در تلگرام بنویسید تا بگوییم OpenStack مناسب شماست یا گزینه سادهتری کافی است.