مفاهیم پیشنیاز
ماشین مجازی (Virtual Machine)
ماشین مجازی (VM) یک محیط محاسباتی ایزولهشده است که بهصورت نرمافزاری، عملکرد یک سیستم فیزیکی را شبیهسازی میکند. هر VM دارای سیستمعامل، نرمافزارها و تنظیمات مستقل خود است، اما همگی منابع سختافزاری (مانند CPU، حافظه، و ذخیرهسازی) را با سایر VMها بر روی یک سرور فیزیکی به اشتراک میگذارند.
این ایزولاسیون امکان اجرای چندین ماشین مجازی روی یک میزبان را بدون تداخل فراهم میکند. ماشینهای مجازی معمولاً در موارد زیر کاربرد دارند:
- استفاده بهینه از منابع سختافزاری
- اجرای برنامهها در سیستمعاملهای مختلف
- آزمایش نرمافزار در محیطهای کنترلشده
- افزایش انعطافپذیری و مقیاسپذیری زیرساخت
تفاوت ماشین مجازی (VM) و سایر راهکارهای میزبانی (Hosting Solutions)
ویژگی | ماشین مجازی (VM) | راهکار میزبانی (Hosting) |
---|---|---|
تعریف | یک محیط مجازیسازیشده که روی سرور فیزیکی با استفاده از hypervisor اجرا میشود. | یک سرویس ارائهشده توسط شرکتهای هاستینگ برای میزبانی وبسایت، برنامه یا دادهها، معمولاً شامل مدیریت، پشتیبانی و منابع از پیش تنظیمشده |
نوع فناوری | لایهٔ زیرساختی (IaaS) | لایهٔ خدماتی (SaaS یا PaaS یا ترکیبی) |
سطح کنترل | کنترل کامل بر سیستمعامل، تنظیمات شبکه، نصب نرمافزار | کنترل محدود؛ بسته به نوع هاست (اشتراکی، VPS، اختصاصی، مدیریتشده) |
مخاطب هدف | توسعهدهندگان، DevOps، مدیران زیرساخت | کاربران نهایی، وبمسترها، صاحبان کسبوکارهای کوچک تا متوسط |
موارد استفاده | اجرای ماشینهای سفارشی، محیطهای تست، شبیهسازی، مقیاسپذیری زیرساخت | میزبانی وبسایت، فروشگاه آنلاین، وباپلیکیشن، ایمیل سازمانی |
پیکربندی و مدیریت | نیازمند تخصص فنی برای راهاندازی و نگهداری | معمولاً پیکربندیشده و آماده استفاده |
میزبانی چیست؟ | ممکن است خودش بخشی از راهکار میزبانی باشد (مثلاً در VPS Hosting) | میتواند شامل استفاده از VM باشد اما خود میزبانی سطح بالاتری است (مثلاً Shared Hosting روی یک VM) |
مثالها | KVM VM، VMware، VirtualBox، Hyper-V | Shared Hosting، VPS، Dedicated Hosting، Managed WordPress Hosting، Cloud Hosting, Database Hosting |
چه زمانی از هر کدام استفاده کنیم؟
سناریو | پیشنهاد |
---|---|
میخواهید یک سایت وردپرس ساده راهاندازی کنید | Shared Hosting یا Managed Hosting |
به کنترل کامل روی سیستم نیاز دارید (OS، پورت، نرمافزار) | VM یا VPS |
نیاز به مقیاسپذیری بالا و زیرساخت منعطف دارید | VM در محیط Cloud (مثل زیرساخت کوبیت AWS EC2، Azure VM) |
دنبال راهحل بدون نیاز به دانش فنی هستید | Hosting Solution با پنل آماده مثل CPanel، پلتفرم کوبیت، ابرافزار کوبیت |
تفاوت بین VM و Container
ویژگی | VM (ماشین مجازی) | Container (کانتینر) |
---|---|---|
ساختار معماری | VM سیستمعامل خودش را دارد. هر VM شامل یک OS کامل، نرمافزارها و درایورهاست. | کانتینرها از هسته سیستمعامل میزبان (Host OS) استفاده میکنند و فقط اپلیکیشن و وابستگیهای آن را دارند. |
اندازه (Size) | سنگینتر؛ معمولاً چندین گیگابایت | بسیار سبک؛ معمولاً چند مگابایت |
زمان راهاندازی (Boot Time) | چندین ثانیه تا دقیقه | معمولاً زیر یک ثانیه |
ایزولاسیون | کامل؛ مثل یک کامپیوتر مستقل | سبکتر؛ از طریق فضای نام (namespaces) و کنترل منابع (cgroups) در کرنل لینوکس |
کاربرد | مناسب برای اجرای چند سیستمعامل متفاوت یا بارهای سنگین و طولانیمدت | مناسب برای اجرای سریع، مقیاسپذیر و ماژولار اپلیکیشنها، بهویژه در معماری microservices |
مقیاسپذیری | کمتر چابک؛ نیازمند منابع زیاد و زمان بالا برای ایجاد و گسترش | بسیار چابک؛ مقیاسپذیری خودکار با ابزارهایی مثل Kubernetes |
وابستگی به سیستمعامل میزبان | میتواند هر سیستمعاملی باشد (مثلاً ویندوز روی لینوکس) | معمولاً باید با سیستمعامل میزبان سازگار باشد (مثلاً کانتینر لینوکس روی میزبان لینوکس) |
مثالها | KVM، VMware، Hyper-V، VirtualBox | Docker، containerd، Podman |
چه زمانی از هر کدام استفاده کنیم؟
سناریو | پیشنهاد |
---|---|
اجرای اپلیکیشنهایی با نیازمندیهای خاص به سیستمعامل یا کرنل متفاوت | VM |
ایجاد محیط تست کاملاً ایزوله با امنیت بالا | VM |
اجرای سریع، سبک، و قابل مقیاس اپلیکیشنهای سرویسمحور | Container |
پیادهسازی معماری Microservices و DevOps CI/CD | Container |
کلید SSH (SSH Key)
کلید SSH یک مکانیزم احراز هویت رمزنگاریشده برای اتصال امن به ماشینهای مجازی (لینوکسی) است. این کلید شامل یک جفت کلید عمومی و خصوصی است:
- کلید عمومی (Public Key): در ماشین مجازی ذخیره میشود.
- کلید خصوصی (Private Key): نزد کاربر باقی میماند و نباید فاش شود.
با استفاده از کلید SSH، کاربران میتوانند بدون نیاز به رمز عبور، به صورت امن وارد ماشینهای مجازی شوند. این روش امنیت دسترسی را افزایش داده و خطرات ناشی از استفاده از گذرواژههای ضعیف را حذف میکند.
زیرشبکه (Subnet)
زیرشبکه (Subnet) یک تقسیمبندی منطقی از IP داخلی یک شبکه ابر خصوصی مجازی (VPC) است. هر Subnet دارای محدوده IP مشخصی است بهمنظور:
- تفکیک منابع (مثلاً پایگاه داده از سرورهای وب)
- کنترل دقیقتر ترافیک و امنیت
- سادهسازی مدیریت شبکه
به کار میرود. تقسیم VPC به زیرشبکهها به ساختارمند کردن معماری ابری کمک کرده و امکان اعمال سیاستهای امنیتی متفاوت بر بخشهای مختلف شبکه را فراهم میسازد.
آدرس IP شناور (Floating IP)
آدرس IP شناور یک آدرس IPv4 عمومی است که میتواند بهصورت پویا به هر ماشین مجازی در یک منطقه جغرافیایی خاص اختصاص یابد. ویژگیهای کلیدی این نوع آدرس:
- قابل جابهجایی میان سرورها بدون نیاز به راهاندازی مجدد
- مناسب برای سناریوهای High Availability و Failover
- هدایت آسان ترافیک به سرور فعال در زمان واقعی
استفاده از IP شناور، دسترسی پیوسته به سرویسها را حتی در صورت جابهجایی بین ماشینها تضمین میکند.
بکاپ (Backup)
بکاپ یک فرآیند برنامهریزیشده و مداوم برای نگهداری نسخههای پشتیبان از دادهها یا ماشینهای مجازی است. در سیستم کوبیت، بکاپها از طریق قوانین بکاپگیری (BackUp Rules) بهصورت دورهای (روزانه، هفتگی یا ماهانه) انجام میشوند. هر رول مشخص میکند:
- از کدام ماشین مجازی بکاپ گرفته شود
- در چه بازه زمانی (Frequency)
- چه تعداد نسخهی پشتیبان (Slot) نگهداری شود
بکاپها برای محافظت بلندمدت از دادهها، بازگردانی در مواقع بحرانی و مهاجرت بین محیطها استفاده میشوند. آنها معمولاً در یک فضای ذخیرهسازی جداگانه و پایدار نگهداری میشوند.
اسنپشات (Snapshot)
اسنپشات یک کپی لحظهای (Point-in-Time) از وضعیت یک ماشین مجازی یا دیسک در یک زمان خاص است. این کپی شامل سیستمعامل، دادهها، تنظیمات و ساختار فایلها است. اسنپشاتها کاربردهایی مانند موارد زیر دارند:
- بازگردانی سریع به وضعیت قبل از تغییر یا خطا
- آزمایش یا اجرای تغییرات بدون ریسک دائمی
- ایجاد کلون برای توسعه یا تست
اسنپشاتها معمولاً برای پشتیبانگیری کوتاهمدت و درونسیستمی مناسباند و بهطور مستقیم به حجم اصلی متصلاند، نه به فضای ذخیرهسازی مجزا.
تفاوت بکاپ و اسنپشات
ویژگی | Snapshot | Backup |
---|---|---|
نوع داده | کپی لحظهای از دیسک یا VM | کپی کامل دادهها در بازههای زمانی مشخص |
مکان ذخیرهسازی | معمولاً در همان محیط ذخیرهسازی | معمولاً در فضای جداگانه و امن |
هدف اصلی | بازگشت سریع در صورت تغییرات یا خرابی | محافظت بلندمدت از دادهها |
مدت نگهداری | کوتاهمدت (تا قبل از تغییرات بعدی یا حذف دستی) | بلندمدت و قابل نگهداری در نسخههای متعدد |
زمان اجرا | فوری، در چند ثانیه | برنامهریزیشده و بسته به حجم داده زمانبرتر |
قابلیت برنامهریزی | معمولاً دستی | برنامهریزیشده بهصورت روزانه، هفتگی، ماهانه |
استقلال از منبع | به منبع متصل است (وابسته به VM اصلی) | قابل بازیابی مستقل، حتی پس از حذف VM اصلی |
مناسب برای | تست، توسعه، تغییر موقت | بازیابی پس از حادثه، مهاجرت، بایگانی مطمئن |
گروه امنیتی (Security Group)
گروه امنیتی یک فایروال مجازی در سطح ماشین مجازی یا منبع ابری است که کنترل دقیق ترافیک ورودی و خروجی را فراهم میسازد. قوانین هر گروه امنیتی میتوانند مشخص کنند:
- مجاز بودن یا نبودن پروتکلها (TCP, UDP, ICMP)
- پورتهای باز و بسته
- محدودههای IP (از نوع IPv4 یا IPv6) مجاز برای دسترسی
گروههای امنیتی امکان اعمال سیاستهای امنیتی دقیق و انعطافپذیر را فراهم کرده و بهصورت Stateful عمل میکنند؛ یعنی ترافیک برگشتی بهطور خودکار مجاز خواهد بود، اگر ارتباط ورودی مجاز بوده باشد (ارتباط دو سویه است).
تفاوت بین Security Group، فایروال سیستمعامل، و کنترل دسترسی
ویژگی | Security Group | فایروال سیستمعامل | کنترل دسترسی (Access Control) |
---|---|---|---|
سطح اجرا | سطح زیرساخت ابری (قبل از رسیدن ترافیک به سیستمعامل) | سطح سیستمعامل مهمان (مثلاً داخل لینوکس یا ویندوز) | سطح کاربر، نرمافزار یا سرویس |
موقعیت | معمولاً در سطح شبکهٔ مجازی/ماشین مجازی در پلتفرم ابری (مثلاً AWS، Azure، OpenStack) | درون ماشین مجازی یا سرور فیزیکی | در اپلیکیشن، فایل سیستم، پایگاه داده یا API |
وظیفه اصلی | فیلتر ترافیک ورودی/خروجی بر اساس پورت، IP و پروتکل | کنترل ترافیک شبکه ورودی/خروجی در خود سیستمعامل | محدودسازی دسترسی کاربران یا برنامهها به منابع یا عملیات خاص |
مثال قوانین | اجازه به TCP روی پورت 22 از IP مشخص | رد همه پورتهای غیر از 80/443 با iptables | فقط کاربران admin مجاز به خواندن جدول X در DB |
مناسب برای | محدودسازی دسترسی در سطح شبکه و ماشینهای ابری | کنترل دقیق در سطح سیستمعامل | مدیریت مجوز کاربران، گروهها و نقشها |
Statefulness | معمولاً Stateful (پاسخها به ارتباط مجاز، مجاز تلقی میشوند) | اغلب Stateful اما قابل تنظیم | Stateless (بسته به پیادهسازی) |
میزان کنترل | تنظیمشده توسط پلتفرم ابری | تنظیمشده در خود سیستمعامل | بخشی از سیاستهای امنیتی سرویس یا اپلیکیشن |
این سه لایه مکمل یکدیگر هستند:
- Security Groups
- نقش اول را در فیلتر کردن ترافیک شبکه بازی میکنند.
- ترافیک قبل از رسیدن به سیستمعامل بررسی میشود.
- برای مثال: فقط اجازه دسترسی SSH از IP خاص.
- فایروال سیستمعامل
- ترافیکی که از Security Group عبور کرده باشد، اینجا بررسی میشود.
- بهصورت دقیقتر روی پروتکلها، کانکشنها، زمانها و رفتارها کنترل دارید.
- مثال: با
ufw
یاiptables
فقط به کاربران خاص اجازه اتصال بده.
- کنترل دسترسی
- فرض کنید کاربر با SSH به سیستم وارد شده؛ این لایه مشخص میکند به چه چیزی دسترسی دارد.
- مثلاً:
- اجازه ندارد یک فایل را ببیند (
chmod
) - اجازه ندارد به دیتابیس متصل شود مگر در نقش خاصی
- اجازه ندارد یک endpoint API را فراخوانی کند
- اجازه ندارد یک فایل را ببیند (