معرفی OpenStack

معرفی OpenStack

 بسته OpenStack یک پلتفرم نرم‌افزاری متن‌باز برای ایجاد و مدیریت زیرساخت‌های ابری (Cloud Infrastructure) است که از سال ۲۰۱۰ توسط بنیاد OpenStack و با همکاری شرکت‌هایی مانند Rackspace، NASA و بعدها Red Hat، IBM، Cisco و بسیاری دیگر توسعه یافته است. این پلتفرم به سازمان‌ها امکان می‌دهد تا زیرساخت‌های ابری خصوصی، عمومی یا هیبریدی را با انعطاف‌پذیری بالا، مقیاس‌پذیری و هزینه پایین راه‌اندازی کنند. OpenStack به جای وابستگی به یک فروشنده خاص (Vendor Lock-in)، از استانداردهای باز و جامعه توسعه‌دهندگان جهانی بهره می‌برد و به همین دلیل در بیش از ۱۸۰ کشور و توسط هزاران سازمان از جمله Walmart، CERN، Bloomberg و حتی دولت‌های مختلف استفاده می‌شود.

این پلتفرم  از مجموعه‌ای از پروژه‌های مستقل اما یکپارچه تشکیل شده است که هر کدام مسئولیت یک بخش از زیرساخت ابری را بر عهده دارند. این پروژه‌ها با استفاده از APIهای استاندارد (مانند RESTful API) با یکدیگر ارتباط برقرار می‌کنند و امکان گسترش، سفارشی‌سازی و ادغام با ابزارهای دیگر را فراهم می‌کنند. در این نوشتار، ابتدا به معرفی کلی OpenStack می‌پردازیم و سپس به تفصیل به شش جزء اصلی آن یعنی Nova، Neutron، Glance، Cinder، Swift و Keystone با تمرکز بر حدود ۷۰۰ کلمه برای هر کدام می‌پردازیم.

Nova: موتور محاسبات ابری (Compute Engine)

Nova قلب تپنده OpenStack است و مسئولیت مدیریت منابع محاسباتی (Compute Resources) را بر عهده دارد. این پروژه امکان ایجاد، مدیریت، زمان‌بندی و حذف ماشین‌های مجازی (VM) و در برخی موارد کانتینرها و نمونه‌های Bare-Metal را فراهم می‌کند. Nova به تنهایی یک هایپروایزر نیست، بلکه یک اورکستراتور است که با هایپروایزرهای مختلف مانند KVM، VMware، Hyper-V، Xen و حتی Docker یکپارچه می‌شود.

معماری Nova

Nova از چندین سرویس تشکیل شده است:

  • nova-api: نقطه ورود درخواست‌های کاربر (از طریق Horizon یا CLI) و ارائه REST API.
  • nova-scheduler: تصمیم‌گیری برای تخصیص VM به میزبان مناسب بر اساس فیلترها (مانند RAM، CPU، نزدیکی شبکه) و وزن‌دهی.
  • nova-compute: اجراکننده واقعی دستورات روی نودهای محاسباتی و ارتباط با هایپروایزر.
  • nova-conductor: لایه میانی برای جلوگیری از دسترسی مستقیم nova-compute به دیتابیس و افزایش امنیت.
  • nova-placement: مدیریت منابع و ردیابی موجودی (از نسخه Rocky به بعد جدا شده).

قابلیت‌های کلیدی Nova

  1. پشتیبانی از چندین هایپروایزر: انعطاف‌پذیری در انتخاب KVM (پیش‌فرض)، QEMU، LXC، VMware vSphere و غیره.
  2. Live Migration: جابجایی VM در حال اجرا بین نودهای فیزیکی بدون قطعی سرویس.
  3. Instance Resize: تغییر اندازه VM (مثلاً از m1.small به m1.large).
  4. Security Groups و Metadata Service: مدیریت دسترسی شبکه و تزریق متادیتا به VM.
  5. Quota Management: محدود کردن تعداد VM، هسته، RAM و دیسک برای هر پروژه/کاربر.
  6. Cells v2: تقسیم‌بندی محیط‌های بزرگ به سلول‌های کوچکتر برای مقیاس‌پذیری (تا صدها هزار نود).

نحوه کار Nova

فرض کنید کاربری از طریق داشبورد Horizon درخواست ایجاد یک VM با ۲ هسته، ۴ گیگ RAM و اوبونتو ۲۲.۰۴ می‌کند:

  1. درخواست به nova-api می‌رسد.
  2. nova-scheduler با بررسی فیلترهای Host Filter (مثلاً CPU کافی) و Weighting (مثلاً نود با کمترین بار) یک نود مناسب انتخاب می‌کند.
  3. nova-compute روی نود مقصد با استفاده از libvirt و KVM تصویر دیسک را از Glance می‌گیرد، شبکه را از Neutron تنظیم می‌کند و VM را راه‌اندازی می‌کند.
  4. وضعیت از طریق Message Queue (معمولاً RabbitMQ یا Kafka) همگام‌سازی می‌شود.

سناریوهای کاربردی Nova

  • ابر خصوصی سازمانی: بانک‌ها برای اجرای برنامه‌های حساس مالی.
  • محیط‌های تست و توسعه: توسعه‌دهندگان با Spin-up سریع VMهای موقت.
  • HPC (High Performance Computing): با استفاده از Bare-Metal و SR-IOV برای GPU Passthrough.
  • Edge Computing: اجرای VM در لبه شبکه با MicroNova یا Kuryr.

چالش‌ها و راه‌حل‌ها

  • مقیاس‌پذیری: استفاده از Cells v2 و Placement API.
  • عملکرد: استفاده از DPDK، SR-IOV و CPU Pinning.
  • امنیت: sVirt، SELinux و Nova-NEAT برای ایزوله‌سازی.

آینده Nova

با رشد کانتینرها، Nova به سمت ادغام با Kuryr (برای شبکه‌دهی کانتینرها) و Cyborg (مدیریت شتاب‌دهنده‌ها مانند GPU/FPGA) حرکت کرده است. همچنین پروژه Ironic برای Bare-Metal و Qinling (Function as a Service) مکمل Nova هستند.

Nova با بیش از ۱ میلیون خط کد، یکی از بالغ‌ترین پروژه‌های OpenStack است و پایه‌ای برای سرویس‌های محاسباتی ابری مانند Amazon EC2 محسوب می‌شود.


Neutron: مدیریت شبکه ابری (Networking)

Neutron (قبلاً Quantum) مسئول ارائه Networking as a Service در OpenStack است. این پروژه امکان ایجاد شبکه‌های مجازی، زیرشبکه‌ها، روترها، فایروال‌ها، VPN و بالانس بار را فراهم می‌کند و جایگزین سیستم شبکه ابتدایی Nova-Network شده است.

معماری Neutron

  • neutron-server: ارائه API و ارتباط با پلاگین‌ها.
  • Plugin Agent: اجرای منطق شبکه (مانند ML2، Open vSwitch، Linux Bridge).
  • DHCP Agent: ارائه آدرس IP از طریق dnsmasq.
  • L3 Agent: روترها، NAT و Floating IP.
  • Metadata Agent: ارائه متادیتا به VMها.
  • Network Provider Extensions: پشتیبانی از SDN مانند VMware NSX، Cisco ACI، Juniper Contrail.

انواع شبکه در Neutron

  1. Tenant Networks: ایزوله برای هر پروژه (VLAN، VXLAN، GRE).
  2. Provider Networks: اتصال مستقیم به شبکه فیزیکی (Flat یا VLAN).
  3. External Networks: برای Floating IP و دسترسی خارجی.

قابلیت‌های پیشرفته

  • SDN Integration: کنترل کامل با OpenFlow و OVSDB.
  • Load Balancer as a Service (LBaaS) → اکنون Octavia.
  • Firewall as a Service (FWaaS): سیاست‌های iptables/nftables.
  • VPN as a Service (VPNaaS): IPsec Site-to-Site.
  • BGP Dynamic Routing: اعلام روت‌ها با Quagga یا FRR.
  • Port Security و Anti-Spoofing: جلوگیری از MAC/IP Spoofing.

نحوه کار Neutron

فرض کنید یک VM نیاز به دسترسی اینترنت دارد:

  1. کاربر یک شبکه داخلی (VXLAN) و یک روتر ایجاد می‌کند.
  2. روتر به شبکه خارجی متصل می‌شود.
  3. Floating IP (مثلاً 203.0.113.10) به پورت VM اختصاص می‌یابد.
  4. L3 Agent با استفاده از iptables NAT را تنظیم می‌کند.
  5. ترافیک از VM → OVS → br-int → br-ex → شبکه فیزیکی.

سناریوهای کاربردی

  • مولتی‌تنانت ایزوله: هر مشتری شبکه VLAN/VXLAN جداگانه.
  • NFV (Network Function Virtualization): اجرای VNFهایی مانند vRouter، vFirewall.
  • Telco Cloud: با پشتیبانی از SR-IOV، DPDK و OVS-DPDK.
  • Kubernetes Integration: با Kuryr-Kubernetes یا Calico.

چالش‌ها

  • پیچیدگی پیکربندی: استفاده از Ansible و OpenStack-Helm.
  • عملکرد: فعال‌سازی Jumbo Frame، HugePages و OVS Hardware Offload.
  • عیب‌یابی: استفاده از ovs-vsctl, tcpdump, neutron-debug.

آینده Neutron

پروژه Octavia (LBaaS) و Kuryr (CNI برای Kubernetes) از Neutron جدا شده‌اند. همچنین Stadium Projects مانند Tap-as-a-Service و QoS پیشرفت‌های جدیدی هستند.

Neutron با انعطاف‌پذیری بالا، جایگزینی برای AWS VPC و Azure VNet است.


Glance: مدیریت تصاویر ماشین‌های مجازی (Image Service)

Glance سرویس مدیریت تصاویر (Image Service) در OpenStack است که امکان بارگذاری، ذخیره، جستجو، نسخه‌برداری و اشتراک‌گذاری تصاویر دیسک (مانند ISO، qcow2، VMDK) را فراهم می‌کند. این تصاویر پایه‌ای برای ایجاد VMها در Nova هستند.

معماری Glance

  • glance-api: پذیرش درخواست‌ها و ارائه REST API.
  • glance-registry (قدیمی): اکنون در api ادغام شده.
  • Database: ذخیره متادیتا (MySQL/PostgreSQL).
  • Storage Backend: Swift (پیش‌فرض)، Cinder، File، S3، Rados (Ceph).

انواع تصاویر

  • Raw, qcow2, VHD, VMDK, ISO, AKI/ARI/AMI (برای AWS compatibility).
  • Properties: معماری، سیستم‌عامل، نسخه کرنل.
  • Visibility: Public, Private, Shared, Community.

قابلیت‌های کلیدی

  1. Image Caching: با استفاده از glance-cache middleware.
  2. Image Conversion: qcow2 ↔ raw در زمان دانلود.
  3. Image Signing & Verification: با Barbican برای امنیت.
  4. Multi-location Storage: کپی تصویر در چندین منطقه.
  5. Interoperable Image Import: دو مرحله‌ای (upload + import).

نحوه کار Glance

  1. کاربر با openstack image create یک تصویر qcow2 اوبونتو آپلود می‌کند.
  2. متادیتا در دیتابیس و داده در Swift ذخیره می‌شود.
  3. Nova هنگام boot، تصویر را از Glance استریم می‌کند.
  4. امکان snapshot از VM و ذخیره در Glance.

سناریوهای کاربردی

  • استانداردسازی: تصاویر طلایی (Golden Image) برای CI/CD.
  • بازگردانی: استفاده از snapshot برای Disaster Recovery.
  • چندمنطقه‌ای: همگام‌سازی تصاویر بین مناطق با glance-replicator.

چالش‌ها

  • حجم بالا: استفاده از Ceph RBD یا Swift با S3 API.
  • امنیت: رمزنگاری تصاویر با Barbican.
  • عملکرد: فعال‌سازی Image Cache در Compute Node.

آینده Glance

پشتیبانی از Container Images (با Zun) و Artifact Repository (برای مدل‌های ML) در حال توسعه است.

Glance معادل AWS AMI و Azure Image است.


Cinder: مدیریت ذخیره‌سازی بلاک (Block Storage)

Cinder سرویس ذخیره‌سازی بلاک (Block Storage) در OpenStack است که امکان ایجاد، اتصال، جدا کردن و مدیریت Volumeهای پایدار را برای VMها فراهم می‌کند. برخلاف ذخیره‌سازی موقت Nova، Cinder داده‌ها را حتی پس از حذف VM حفظ می‌کند.

معماری Cinder

  • cinder-api: پذیرش درخواست‌ها.
  • cinder-scheduler: انتخاب Backend مناسب.
  • cinder-volume: مدیریت Volume روی Backend.
  • cinder-backup: بک‌آپ به Swift یا Ceph.
  • Drivers: بیش از ۱۰۰ درایور (LVM، Ceph، NFS، NetApp، Dell EMC، HPE).

انواع Volume

  • Standard, SSD, Encrypted, Multi-attach.
  • Consistency Group: snapshot همزمان چند Volume.
  • QoS: محدود کردن IOPS/Bandwidth.

قابلیت‌ها

  1. Volume Attach/Detach: اتصال به VM در حال اجرا.
  2. Snapshot & Backup: نقطه بازگردانی.
  3. Volume Migration: جابجایی بین Backendها.
  4. Replication: برای Disaster Recovery (v2.1 و v3).
  5. Clone & Re-type: تغییر نوع Volume.

نحوه کار Cinder

  1. کاربر openstack volume create –size 50 myvol اجرا می‌کند.
  2. cinder-scheduler با فیلتر Capacity و Capability یک Backend (مثلاً Ceph) انتخاب می‌کند.
  3. cinder-volume یک RBD Image در Ceph ایجاد می‌کند.
  4. Nova با libvirt Volume را به VM متصل می‌کند (مانند /dev/vdb).

سناریوهای کاربردی

  • دیتابیس: Volumeهای SSD برای MySQL/PostgreSQL.
  • فایل‌سرور: با NFS Backend.
  • بک‌آپ: با cinder-backup به Swift.

چالش‌ها

  • عملکرد: استفاده از NVMe-oF، Ceph BlueStore.
  • مقیاس: استفاده از Cinder Multi-Backend.
  • امنیت: رمزنگاری LUKS با Barbican.

آینده Cinder

پشتیبانی از NVMe-oF, CSI Driver برای Kubernetes و Incremental Backup.

Cinder معادل AWS EBS و Azure Managed Disk است.


Swift: ذخیره‌سازی اشیاء (Object Storage)

Swift سرویس ذخیره‌سازی اشیاء (Object Storage) در OpenStack است که برای ذخیره داده‌های غیرساخت‌یافته در مقیاس پتا‌بایت طراحی شده است. برخلاف Cinder، Swift برای دسترسی فایل‌سیستمی نیست و از API S3-compatible استفاده می‌کند.

معماری Swift

  • Proxy Server: نقطه ورود و بالانس بار.
  • Object, Container, Account Servers: ذخیره داده و متادیتا.
  • Ring: نقشه توزیع داده با Consistent Hashing.
  • Replication: ۳ کپی پیش‌فرض با Erasure Coding.

ویژگی‌ها

  1. No Single Point of Failure: کاملاً توزیع‌شده.
  2. S3 Compatibility: با radosgw یا swift3 middleware.
  3. Large Object Support: تا چند ترابایت.
  4. TempURL & Object Versioning.
  5. Quota & Rate Limiting.

نحوه کار Swift

  1. کاربر یک فایل ۱۰ گیگ را آپلود می‌کند.
  2. Proxy آن را به قطعات ۵ گیگ تقسیم می‌کند (DLO/Manifest).
  3. Ring موقعیت ۳ کپی را تعیین می‌کند.
  4. داده با PUT در دیسک‌های مختلف ذخیره می‌شود.

سناریوهای کاربردی

  • بک‌آپ و آرشیو: تصاویر، لاگ‌ها، ویدیوها.
  • CDN: با Fastly یا Cloudflare.
  • Big Data: ورودی برای Hadoop/Spark.

چالش‌ها

  • Consistency: Eventual Consistency (نیاز به Read-after-Write در برخی موارد).
  • عملکرد: استفاده از SSD برای Metadata.

آینده Swift

پشتیبانی از Multi-region Replication, Sharding و Encryption at Rest.

Swift معادل AWS S3 و Google Cloud Storage است.


Keystone: احراز هویت و مدیریت دسترسی (Identity Service)

Keystone سرویس احراز هویت و مجوزدهی (Identity & Auth) در OpenStack است که نقش Gatekeeper را ایفا می‌کند. تمام سرویس‌ها قبل از پاسخگویی، توکن Keystone را اعتبارسنجی می‌کنند.

معماری Keystone

  • keystone-api: ارائه Public/Internal API.
  • Identity Backend: LDAP, SQL, Federated (SAML, OpenID).
  • Token Backend: UUID, PKI, Fernet (پیش‌فرض), JWT.
  • Catalog: نقشه سرویس‌ها و Endpointها.

مفاهیم اصلی

  • Domain, Project, User, Role, Group.
  • Assignment: تخصیص Role به User/Group در Project/Domain.
  • Policy: فایل JSON برای RBAC (مثلاً admin می‌تواند VM حذف کند).

قابلیت‌ها

  1. Federation: ورود با SAML (ADFS) یا OpenID (Google).
  2. Multi-factor Authentication (MFA).
  3. Application Credentials: برای CI/CD.
  4. Impersonation: کاربر admin به جای کاربر دیگر عمل کند.
  5. Hierarchical Multi-tenancy: Project والد/فرزند.

نحوه کار Keystone

  1. کاربر با openstack –os-username admin –os-password secret token issue توکن می‌گیرد.
  2. توکن Fernet رمزنگاری‌شده شامل User ID, Project ID, Roleها.
  3. Nova توکن را با Keystone اعتبارسنجی می‌کند.
  4. در صورت معتبر بودن، دسترسی مجاز است.

سناریوهای کاربردی

  • ادغام با Active Directory/LDAP.
  • SSO برای Horizon.
  • Audit با Cadf.

چالش‌ها

  • Token Explosion: استفاده از Fernet و Revocation List.
  • مقیاس: استفاده از Memcached و Redis.

آینده Keystone

پشتیبانی از OAuth2, SCIM و Zero Trust.

Keystone معادل AWS IAM است.