مجازی‌سازی و ابر متن‌باز

نصب و راه اندازی OpenStack و مهاجرت از VMware به OpenStack

راه‌اندازی OpenStack برای محیط عملیاتی به Control Plane با HA، ذخیره‌سازی Ceph، رجیستری داخلی و برنامه ارتقا نیاز دارد. کانفیگ سرور OpenStack را با Kolla-Ansible یا OpenStack-Ansible مستقر می‌کند و ماشین‌ها را مرحله‌ای از VMware، Hyper-V یا Proxmox به آن منتقل می‌کند.

Kolla-Ansible و OpenStack-Ansible Nova، Neutron، Cinder و Octavia Ceph و مهاجرت مرحله‌ای
چه زمانی به این خدمت نیاز دارید؟

چه زمانی OpenStack ارزش بررسی دارد؟

تمدید VMware برای ده‌ها میزبان دیگر توجیه ندارد

هزینه اشتراک مبتنی بر هسته و محدودیت پشتیبانی رسمی Broadcom در ایران، محیط‌های بزرگ را به سمت بستر متن‌باز می‌برد. OpenStack یکی از این گزینه‌هاست و برای هر محیطی مناسب نیست.

هر واحد برای یک سرور جدید تیکت می‌زند و روزها منتظر می‌ماند

OpenStack برای هر واحد Project، سهمیه و شبکه جدا دارد و منابع با داشبورد، API یا Infrastructure as Code ساخته می‌شوند.

نصب آزمایشی جواب داد، اما محیط عملیاتی بالا نمی‌آید

DevStack برای محیط توسعه ساخته شده و برای production مناسب نیست. در ایران هم دریافت ایمیج‌ها از مخازن خارجی اغلب وسط نصب قطع می‌شود.

OpenStack سازمانی

خدمات نصب و راه‌اندازی OpenStack

ابر را طوری می‌سازیم که افزودن نود و ارتقای بعدی ممکن بماند.

معماری و برآورد ظرفیت

نقش نودها و شبکه‌ها پیش از نصب مشخص می‌شود.

  • تفکیک نودهای Controller، Compute و Storage
  • برآورد CPU، RAM و نسبت Overcommit بر اساس بار واقعی
  • طرح شبکه‌های Management، Tenant، Storage و Provider

استقرار با Kolla-Ansible یا OpenStack-Ansible

ابزار استقرار را بر اساس مهارت تیم و روش ارتقا انتخاب می‌کنیم.

  • Kolla-Ansible با سرویس‌های کانتینری
  • OpenStack-Ansible با نصب از سورس در LXC یا مستقیم روی سرور
  • نگهداری پیکربندی در Git برای تکرارپذیری

سرویس‌های اصلی OpenStack

سرویس‌های هسته ابر را با هم راه‌اندازی و به هم وصل می‌کنیم.

  • Keystone برای هویت و Horizon برای داشبورد
  • Nova روی KVM، Glance برای ایمیج‌ها و Cinder برای Volume
  • Neutron با Open vSwitch یا OVN و Octavia برای Load Balancer

ذخیره‌سازی Ceph

Ceph رایج‌ترین استوریج OpenStack است و با افزودن نود بزرگ می‌شود.

  • RBD برای Glance، Cinder و دیسک ماشین‌ها
  • شبکه جداگانه برای ترافیک Replication
  • Pool و Volume Type متناسب با نوع بار

Control Plane با High Availability

با خرابی یک Controller، API نباید قطع شود. مبانی آن را در راهنمای HAProxy نوشته‌ایم.

  • سه نود Controller با HAProxy و Keepalived
  • MariaDB Galera و کلاستر RabbitMQ
  • تست خاموشی Controller پیش از تحویل

ارتقا و عملیات روز دوم

پایش پیشرفته در مانیتورینگ و Observability آمده است.

  • ارتقای مرحله‌ای نسخه‌ها و پرش از نسخه میانی در مسیر SLURP
  • Prometheus و Grafana برای سرویس‌ها، Ceph و ظرفیت
  • بکاپ دیتابیس و پیکربندی‌ها طبق بکاپ و بازیابی بحران
راهنمای کامل

راهنمای راه‌اندازی OpenStack در سازمان

راه‌اندازی OpenStack چند سرور را به ابری تبدیل می‌کند که واحدها و پروژه‌ها از داشبورد یا API ماشین، شبکه و Volume بسازند و هر کدام سهمیه خودشان را داشته باشند. OpenStack مجموعه‌ای از سرویس‌های مستقل است: Keystone هویت را مدیریت می‌کند، Nova ماشین‌ها را روی KVM اجرا می‌کند، Neutron شبکه می‌سازد، Cinder و Glance دیسک و ایمیج را نگه می‌دارند و Octavia Load Balancer می‌دهد. نگهداری این مجموعه به دانش Linux، شبکه و Ceph نیاز دارد. نکته‌های زیر به تصمیم درباره OpenStack، طراحی آن و مسیر مهاجرت کمک می‌کند.

OpenStack برای چه محیطی مناسب است؟

OpenStack وقتی منطقی است که ده‌ها میزبان یا چند دیتاسنتر دارید، چند واحد باید شبکه و سهمیه جدا داشته باشند و منابع باید با API، Terraform یا Pipeline ساخته شوند. تیمی هم لازم است که Linux، Ceph و شبکه را نگهداری کند، یا این کار برون‌سپاری شود. برای چند میزبان و چند ده ماشین، کلاستر Proxmox VE با HA معمولاً همان نیاز را با پیچیدگی بسیار کمتر پاسخ می‌دهد و طراحی آن در خدمات مجازی‌سازی سرور انجام می‌شود. رفتار در خرابی میزبان هم متفاوت است، چون OpenStack به‌صورت پیش‌فرض ماشین‌ها را روی میزبان دیگر روشن نمی‌کند و برای برنامه‌هایی طراحی شده که افزونگی را خودشان دارند.

معماری نودها، شبکه و Ceph

در محیط عملیاتی، سرویس‌های 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 قطع می‌شود.

نصب OpenStack روی سرور ایران

Kolla-Ansible به‌صورت پیش‌فرض ایمیج سرویس‌ها را از quay.io می‌گیرد. Docker Hub دسترسی از IPهای ایران را مسدود می‌کند و دسترسی به quay.io هم ممکن است محدود یا ناپایدار باشد. ما مشکل دسترسی به این مخازن و تمام سرویس‌های تحریم‌شده را حل می‌کنیم. با این حال نصبی که به این مخازن وابسته بماند، ممکن است وسط استقرار یا روز افزودن نود متوقف شود. به همین دلیل پیش از نصب رجیستری داخلی می‌سازیم و ایمیج‌های نسخه انتخاب‌شده را یک بار در آن نگه می‌داریم؛ جزئیات رجیستری در خدمات Docker آمده است. ترتیب کار این است:

  1. آماده‌سازی سیستم‌عامل نودها، شبکه‌ها، DNS و NTP
  2. رجیستری داخلی و Mirror مخازن apt یا dnf، pip، Git و Ceph
  3. استقرار و آزمایش Ceph
  4. تنظیم globals.yml و inventory، اجرای prechecks و بعد deploy
  5. آزمایش خاموشی یک Controller و یک نود Ceph
  6. ساخت Project، Flavor، Image و شبکه نمونه برای تیم

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

مهاجرت ماشین‌ها، HA و ارتقا

مسیر مهاجرت به بستر مبدأ بستگی دارد. 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 به چه بستگی دارد؟

خود OpenStack لایسنس پولی ندارد و هزینه از سخت‌افزار و زمان طراحی، استقرار و نگهداری می‌آید. تعداد نودها، طرح Ceph و شبکه، سرویس‌هایی مثل Octavia، حجم ماشین‌هایی که منتقل می‌شوند و نگهداری پس از تحویل پایه برآورد هستند. آماده‌سازی رجیستری و Mirror داخلی هم بخشی از زمان نصب در ایران است. برای برآورد، تعداد و مشخصات سرورها، بستر فعلی، تعداد ماشین‌ها و نیاز واحدها به API را بفرستید تا پس از بررسی اولیه قیمت اعلام شود.

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

انتخاب درست

OpenStack برای شما مناسب است یا Proxmox کافی است؟

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

OpenStack منطقی است وقتی

  • ده‌ها میزبان یا چند دیتاسنتر دارید و رشد ادامه دارد
  • چند واحد یا پروژه باید شبکه و سهمیه جدا داشته باشند
  • منابع باید با API، Terraform یا Pipeline ساخته شوند
  • تیم لینوکس و شبکه دارید یا نگهداری را برون‌سپاری می‌کنید

OpenStack انتخاب درستی نیست وقتی

  • چند میزبان و چند ده ماشین دارید؛ کلاستر Proxmox VE در خدمات مجازی‌سازی سرور ساده‌تر است
  • قالب، سهمیه و HA می‌خواهید، اما بدون پیچیدگی OpenStack؛ ابر اختصاصی مناسب‌تر است
  • نیاز اصلی فقط روشن شدن خودکار ماشین‌ها پس از خرابی میزبان است
  • نیرویی برای نگهداری Linux، Ceph و شبکه ندارید
شرایط ایران

نصب OpenStack روی سرور ایران؛ مخازن، رجیستری و نصب آفلاین

Kolla-Ansible به‌صورت پیش‌فرض ایمیج‌ها را از quay.io می‌گیرد. Docker Hub اعلام کرده به‌دلیل قوانین کنترل صادرات آمریکا IPهای ایران را مسدود می‌کند و quay.io هم سرویس Red Hat و مشمول همین قوانین است، پس دسترسی به آن از ایران ممکن است محدود یا ناپایدار باشد. کانفیگ سرور این مشکل را حل می‌کند و دسترسی به تمام سرویس‌های تحریم‌شده را فراهم می‌کند.

رجیستری داخلی ایمیج‌ها

ایمیج‌های هر نسخه یک بار دریافت یا ساخته می‌شوند. جزئیات رجیستری در خدمات Docker آمده است.

  • رجیستری داخلی با تنظیم docker_registry در Kolla-Ansible
  • ساخت ایمیج با kolla-build در صورت نیاز
  • ثبت Tag دقیق ایمیج‌های هر نسخه

Mirror بسته‌ها و مخازن

بر اساس راهنمای رسمی OpenStack-Ansible برای نصب با اتصال محدود.

  • Mirror مخازن apt یا dnf سیستم‌عامل
  • Cache بسته‌های pip و Mirror مخازن Git
  • مخزن داخلی بسته‌های Ceph

نصب و ارتقای قابل تکرار

افزودن نود یا ارتقا نباید به مسیر خارجی گره بخورد.

  • تست نصب کامل بدون دسترسی به اینترنت خارجی
  • اجرای ارتقا ابتدا در محیط Staging
  • مستندسازی منبع هر ایمیج و بسته
مهاجرت به OpenStack

مهاجرت به OpenStack از VMware، Hyper-V و Proxmox

مهاجرت شامل تبدیل دیسک، نصب درایور VirtIO، بازسازی شبکه و جابه‌جایی مرحله‌ای است و مبدأ تا تأیید نهایی شما دست‌نخورده می‌ماند.

معادل مفاهیم VMware vSphere در OpenStack
در VMware vSphereدر OpenStackنکته مهاجرت
ESXi و vCenterNova روی KVM، Keystone و Horizonماشین‌ها باید درایور VirtIO بگیرند
Port Group و Distributed SwitchNetwork و Subnet در NeutronIP و VLAN هر سرویس از قبل نقشه‌برداری می‌شود
Datastore یا vSANVolume در Cinder روی Cephدیسک‌ها به raw یا qcow2 تبدیل می‌شوند
TemplateImage در Glance و Flavorقالب‌ها با cloud-init بازسازی می‌شوند
vSphere HA و DRSHost Aggregate، زمان‌بندی Nova و در صورت نیاز MasakariHA ماشین‌ها به‌صورت پیش‌فرض فعال نیست

مهاجرت از VMware به OpenStack

virt-v2v ماشین را از vCenter یا ESXi می‌خواند و دیسک را به Volume در Cinder منتقل می‌کند.

  • virt-v2v با خروجی OpenStack
  • برای تعداد زیاد ماشین، VMware Migration Kit پروژه os-migrate
  • همگام‌سازی تدریجی دیسک برای کوتاه کردن قطعی نهایی

مهاجرت از Hyper-V

درایور Hyper-V از نسخه 2024.1 از Nova حذف شده است، پس ماشین‌ها به KVM تبدیل می‌شوند.

  • تبدیل VHDX به raw یا qcow2 با qemu-img
  • نصب درایورهای VirtIO پیش از جابه‌جایی
  • بررسی فعال‌سازی دوباره ویندوز و نرم‌افزارها

مهاجرت از Proxmox

ماشین‌های Proxmox از قبل روی KVM اجرا می‌شوند و تبدیلشان ساده‌تر است.

  • انتقال دیسک‌ها به Glance یا Cinder
  • تنظیم cloud-init و QEMU Guest Agent
  • بازسازی شبکه و Security Groupها در Neutron

Cut-over مرحله‌ای

ماشین‌ها در موج‌های کوچک و بر اساس وابستگی سرویس‌ها منتقل می‌شوند.

  • فهرست ماشین‌ها و نقشه وابستگی
  • موج آزمایشی با ماشین‌های کم‌اهمیت
  • برنامه بازگشت برای هر موج و خاموش کردن مبدأ پس از تأیید
فرآیند اجرای کار

مراحل راه‌اندازی OpenStack، از طراحی معماری تا انتقال آخرین ماشین

۱. نیازسنجی و انتخاب بستر

تعداد میزبان‌ها و ماشین‌ها، نیاز به API و مهارت تیم را بررسی می‌کنیم. اگر OpenStack لازم نباشد، همین را می‌گوییم.

۲. طراحی و آماده‌سازی مخازن

معماری نودها، شبکه، Ceph و ابزار استقرار را مکتوب می‌کنیم و رجیستری و Mirror داخلی را آماده می‌کنیم.

۳. استقرار و تست خرابی

ابر را مستقر می‌کنیم، خاموشی Controller و نود Ceph را آزمایش می‌کنیم و مهاجرت را با موج آزمایشی شروع می‌کنیم.

۴. تحویل و عملیات

مستندات، روش افزودن نود و برنامه ارتقا را تحویل می‌دهیم و در صورت نیاز، نگهداری ابر را ادامه می‌دهیم.

محدوده خدمت راه‌اندازی OpenStack

شامل این خدمت

  • طراحی معماری و برآورد ظرفیت
  • Kolla-Ansible یا OpenStack-Ansible با Nova، Neutron، Cinder، Glance، Keystone، Horizon و Octavia
  • Ceph، Control Plane با HA و رجیستری و Mirror داخلی
  • مهاجرت ماشین‌ها از VMware، Hyper-V و Proxmox
  • پایش، بکاپ پیکربندی و برنامه ارتقا

خارج از این خدمت

چرا کانفیگ سرور؟

OpenStack با برنامه ارتقا از روز اول

بسیاری از ابرهای OpenStack در نسخه اول می‌مانند، چون ارتقا در طراحی دیده نشده است. بررسی اولیه از طریق تلگرام رایگان است.

01

انتخاب بستر بر اساس نیاز

OpenStack، Proxmox و VMware را پیاده‌سازی می‌کنیم و اگر کلاستر ساده‌تر کافی باشد، همان را پیشنهاد می‌دهیم.

02

محدودیت‌های ایران در طراحی

رجیستری و Mirror داخلی را از مرحله طراحی در معماری می‌گذاریم تا روز نصب به دسترسی خارجی وابسته نباشیم.

03

راهنماهای فنی منتشرشده

هایپروایزر زیر Nova را در آموزش کانفیگ سرور KVM و پایش را در آموزش Prometheus و Grafana توضیح داده‌ایم.

سوالات متداول

پرسش‌های رایج درباره OpenStack

OpenStack چیست و چه تفاوتی با Proxmox یا VMware دارد؟

OpenStack مجموعه‌ای متن‌باز از سرویس‌هاست که چند سرور را به یک ابر با API، Project و سهمیه تبدیل می‌کند. Proxmox VE و VMware vSphere بستر مجازی‌سازی و کلاستر هستند؛ OpenStack لایه ابری بالاتری برای محیط‌های بزرگ است و نگهداری بیشتری می‌خواهد.

برای راه‌اندازی OpenStack حداقل چند سرور لازم است؟

برای محیط عملیاتی معمولاً سه نود Controller، دست‌کم دو نود Compute و سه نود Ceph پیشنهاد می‌شود و در محیط کوچک‌تر Compute و Ceph روی همان نودها ترکیب می‌شوند. برای آزمایش، Kolla-Ansible روی یک سرور به‌صورت All-in-One نصب می‌شود.

Kolla-Ansible بهتر است یا OpenStack-Ansible؟

انتخاب به روش ارتقا و مهارت تیم بستگی دارد: Kolla-Ansible سرویس‌ها را در کانتینر اجرا می‌کند و ارتقا را ساده‌تر می‌کند، و OpenStack-Ansible از سورس در LXC یا روی سرور نصب می‌کند و کنترل جزئی‌تری می‌دهد. هر دو ابزار رسمی پروژه OpenStack هستند.

نصب OpenStack روی سرور ایران ممکن است؟

بله، اگر نصب به مخازن خارجی وابسته نباشد. ایمیج‌ها در رجیستری داخلی و بسته‌های سیستم‌عامل، pip و Ceph در Mirror داخلی نگهداری می‌شوند تا نصب و ارتقا بدون دسترسی به quay.io انجام شود.

مهاجرت از VMware به OpenStack چقدر قطعی دارد؟

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

آیا OpenStack مثل vSphere HA ماشین‌ها را پس از خرابی میزبان خودکار روشن می‌کند؟

به‌صورت پیش‌فرض نه، چون OpenStack برای برنامه‌هایی طراحی شده که افزونگی را خودشان دارند. برای ماشین‌هایی که این قابلیت را لازم دارند، Masakari یا Evacuate را با ذخیره‌سازی مشترک Ceph پیکربندی می‌کنیم.

هزینه راه‌اندازی OpenStack چطور محاسبه می‌شود؟

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

برای راه‌اندازی OpenStack یا مهاجرت به آن برنامه دارید؟

تعداد سرورها، بستر فعلی و ماشین‌ها را در تلگرام بنویسید تا بگوییم OpenStack مناسب شماست یا گزینه ساده‌تری کافی است.