خلاصه مقاله
با چند عدد Raspberry Pi 5 میتوانید یک خوشه قدرتمند و کممصرف بسازید که برنامههای کانتینری را بدون دردسر اجرا کند. Docker Swarm گزینهای سبک و سادهتر از Kubernetes است و برای آزمایشگاه خانگی بسیار مناسب است.
چرا Docker Swarm برای آزمایشگاه خانگی؟
Docker Swarm راهاندازی و مدیریتش آسان است، منابع کمی مصرف میکند و روی سختافزار سبز مانند Raspberry Pi 5 بهخوبی کار میکند. نیازی به تنظیمات پیچیده ندارید و در عین حال میتوانید برنامهها را بین چند نود تقسیم کنید.
لیست سختافزار پیشنهادی
- ۴ عدد Raspberry Pi 5 با ۸ گیگابایت رم
- درایو NVMe برای هر بورد (سرعت بالا و مصرف کم)
- قفسه ۱U برای نگهداری مرتب
- اسپلیتر Power over Ethernet (PoE) برای کاهش تعداد کابلها
مراحل راهاندازی
۱. آمادهسازی Raspberry Pi 5
سیستمعامل Raspberry Pi OS را روی حافظه microSD یا همان NVMe نصب کنید. اتصال شبکه و PoE را برقرار کنید تا برق و شبکه از یک کابل تأمین شود.
۲. نصب Docker
روی هر بورد دستور زیر را اجرا کنید تا Docker نصب شود:
curl -sSL https://get.docker.com | sh
سپس سرویس را فعال و کاربر جاری را به گروه docker اضافه کنید.
۳. راهاندازی Swarm
روی یکی از بوردها بهعنوان Manager دستور زیر را بزنید:
docker swarm init --advertise-addr [IP-Manager]
کد join که نمایش داده میشود را روی بقیه نودهای Worker اجرا کنید.
۴. تعیین نقشها
نقش | وظیفه |
---|---|
Manager | مدیریت خوشه و زمانبندی سرویسها |
Worker | اجرا و نگهداری کانتینرها |
در صورت نیاز میتوان Manager یا Worker را تغییر داد.
۵. استقرار سرویسها با Docker Compose
فایل docker-compose.yml بنویسید و دستور زیر را بزنید:
docker stack deploy -c compose.yml myapp
برای مقیاسپذیری کافی است مقدار replicas را افزایش دهید.
نکات مهم برای دسترسپذیری بالا
اگر یک نود از کار بیفتد، Swarm سرویس را روی نود دیگر بالا میآورد؛ ولی پس از بازگشت نود، توزیع بار بهصورت خودکار تعدیل نمیشود. برای تعادل دستی میتوانید اسکریپت سادهای بنویسید و در cron اجرا کنید.
ساخت NFS برای حافظه اشتراکی (اختیاری)
یک Raspberry Pi را بهعنوان سرور NFS تنظیم کنید و پوشهای را با بقیه نودها به اشتراک بگذارید. بدین ترتیب حجمها volume از هر نودی قابل دسترساند و سرویسها بدون وقفه جابهجا میشوند.
Docker Swarm یا Kubernetes؟
اگر به خودترمیمی پیشرفته، Auto-Scaling و ابزارکیهای سنگین نیاز ندارید، Swarm انتخاب سبکتری است. Kubernetes در مقیاس کوچک پیچیده و پرمصرف است؛ Swarm بدون دردسر راه میافتد و یادگیریاش سریع است.