What is Minio?Minio is an open source distributed object storage server written in Go, designed for Private Cloud infrastructure providing S3 storage functionality. It is the best server which is suited for storing unstructured data such as photos, videos, log files, backups, and container. Size of an object can be range from a KBs to a maximum of 5TB. It server is light enough with application stacks like Redis, MySql, and Gitlab.
Today's cloud ecosystem features a kind of various cloud strategies designed to suit organizations. Click to explore about, Multi vs Hybrid vs Hybrid Multi-Cloud vs. Private Cloud
How does Minio works?
It supports multiple pluggable storage backend including local disk, Kubernetes PVC, NAS and object storage provided by Public Cloud like Azure and GCP. It supports eraser codi ng which replicates & divides the data and spread it across multiple drives providing high availability and reliability. It has a single standalone deployment with a single disk or multiple disks, distributed cluster where it runs on various hosts. Disks can be EBS, Google Disk, Ceph RBD, ISCSI disk, direct attached hard disk, or it can be a folder and folder backed by NFS. It uses erasure coding which divides data into smaller objects and spread across multiple disks protecting from disk failure, redundancy, and scalability.
It can also leverage existing object storage solutions like Azure blob storage and object storage on Google Cloud Platform. It acts as an S3 object layer transparently on top of existing object storage providing a single interface for accessing multiple Cloud storage. Also, leverage it on existing Docker and Kubernetes environment providing object storage to Microservices. It can consume the disks in the form of PVC and store data on them.
A cloud OS which controls large pools of computing, storage, and networking resources throughout a datacenter. Click to explore about, OpenStack Cloud Managed Services
What are the benefits?
The benefits of Minio are listed below:
- S3 API compatibility.
- Data Redundancy.
- High Availability.
- Horizontal and vertical scaling.
- Supports multiple Pluggable storage backend.
- Data security using encryption on both server and client side
How to set up it?
Pre-requisites for implementing Minio:
- One Ubuntu 16.04 server set up by following initial server setup.
- A fully registered domain name.
- Following DNS records set up its server. Follow this hostname for details on how to add them.
- A record with your server name (minio_server.com) pointing to your object server's IPv4 address.
- Install Go on Ubuntu 16.04.
- Installing and Configuring MINIO server.
- Installing the Systemd Startup Script.
- Starting a MINIO Server.
- Securing Access to its Server With an SSL/TLS Certificate.
- Securely connecting to it with web Interface using HTTPS.
Why it matters?In this distributed mode to set up a highly - available storage system with a single object storage deployment. With distributed, optimally use storage devices, irrespective of location in a network.
Data ProtectionIn this, Distributed its protects multiple nodes and drives failures and bit rot using erasure code. The minimum disks required for this distributed Minio is 4, this erasure code is automatically hit as distributed its launched.
High AvailabilityA stand-alone Minio server goes down if the server hosting the disk goes offline.There is also Distributed its setup with n number of the disk with safe data as long as more disks are online. Therefore, need minimum of disks to create new objects.
LimitsIn Minio there are the stand-alone mode, the distributed mode has per usage required minimum limit 2 and maximum 32 servers. But there is no limit of disks shared across its server. If we need multiple setups, quickly spin up multiple Minio Instances managed by tool like Kubernetes.
A new paradigm for developing and running software applications that incorporates technological trends such as cloud computing, containerization, serverless, and microservices Click to explore about, Cloud-Native Storage Solutions
What are the best practices?It is a Private Cloud deployed via Docker Compose and Swarm mode. The main difference between these two being, Docker Compose creates a single host, multi-container deployment, while Swarm mode creates a multi-host, multi-container deployment. This means Docker compose get started with it on computer-ideal for deployment, testing staging environment. While deploying Distributed Minio on Swarm offers a more robust, production level deployment.
- Its Custom Access and Secret Keys.
- Its Custom Access and Secret Keys using Docker secrets.
- Create a Minio service using Docker service to read from Docker secrets.
- Its Custom Access and Secret Key files.
- Retrieving Container ID.
- Starting and Stopping Containers.
- Minio container logs.
- Monitor its Docker Container.