بلاگ/راه‌اندازی MinIO روی سرور اختصاصی و VPS: ذخیره‌سازی آبجکت سازگار با S3
به‌روز شده

راه‌اندازی MinIO روی سرور اختصاصی و VPS: ذخیره‌سازی آبجکت سازگار با S3

1405/06/020 بازدید
راه‌اندازی MinIO روی سرور اختصاصی و VPS: ذخیره‌سازی آبجکت سازگار با S3

راه‌اندازی MinIO روی سرور اختصاصی و VPS: ذخیره‌سازی آبجکت سازگار با S3

نمایی مفهومی از ذخیره‌سازی آبجکت MinIO روی زیرساخت اختصاصی MinIO یک سامانه ذخیره‌سازی آبجکت با کارایی بالا و سازگار با API سرویس Amazon S3 است. با راه‌اندازی MinIO روی سرور اختصاصی می‌توانید فایل‌های بکاپ، تصاویر، ویدئوها، آرشیوها و داده‌های اپلیکیشن را در زیرساخت خود نگه دارید، بدون آنکه نرم‌افزارهای متصل به S3 را تغییر اساسی دهید. MinIO برخلاف فایل‌سیستم‌های سنتی، داده را در قالب «آبجکت» داخل باکت‌ها مدیریت می‌کند. هر آبجکت شامل داده، نام و متادیتاست و از طریق API در دسترس قرار می‌گیرد. این مدل برای اپلیکیشن‌های ابری، سامانه‌های بکاپ، پلتفرم‌های انتشار محتوا و داده‌های حجیم مناسب است. در این راهنما MinIO را روی سرور مجازی یا سرور اختصاصی، مبتنی بر Ubuntu Server نصب می‌کنیم، آن را به‌صورت سرویس systemd اجرا می‌کنیم، دسترسی شبکه و TLS را تنظیم می‌کنیم و در پایان با ابزار mc (مشابه ابزارهای خط فرمان سازگار با S3 مانند s3cmd) یک باکت آزمایشی می‌سازیم.

نمودار ساختار باکت و آبجکت در MinIO و نحوه ارتباط آن با API سازگار با S3

MinIO برای چه سناریوهایی مناسب است؟

سازگاری MinIO با S3 باعث می‌شود بسیاری از ابزارهایی که از Amazon S3 پشتیبانی می‌کنند، بتوانند به یک سرور MinIO نیز متصل شوند. برای نمونه می‌توان از آن در سناریوهای زیر استفاده کرد: - نگهداری بکاپ سرورها، پایگاه‌های داده و ماشین‌های مجازی - ذخیره تصاویر و فایل‌های آپلودشده توسط کاربران - آرشیو لاگ‌ها و خروجی سامانه‌های مانیتورینگ - ایجاد فضای ذخیره‌سازی برای CI/CD و مصنوعات نرم‌افزاری - نگهداری داده‌های تحلیلی و Data Lake - جایگزینی فضای ذخیره‌سازی محلی در اپلیکیشن‌های سازگار با S3 - ساخت فضای خصوصی برای ابزارهایی مانند Restic، Velero و Rclone MinIO یک فایل‌سرور معمولی مانند NFS نیست. اگر کاربران باید فایل‌ها را به شکل پوشه‌های شبکه‌ای Mount کنند، احتمالاً NFS یا Samba انتخاب مستقیم‌تری است. MinIO زمانی ارزش بیشتری دارد که اپلیکیشن از طریق HTTP و API با داده‌ها کار کند.

سرور اختصاصی یا VPS؛ کدام گزینه مناسب‌تر است؟

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

معیارVPSسرور اختصاصی
هزینه شروعکمتربیشتر
مناسب برایتست، توسعه و بار سبکمحیط عملیاتی و داده حجیم
عملکرد دیسکوابسته به زیرساخت مجازی‌سازیپایدارتر و قابل پیش‌بینی‌تر
ظرفیت توسعهافزایش پلن یا افزودن دیسکامکان استفاده از چند دیسک
ایزوله‌سازی منابعاشتراکی یا نیمه‌اختصاصیمنابع سخت‌افزاری اختصاصی
تحمل خرابیوابسته به معماری ارائه‌دهندهنیازمند طراحی RAID یا کلاستر

برای محیط عملیاتی، MinIO را صرفاً روی یک دیسک سیستم‌عامل اجرا نکنید. بهتر است داده‌ها روی دیسک یا Volume مجزا قرار گیرند. همچنین RAID جای بکاپ را نمی‌گیرد؛ RAID فقط در برابر خرابی بعضی دیسک‌ها کمک می‌کند و از حذف اشتباه، باج‌افزار یا خرابی منطقی محافظت نمی‌کند.

پیش‌نیازهای نصب MinIO

در این آموزش فرض می‌کنیم موارد زیر آماده هستند: - یک سرور Ubuntu 22.04 یا 24.04 - کاربر دارای دسترسی sudo - حداقل ۲ هسته پردازنده و ۴ گیگابایت حافظه برای بار سبک - یک دیسک یا پارتیشن مجزا برای داده‌ها - دامنه‌ای مانند s3.example.com - دسترسی به پورت‌های 9000 و 9001 در زمان پیکربندی - ساعت سیستم همگام‌شده با NTP پورت 9000 برای API سازگار با S3 و پورت 9001 برای کنسول مدیریتی MinIO استفاده می‌شود. در محیط عملیاتی بهتر است کنسول مدیریتی فقط از IPهای مورد اعتماد، VPN یا شبکه خصوصی قابل دسترسی باشد؛ برای محدودسازی این دسترسی می‌توانید از راهنمای تنظیم فایروال با UFW کمک بگیرید.

آماده‌سازی دیسک و کاربر سرویس

ابتدا یک کاربر سیستمی بدون امکان ورود تعاملی ایجاد کنید:

sudo useradd --system --home-dir /var/lib/minio --shell /usr/sbin/nologin minio-user
sudo mkdir -p /var/lib/minio /data/minio
sudo chown -R minio-user:minio-user /var/lib/minio /data/minio

در این مثال، /data/minio مسیر نگهداری آبجکت‌هاست. اگر دیسک جداگانه‌ای دارید، ابتدا آن را فرمت و روی /data سوار کنید و سپس رکورد مناسب را در /etc/fstab قرار دهید. پیش از ادامه، با دستور زیر فضای آزاد و محل Mount را بررسی کنید:

df -hT /data/minio

دایرکتوری داده نباید در اختیار کاربر وب‌سرور یا کاربران عادی سیستم قرار گیرد. دسترسی مستقیم به فایل‌های داخلی MinIO نیز توصیه نمی‌شود؛ خواندن و نوشتن داده باید از طریق API انجام شود.

نصب باینری MinIO

بسته رسمی متناسب با معماری سرور را دریافت و نصب کنید:

curl -LO https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo install minio /usr/local/bin/minio
/usr/local/bin/minio --version

برای سرورهای ARM64 باید فایل متناظر با linux-arm64 را دریافت کنید. در محیط حساس، هش فایل دانلودشده را با مقدار منتشرشده در منبع رسمی مقایسه کنید و نسخه MinIO را در فرایند نگهداری سرور به‌صورت دوره‌ای به‌روزرسانی کنید.

تعریف متغیرهای محیطی

اطلاعات ورود مدیر و گزینه‌های اجرای سرویس را در فایل /etc/default/minio قرار دهید:

sudo nano /etc/default/minio

محتوای فایل می‌تواند به شکل زیر باشد:

MINIO_ROOT_USER=minioadmin-prod
MINIO_ROOT_PASSWORD=CHANGE-THIS-TO-A-LONG-RANDOM-PASSWORD
MINIO_VOLUMES="/data/minio"
MINIO_OPTS="--address :9000 --console-address :9001"
MINIO_SERVER_URL="https://s3.example.com"
MINIO_BROWSER_REDIRECT_URL="https://console.example.com"

رمز مدیر باید طولانی، تصادفی و منحصربه‌فرد باشد. برای دامنه‌هایی مانند s3.example.com و console.example.com که در بالا تنظیم شد، پیش از انتشار عمومی سرویس حتماً یک گواهی TLS معتبر صادر کنید؛ آموزش گواهی SSL ابزار Let's Encrypt در اوبونتو 20.04 مراحل کامل این کار را توضیح می‌دهد. این فایل را نیز فقط برای کاربر ریشه قابل خواندن کنید:

sudo chown root:root /etc/default/minio
sudo chmod 600 /etc/default/minio

حساب ریشه MinIO را در اپلیکیشن‌ها استفاده نکنید. پس از نصب، برای هر سرویس یک کاربر یا Access Key مستقل با حداقل دسترسی لازم بسازید.

ساخت سرویس systemd

برای اجرای خودکار MinIO، فایل /etc/systemd/system/minio.service را ایجاد کنید: ```ini