تجربه راه اندازی و استفاده از سرویس Minio
Minio سرویس Object Storage متن بازی است که سهولت در راه اندازی و استفاده از آن و Stability این سرویس باعث شده انتخاب شرکت هایی مثل Paypal , Bloomberg و … باشد . البته در این متن اصلا قصد مقایسه مزایا یا تبلیغ آن را ندارم. قطعا در مقالات معتبری مزایا و معایب این سرویس به خوبی بیان شده است .در این متن تجربه راه اندازی و استفاده از این سرویس را بیان خواهم کرد .
در مرحله اول این سرویس با توجه به داکیومنت اصلی خود سرویس نصب کردیم .
https://docs.min.io/minio/baremetal/tutorials/minio-installation.html
سرویس را ما به صورت Distributed پیاده سازی کردیم. Minio با استفاده از الگوریتم Erasure Code دیتا را Shard میکند و با ساخت parity blocks این اطمینان به وجود می اورد که با ضریب خطایی مشخص دیتا همیشه در دسترس خواهد بود و از بین نمیرود .
یک موضوعی که تو بحث Performance و حجم دیتا تاثیر دارد موضوع storage classes هست . با انتخاب حالت بهینه تر ( باید حساسیت دیتا در نظر گرفته شود ) می توانیم کلاستر بهینه تر داشته باشیم . حتما این موضوع بررسی کنید که آیا حالت اولیه که Standard Class هست مناسب دیتا و کلاستر شما هست یا خیر .
موضوع بعد انتخاب دیسک های سخت افزار هست . اگر شما Best Practice های این سرویس بررسی کنید قطعا باید این سرویس بدون Raid ایجاد بشه و حتما مدل و سرعت دیسک های سخت افزاری شما در کیفیت کلاستر تاثیر داره . پیشنهاد من استفاده از دیسک های SSD یا SAS 15k - 10k هست . حتما در محاسبات اولیه به موضوع IOps سرویس Minio توجه کنین که به مشکلاتی مثل IOwait در ترافیک بالا برخورد نکنید . دیسک ها باید سایز یکسانی داشته باشن که بالانس حجمی در تمامی دیسک ها رعایت شده باشد . من راهکاری ندیدم که بتوان از دیسک هایی با حجم های متفاوت استفاده کرد و خود کلاستر این موضوع مدیریت کند . شاید در نسخه جدید اینجور قابلیت باشد . چون دیتا روی تمام دیسک ها به طور مرتب در حال نوشته شدن هست قطعا کند بودن حتی یک دیسک سخت افزاری روی Performance کل کلاستر تاثیر خواهد گذاشت .
این مقاله https://min.io/resources/docs/MinIO-Throughput-Benchmarks-on-HDD-24-Node.pdf
به خوبی موارد پیشنهادی برای Performance Optimization سرویس بیان کرده . مواردی چون Sysctl , بحث سایز و کیفیت دیسک ها و … در آخر هم میتونین با ابزار هایی مثل https://github.com/wasabi-tech/s3-benchmark کیفیت و توان کلاستر خودتون تست کنین .
یک موضوع دیگه باید بهش اشاره کنم بحث Scale Up کردن کلاستر هست . تا جایی که من بررسی کردم نمیشه به کلاستر دیسک جدید اضافه کرد . اما میشه به حالت Federate کلاستر جدیدی را اضافه کنین . ( این موضوع در داکیومنت جدید Deprecated شده )
در هر صورت بهتر با توجه به این موضوع از ابتدا تعداد Node ( حداقل ۴ Node ) و تعداد دیسک ( با سایز مناسب ) انتخاب کنید.
برای مانیتورینگ من از Integration مربوط به Prometheus استفاده کردم که به خوبی حجم کلاستر و دیتا مربوط به ارتباطات کلاستر را Expose میکنه و با داشبورد مناسب میشه به طور کامل کلاستر و کیفیت سرویس Object Storage را بررسی کرد .

بهتر یک وب سرور Nginx به عنوان Reverse Proxy سر راه کلاستر قرار بگیره که درخواست ها را Load Balance کنه بین Node های Minio و بحث Fail Over بین Node ها را برقرار کند .
https://docs.min.io/docs/setup-nginx-proxy-with-minio.html در مجموع اگر نیاز به یک سرویس Object Storage دارین Minio میتونه گزینه خوبی باشه . قطعا ممکن شما تجربه یا چالش بزرگتری در راه اندازی و استفاده از این سرویس داشتید و ممنون میشم که این تجربه رو با ما به اشتراک بگذارید .

مطلبی دیگر از این انتشارات
مانیتورینگ در لینوکس
مطلبی دیگر از این انتشارات
آیا میشه کد های php رو کامپایل کرد؟!
مطلبی دیگر از این انتشارات
روش های پاک کردن مقدار از آرایه در جاوا اسکریپت