From a0750152938db65d50936ef94996de415fe1f30b Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Tue, 11 Jun 2019 13:44:33 -0700 Subject: [PATCH] doc: Merge large bucket with distributed docs (#7761) --- docs/{large-bucket => distributed}/DESIGN.md | 0 docs/distributed/README.md | 32 ++++++------ docs/large-bucket/README.md | 47 ------------------ .../Architecture-diagram_distributed_32.png | Bin 0 -> 45357 bytes 4 files changed, 16 insertions(+), 63 deletions(-) rename docs/{large-bucket => distributed}/DESIGN.md (100%) delete mode 100644 docs/large-bucket/README.md create mode 100644 docs/screenshots/Architecture-diagram_distributed_32.png diff --git a/docs/large-bucket/DESIGN.md b/docs/distributed/DESIGN.md similarity index 100% rename from docs/large-bucket/DESIGN.md rename to docs/distributed/DESIGN.md diff --git a/docs/distributed/README.md b/docs/distributed/README.md index d96ff3a0f..a5cfa2e86 100644 --- a/docs/distributed/README.md +++ b/docs/distributed/README.md @@ -14,23 +14,23 @@ Distributed MinIO provides protection against multiple node/drive failures and [ A stand-alone MinIO server would go down if the server hosting the disks goes offline. In contrast, a distributed MinIO setup with _n_ disks will have your data safe as long as _n/2_ or more disks are online. You'll need a minimum of _(n/2 + 1)_ [Quorum](https://github.com/minio/dsync#lock-process) disks to create new objects though. -For example, an 8-node distributed MinIO setup with 1 disk per node would continue serving files, even if up to 4 disks are offline. But, you'll need at least 5 disks online to create new objects. +For example, an 16-node distributed MinIO setup with 16 disks per node would continue serving files, even if up to 8 servers are offline. But, you'll need at least 9 servers online to create new objects. ### Limits -As with MinIO in stand-alone mode, distributed MinIO has a per tenant limit of minimum 2 and maximum 32 servers. There are no limits on number of disks shared across these servers. If you need a multiple tenant setup, you can easily spin up multiple MinIO instances managed by orchestration tools like Kubernetes. +As with MinIO in stand-alone mode, distributed MinIO has a per tenant limit of minimum of 2 and maximum of 32 servers. There are no limits on number of disks across these servers. If you need a multiple tenant setup, you can easily spin up multiple MinIO instances managed by orchestration tools like Kubernetes, Docker Swarm etc. -Note that with distributed MinIO you can play around with the number of nodes and drives as long as the limits are adhered to. For example, you can have 2 nodes with 4 drives each, 4 nodes with 4 drives each, 8 nodes with 2 drives each, 32 servers with 24 drives each and so on. +Note that with distributed MinIO you can play around with the number of nodes and drives as long as the limits are adhered to. For example, you can have 2 nodes with 4 drives each, 4 nodes with 4 drives each, 8 nodes with 2 drives each, 32 servers with 64 drives each and so on. -You can also use [storage classes](https://github.com/minio/minio/tree/master/docs/erasure/storage-class) to set custom data and parity distribution across total disks. +You can also use [storage classes](https://github.com/minio/minio/tree/master/docs/erasure/storage-class) to set custom data and parity distribution per object. ### Consistency Guarantees -MinIO follows strict **read-after-write** consistency model for all i/o operations both in distributed and standalone modes. +MinIO follows strict **read-after-write** and **list-after-write** consistency model for all i/o operations both in distributed and standalone modes. # Get started -If you're aware of stand-alone MinIO set up, the process remains largely the same, as the MinIO server automatically switches to stand-alone or distributed mode, depending on the command line parameters. +If you're aware of stand-alone MinIO set up, the process remains largely the same. MinIO server automatically switches to stand-alone or distributed mode, depending on the command line parameters. ## 1. Prerequisites @@ -43,25 +43,25 @@ To start a distributed MinIO instance, you just need to pass drive locations as *Note* - All the nodes running distributed MinIO need to have same access key and secret key for the nodes to connect. To achieve this, it is **mandatory** to export access key and secret key as environment variables, `MINIO_ACCESS_KEY` and `MINIO_SECRET_KEY`, on all the nodes before executing MinIO server command. -- All the nodes running distributed MinIO need to be in a homogeneous environment, i.e. same operating system, same number of disks and same interconnects. -- `MINIO_DOMAIN` environment variable should be defined and exported if domain is needed to be set. -- MinIO distributed mode requires fresh directories. If required, the drives can be shared with other applications. You can do this by using a sub-directory exclusive to minio. For example, if you have mounted your volume under `/export`, pass `/export/data` as arguments to MinIO server. +- All the nodes running distributed MinIO setup are recommended to be in homogeneous environment, i.e. same operating system, same number of disks and same network interconnects. +- MinIO distributed mode requires fresh directories. If required, the drives can be shared with other applications. You can do this by using a sub-directory exclusive to MinIO. For example, if you have mounted your volume under `/export`, pass `/export/data` as arguments to MinIO server. - The IP addresses and drive paths below are for demonstration purposes only, you need to replace these with the actual IP addresses and drive paths/folders. -- Servers running distributed MinIO instances should be less than 3 seconds apart. You can use [NTP](http://www.ntp.org/) as a best practice to ensure consistent times across servers. -- Running Distributed MinIO on Windows is experimental as of now. Please proceed with caution. +- Servers running distributed MinIO instances should be less than 15 minutes apart. You can enable [NTP](http://www.ntp.org/) service as a best practice to ensure same times across servers. +- Running Distributed MinIO on Windows operating system is experimental. Please proceed with caution. +- `MINIO_DOMAIN` environment variable should be defined and exported if domain is needed to be set. + +Example 1: Start distributed MinIO instance on 32 nodes with 32 drives each mounted at `/export1` to `/export32` (pictured below), by running this command on all the 32 nodes: +![Distributed MinIO, 32 nodes with 32 drives each](https://github.com/minio/minio/blob/master/docs/screenshots/Architecture-diagram_distributed_32.png?raw=true) -Example 1: Start distributed MinIO instance on 8 nodes with 1 disk each mounted at `/export1` (pictured below), by running this command on all the 8 nodes: -![Distributed MinIO, 8 nodes with 1 disk each](https://github.com/minio/minio/blob/master/docs/screenshots/Architecture-diagram_distributed_8.jpg?raw=true) #### GNU/Linux and macOS ```sh export MINIO_ACCESS_KEY= export MINIO_SECRET_KEY= -minio server http://192.168.1.1{1...8}/export1 +minio server http://host{1...32}/export{1...32} ``` - -__NOTE:__ `{1...n}` shown have 3 dots! Using only 2 dots `{1..4}` will be interpreted by your shell and won't be passed to minio server, affecting the erasure coding order, which may impact performance and high availability. __Always use `{1...n}` (3 dots!) to allow minio server to optimally erasure-code data__ +__NOTE:__ `{1...n}` shown have 3 dots! Using only 2 dots `{1..32}` will be interpreted by your shell and won't be passed to minio server, affecting the erasure coding order, which may impact performance and high availability. __Always use ellipses syntax `{1...n}` (3 dots!) for optimal erasure-code distribution__ ## 3. Test your setup To test this setup, access the MinIO server via browser or [`mc`](https://docs.min.io/docs/minio-client-quickstart-guide). diff --git a/docs/large-bucket/README.md b/docs/large-bucket/README.md deleted file mode 100644 index 19ef43a4d..000000000 --- a/docs/large-bucket/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Large Bucket Support Quickstart Guide [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) [![Go Report Card](https://goreportcard.com/badge/minio/minio)](https://goreportcard.com/report/minio/minio) [![Docker Pulls](https://img.shields.io/docker/pulls/minio/minio.svg?maxAge=604800)](https://hub.docker.com/r/minio/minio/) - -Erasure code in MinIO is limited to 16 disks. This on its own allows storage space to hold a tenant's data. However, to cater to cases which may need larger number of disks or high storage space requirements, large bucket support was introduced. - -We call it large-bucket as it allows a single MinIO bucket to expand over multiple erasure code deployment sets. Without any special configuration it helps you create peta-scale storage systems. With large bucket support, you can use more than 16 disks upfront while deploying the MinIO server. Internally MinIO creates multiple smaller erasure coded sets, and these sets are further combined into a single namespace. This document gives a brief introduction on how to get started with large bucket deployments. To explore further on advanced uses and limitations, refer to the [design document](https://github.com/minio/minio/blob/master/docs/large-bucket/DESIGN.md). - -## Get started -If you're aware of distributed MinIO setup, the installation and configuration remains the same. Only new addition to the input syntax is `...` convention to abbreviate the drive arguments. Remote drives in a distributed setup are encoded as HTTP(s) URIs which can be similarly abbreviated as well. - -### 1. Prerequisites -Install MinIO - [MinIO Quickstart Guide](https://docs.min.io/docs/minio-quickstart-guide). - -### 2. Run MinIO on many drives -We'll see examples on how to do this in the following sections. - -*Note* - -- All the nodes running distributed MinIO need to have same access key and secret key. To achieve this, we export access key and secret key as environment variables on all the nodes before executing MinIO server command. -- The drive paths below are for demonstration purposes only, you need to replace these with the actual drive paths/folders. - -#### MinIO large bucket on multiple drives (standalone) -You'll need the path to the disks e.g. `/export1, /export2 .... /export24`. Then run the following commands on all the nodes you'd like to launch MinIO. - -```sh -export MINIO_ACCESS_KEY= -export MINIO_SECRET_KEY= -minio server /export{1...24} -``` - -#### MinIO large bucket on multiple servers (distributed) -You'll need the path to the disks e.g. `http://host1/export1, http://host2/export2 .... http://host4/export16`. Then run the following commands on all the nodes you'd like to launch MinIO. - -```sh -export MINIO_ACCESS_KEY= -export MINIO_SECRET_KEY= -minio server http://host{1...4}/export{1...16} -``` - -### 3. Test your setup -To test this setup, access the MinIO server via browser or [`mc`](https://docs.min.io/docs/minio-client-quickstart-guide). You’ll see the uploaded files are accessible from the all the MinIO endpoints. - -## Explore Further -- [Use `mc` with MinIO Server](https://docs.min.io/docs/minio-client-quickstart-guide) -- [Use `aws-cli` with MinIO Server](https://docs.min.io/docs/aws-cli-with-minio) -- [Use `s3cmd` with MinIO Server](https://docs.min.io/docs/s3cmd-with-minio) -- [Use `minio-go` SDK with MinIO Server](https://docs.min.io/docs/golang-client-quickstart-guide) -- [The MinIO documentation website](https://docs.min.io) diff --git a/docs/screenshots/Architecture-diagram_distributed_32.png b/docs/screenshots/Architecture-diagram_distributed_32.png new file mode 100644 index 0000000000000000000000000000000000000000..a49df2dbe647a5cf389b30c0f3cce2815578ca56 GIT binary patch literal 45357 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 Mj2-r!ooo0RPY zG3j;#1yGU)jpkxE3kVLjE-`SQ4t#0joxEsCmy20xT@ z?R>({ngUsKg!l)#YT@$^c?%ysNKHE1~P&fo;BO4&Px- zSTXDC!DHN|z6W|5lYu&nEx}US`x+st>BuS`t8>EuOc8b{YH#J#=|E$aYkx@HR(FxU zOZeLE&JUeS%|DcA$mD)J4~_r&`N|_bDoE!{Pwhbs=E9~sj0fsurj>cxeBBddjvs%) zJCy_R2A||}O{?4B>qRoN8!#9y3h@l{RA~=vWxYIiUMlG#s$?_ej!v#bz{?sv^=ZFWuRf@zFWlXb=6aQhhyOM!H7S4D_2k~ev6JS|{N~uO5$WP56`u_a_@C1MIPW@|Y<|7Y^lgR_H3S^V^qx*AZ z&MReIW~Qg3qjqBN!AJi_=sAn_u!P?bM?_(@sH1Jx{OQ5ndFj{Yi4XZ-r%xKfK!k=0 zp@HUTcR!sjJ^>`mNi32<+ZHxM8*P_W;bkf47uGwz5F`)rQy%w%ze16!#Rmd59fwK9%-M%HLKcE#@sQwO$t;Xqo)bST)#a zh?+NrVwkW+B;Qg;+tYG={8lFvMx;VUVVfs3rg}E@24Ni1-~^ z?bE6%?&~hxSvkXw=G5O(oK**GT&6($K?V9liGCOT{5TiF0au2ZU04>DFuV`}nRD7m z5}1m6)$IcS$++#KYx9ZYCl+?*;lNaR#R)G3ayd=_mN7p+Pb7-Iw$og=pl{48*VB-| zd>Uoco0gfK{U~G3={|;jJ0pSjJ_3@?WX%QkbJ%S?^o^TCdD+;2-H(2K@*}^nJdYb} zemR)2p@-czp7yjcn;gLnF=%;f4ZYpl(D%8wcA&xLQOm3chhnO0+Ot50Hu3zI!j@NA z1vNv>G~qt(Jgo7r{CGXwOV=+M20-y~Q!80Vj+w*8M8b_#E$pxk3vHWD9KA*PObl;Q zI1Pim!={eWlUv(J4_WR#Feu=47W{Ri)Z8%&In#1PMg}%>VA#f-Ar;N#x{-digA@^) z$CW2_P_xnd^Rakl7{Q188*8|z3sxd=>z0%jvJ+d(br^^8#M5aNbvN5PN< z{FgnyGe%r^V76BEnZbhonl^c$`NhrpfU%NQ4tJ-Z_!&_X_ZdGAJ)--mOCB6YTiF9W znv#39&FStUpD22U4Zpn6n;)Nb?(!sGUj(63Rmw=yBj((K*|W$fCmvz92NENuV`pqlTDyai=qcIyp{Mvfbb^%H+=u2QjaD0v43KmSX-R&UyPCtyQ&`HxHKv24IJ2 z8podSEcg5VG`T1r9}F?fS7tHsZ&avmkMDJboyddTcT_q($G)j_Ja(C`lmFD%?0 z^T3q)qypX&Q&yh&?P>JRseqq;Ub?ENim$cNzfB!)C2dH9b9f zT>M8niRn#O^see2HS(%zYrDOz`w!ytH&NN+B>&Ej{^noQQU4ID|Jxf0uU2+x^jFX? U>