Deploy MinIO on Docker Swarm
Docker Swarm에 MinIO 배포
Docker Engine provides cluster management and orchestration features in Swarm mode.
Docker 엔진은 Swarm 모드에서 클러스터 관리 및 오케스트레이션 기능을 제공합니다.
MinIO server can be easily deployed in distributed mode on Swarm to create a multi-tenant, highly-available and scalable object store.
MinIO 서버는 Swarm의 분산 모드로 쉽게 배포되어 다중 테넌트, 고가용성 및 확장 가능한 객체 저장소를 생성할 수 있습니다.
As of Docker Engine v1.13.0 (Docker Compose v3.0), Docker Swarm and Compose are cross-compatible.
Docker Engine v1.13.0(Docker Compose v3.0)부터 Docker Swarm과 Compose는 상호 호환됩니다.
This allows a Compose file to be used as a template to deploy services on Swarm.
이를 통해 Compose 파일을 Swarm에 서비스를 배포하기 위한 템플릿으로 사용할 수 있습니다.
We have used a Docker Compose file to create distributed MinIO setup.
Docker Compose 파일을 사용하여 분산 MinIO 설정을 만들었습니다.
1. Prerequisites
1. 전제조건
Familiarity with Swarm mode key concepts.
Swarm 모드의 주요 개념을 숙지합니다.
Docker engine v1.13.0 running on a cluster of networked host machines.
네트워크로 연결된 호스트 시스템 클러스터에서 실행되는 Docker 엔진 v1.13.0.
2. Create a Swarm
2. swarm을 만듭니다
Create a swarm on the manager node by running
다음을 실행하여 관리자 노드에 swarm을 생성합니다
docker swarm init --advertise-addr
Once the swarm is initialized, you'll see the below response.
swarm이 초기화되면 아래 응답을 볼 수 있습니다.
docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
You can now add worker nodes to the swarm by running the above command. Find detailed steps to create the swarm on Docker documentation site.
이제 위 명령을 실행하여 swarm에 작업자 노드를 추가할 수 있습니다. Docker 설명서 사이트에서 Swarm을 생성하는 자세한 단계를 찾아보세요.
3. Create Docker secrets for MinIO
3. MinIO용 Docker 비밀 생성
echo "AKIAIOSFODNN7EXAMPLE" | docker secret create access_key -
echo "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" | docker secret create secret_key -
4. Deploy distributed MinIO services
4. 분산형 MinIO 서비스 배포
The example MinIO stack uses 4 Docker volumes, which are created automatically by deploying the stack.
예제 MinIO 스택은 스택을 배포하면 자동으로 생성되는 4개의 Docker 볼륨을 사용합니다.
We have to make sure that the services in the stack are always (re)started on the same node, where the service is deployed the first time.
우리는 스택의 서비스가 항상 서비스가 처음 배포되는 동일한 노드에서 (다시) 시작되는지 확인해야 합니다.
Otherwise Docker will create a new volume upon restart of the service on another Docker node, which is not in sync with the other volumes and the stack will fail to start healthy.
그렇지 않으면 Docker는 다른 볼륨과 동기화되지 않은 다른 Docker 노드에서 서비스를 다시 시작할 때 새 볼륨을 생성하며 스택이 정상적으로 시작되지 않습니다.
Before deploying the stack, add labels to the Docker nodes where you want the minio services to run:
스택을 배포하기 전에 minio 서비스를 실행할 Docker 노드에 레이블을 추가하세요.
docker node update --label-add minio1=true
docker node update --label-add minio2=true
docker node update --label-add minio3=true
docker node update --label-add minio4=true
It is possible to run more than one minio service on one Docker Node. Set the labels accordingly.
하나의 Docker Node에서 하나 이상의 minio 서비스를 실행할 수 있습니다. 그에 따라 레이블을 설정하십시오.
Download the Docker Compose file on your Swarm master. Then execute the command
Swarm 마스터에서 Docker Compose 파일을 다운로드합니다. 그런 다음 명령을 실행하십시오.
docker stack deploy --compose-file=docker-compose-secrets.yaml minio_stack
This deploys services described in the Compose file as Docker stack minio_stack. Look up the docker stack command reference for more info.
이는 Compose 파일에 설명된 서비스를 Docker 스택 minio_stack으로 배포합니다. 자세한 내용은 docker stack 명령 참조를 찾아보세요.
After the stack is successfully deployed, you should be able to access MinIO server via MinIO Client mc or your browser at http://[Node_Public_IP_Address]:[Expose_Port_on_Host]
스택이 성공적으로 배포되면 MinIO 클라이언트 mc 또는 브라우저 (http://[Node_Public_IP_Address]:[Expose_Port_on_Host])를 통해 MinIO 서버에 액세스할 수 있어야 합니다.
4. Remove distributed MinIO services
4. 분산된 MinIO 서비스 제거
Remove the distributed MinIO services and related network by
다음을 수행하여 분산된 MinIO 서비스 및 관련 네트워크를 제거합니다
docker stack rm minio_stack
Swarm doesn't automatically remove host volumes created for services. This may lead to corruption when a new MinIO service is created in the swarm.
Swarm은 서비스용으로 생성된 호스트 볼륨을 자동으로 제거하지 않습니다. 이로 인해 새로운 MinIO 서비스가 떼에 생성될 때 손상이 발생할 수 있습니다.
So, we recommend removing all the volumes used by MinIO, manually. To do this, logon to each node in the swarm and run ~
따라서 MinIO에서 사용하는 모든 볼륨을 수동으로 제거하는 것이 좋습니다. 이렇게 하려면 swarm의 각 노드에 로그온 하고 ~를 실행합니다.
docker volume prune
This will remove all the volumes not associated with any container.
이것은 컨테이너와 연관되지 않은 모든 볼륨을 제거합니다.
5. Accessing MinIO services
5. MinIO 서비스에 접근하기
The services are exposed, by default, on the internal overlay network by their services names (minio1, minio2, ...).
서비스는 기본적으로 해당 서비스 이름 (minio1, minio2, ...)으로 내부 오버레이 네트워크에 노출됩니다.
The docker-compose.yml file also exposes the MinIO services behind a single alias on the minio_distributed network.
docker-compose.yml 파일은 minio_distributed 네트워크의 단일 별칭 뒤에 MinIO 서비스도 노출합니다.
Services in the Swarm which are attached to that network can interact with the host "minio-cluster" instead of individual services' hostnames.
해당 네트워크에 연결된 Swarm의 서비스는 개별 서비스의 호스트 이름 대신 "minio-cluster" 호스트와 상호 작용할 수 있습니다.
This provides a simple way to loosely load balance across all the MinIO services in the Swarm as well as simplifies configuration and management.
이는 Swarm의 모든 MinIO 서비스에 걸쳐 느슨하게 로드 밸런싱을 수행하는 간단한 방법을 제공할 뿐만 아니라 구성 및 관리를 단순화합니다.
Notes
메모
By default the Docker Compose file uses the Docker image for latest MinIO server release. You can change the image tag to pull a specific MinIO Docker image.
기본적으로 Docker Compose 파일은 최신 MinIO 서버 릴리스용 Docker 이미지를 사용합니다. 이미지 태그를 변경하여 특정 MinIO Docker 이미지를 가져올 수 있습니다.
There are 4 minio distributed instances created by default. You can add more MinIO services (up to total 16) to your MinIO Swarm deployment. To add a service
기본적으로 4 개의 minio 분산 인스턴스가 생성됩니다. MinIO Swarm 배포에 더 많은 MinIO 서비스 (최대 총 16 개)를 추가할 수 있습니다. 서비스를 추가하려면
Replicate a service definition and change the name of the new service appropriately.
서비스 정의를 복제하고 새 서비스의 이름을 적절하게 변경합니다.
Add a volume in volumes section, and update volume section in the service accordingly.
볼륨 섹션에 볼륨을 추가하고 이에 따라 서비스에서 볼륨 섹션을 업데이트합니다.
Update the command section in each service. Specifically, add the drive location to be used as storage on the new service.
각 서비스의 명령 섹션을 업데이트합니다. 특히 새 서비스에서 스토리지로 사용할 드라이브 위치를 추가합니다.
Update the port number to exposed for the new service.
새 서비스에 대해 노출되도록 포트 번호를 업데이트합니다.
Read more about distributed MinIO here.
여기에서 분산 MinIO에 대해 자세히 알아보세요.
By default the services use local volume driver. Refer to Docker documentation to explore further options.
기본적으로 서비스는 로컬 볼륨 드라이버를 사용합니다. 추가 옵션을 살펴보려면 Docker 설명서를 참조하세요.
MinIO services in the Docker compose file expose ports 9001 to 9004. This allows multiple services to run on a host. Explore other configuration options in Docker documentation.
Docker 작성 파일의 MinIO 서비스는 포트 9001~9004를 노출합니다. 이를 통해 호스트에서 여러 서비스를 실행할 수 있습니다. Docker 설명서에서 다른 구성 옵션을 살펴보세요.
Docker Swarm uses ingress load balancing by default. You can configure external load balancer based on requirements.
Docker Swarm은 기본적으로 수신 로드 밸런싱을 사용합니다. 요구 사항에 따라 외부 로드 밸런서를 구성할 수 있습니다.
Explore Further
더 자세히 살펴보세요
Overview of Docker Swarm mode
Docker Swarm 모드 개요
MinIO Docker Quickstart Guide
MinIO Docker 빠른 시작 가이드
Deploy MinIO on Docker Compose
Docker Compose에서 MinIO 배포
MinIO Erasure Code QuickStart Guide
MinIO 삭제 코드 빠른 시작 가이드