What NooBaa, a software-defined storage solution, brings to the table?
NooBaa is really an interesting open-source tool that enables agility, flexibility, and hybrid cloud capabilities. When I call it a tool, your brain must be projecting it like a sort of management utility or a utility that is just mapping multi-cloud endpoints. It does more than what you imagine as a tool. Nowadays the storage solutions look so simple that they can be brought up using a single binary or on a container environment. That made me call it a tool but if you check NooBaa’s architecture, then you will come to know that it’s a complete software-driven infrastructure that provides inline deduplication, replication, live migration, active archive, backup, etc. That’s a little bit about NooBaa. Please do check NooBaa’s homepage for more information.
Let's jump into our experiment with Nooba, see how we can map the S3 compatible Gluster private cloud, apply mirror policy on the bucket and copy an object to the bucket
Note: I have done this experiment on Fedora32 and you may face issues with docker on Fedora32 due to new CGroups and NFTables for the firewall. Follow this to solve it.
Step 1. How to set up S3 compatible Gluster private cloud
Please refer to my previous article to get the S3 server endpoint for our Gluster storage.
Note: If you want to just export the local directory as an S3 endpoint to experiment with NooBaa refer to this. I am referring to Gluster storage just to keep the continuity with my exploration with Gluster and find the answers for my own questions.
Step 2. How to set up NooBaa?
NooBaa runs in a containerized environment and this link will help you get it running. The steps in the link are quite clearly explained how to set it up and I am redirecting you to the same rather than just copy-pasting them here. Also, the author may edit the steps in the future so referring to the direct page will keep us updated about future changes. NooBaa can also be brought up using minikube but I am considering docker containers in this article. Once the infrastructure is set up, you will observe 3 containers i.e
# docker ps
- noobaa-endpoint: S3 compatible endpoint
- noobaa-core: NooBaa metadata store
- noobaa-db: MongoDB to track objects stored on storage resource
The below diagram gives the high-level architecture of these components:
After following the above 2 steps, we are ready to
3. Explore what NooBaa offers to us.
- I am using Minio as server endpoint and it can be accessed over the browser at http://192.168.56.101:9000. Create some 3 buckets (follow this video for more information) and these buckets are used as storage resources for NooBaa.
- NooBaa provides a management UI to maintain cloud resources and manage policies. Access http://127.0.0.1:8080 for management UI provide credentials to login. We have configured endpoint credentials while doing Noobaa set up and here they are
Note: NooBaa offers a lot of things but I am focussing on minimal stuff to get the things started.
3. Follow this video to add the cloud resource, target bucket that we set up in step1 and create mirror policy among them
4. Now, we have buckets/resources ready on Noobaa. So go and upload an object to that and check object policies that we applied to the bucket in the previous step on Noobaa UI. Here is the video link for that.
Set up s3 alias and execute s3 commands to access the bucket
That's it for this article. Explore NooBaa and comment on this article.