docker run -d -p 9000:9000 \ --name myminio2 \ -e "MINIO_ROOT_USER=minioadmin" \ -e "MINIO_ROOT_PASSWORD=minioadmin" \ -v /data:/data \ minio/minio server /data
命令说明:
-d 表示docker 容器运行与后台服务;
-p 是docker端口映射 到 系统的端口;
--name 是 容器container的名称;
-e 是传递给 minio的 参数 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 是管理账号和密码
-v 是 系统的磁盘目录 映射 docker 的目录。即minio 的持久化目录/data 在 系统的 /data目录保存(磁盘目录)
minio/minio 默认是 最新的minio镜像
三台服务器:
192.168.1.138 本机虚拟centos 7 系统 worker1
192.168.1.151 服务器ubuntu 14 系统 manager
192.168.1.112 服务器 ubuntu 14 系统 worker2
$ docker swarm init --advertise-addr 192.168.1.151
结果:
Swarm initialized: current node (uimm49dhebfii3banhvarno5i) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-51lzu9y3sutake5mdx8vxyl61ifarw6wscyoqc7t0rfv2cxwjv-2tx88s01u3n3swtmzl6w15gha 192.168.1.151:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
下面命令是 找回 集群的manager 的 token,供其他节点加入集群
$ docker swarm join-token worker
将节点加入到swarm集群中 (用docker swarm init --advertise-addr 192.168.1.151 命令 产生的 这句代码)
$ docker swarm join --token SWMTKN-1-51lzu9y3sutake5mdx8vxyl61ifarw6wscyoqc7t0rfv2cxwjv-2tx88s01u3n3swtmzl6w15gha 192.168.1.151:2377
显示当前的节点列表
$ docker node ls
只有三台服务器,所以在manager 机上 设置两两个服务minio2和minio3 ;
minio1 在 worker1机,minio4 在worker4 上;
然后给节点 打上标签 (minio1,minio2,minio3,minio4)= hostname
docker node update --label-add minio1=true enq32nbk4dqnv2j3imohx3thh docker node update --label-add minio2=true uimm49dhebfii3banhvarno5i docker node update --label-add minio3=true uimm49dhebfii3banhvarno5i docker node update --label-add minio4=true skn55rb7pvesf7gdrdn4gcczn
说明:
enq32nbk4dqnv2j3imohx3thh
换成真实的(节点ID) (可以重复,重复说明minio3 和minio4 在同一个节点)
为minio 创建 docker 里面需要的 access_key 和secret_key参数:
echo "minioadmin" | docker secret create access_key - echo "Adminminio" | docker secret create secret_key -
在manager机,通过 yaml文件 创建minio分布式集群:
同过官网https://docs.min.io/cn/deploy-minio-on-docker-swarm.html
下载swarm部署的Docker Compose file 文件https://github.com/minio/minio/blob/master/docs/orchestration/docker-swarm/docker-compose-secrets.yaml?raw=true
cd 到docker-compose-secrets.yaml所在目录,执行命令:
$ docker stack deploy --compose-file=docker-compose-secrets.yaml minio-stack
等待创建 结束;查看4个minio服务
$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS d5j09fjglel2 minio-stack_minio1 replicated 0/1 minio/minio:RELEASE.2021-01-16T02-19-44Z *:9001->9000/tcp 61m6gn0o063p minio-stack_minio2 replicated 1/1 minio/minio:RELEASE.2021-01-16T02-19-44Z *:9002->9000/tcp zjequs1zls0g minio-stack_minio3 replicated 1/1 minio/minio:RELEASE.2021-01-16T02-19-44Z *:9003->9000/tcp yvmayjokqmdh minio-stack_minio4 replicated 1/1 minio/minio:RELEASE.2021-01-16T02-19-44Z *:9004->9000/tcp
我们看到这个上面列表 第一栏 创建的服务,没有启动成功。
这个时候,其他主机已经在成功运行,通过 打开manager 机的 ip和 端口号
http://192.168.1.151:9002 能打开并登陆进去,不过提示minio 系统未初始化成功 的错误提示;
这个是因为整个分布式集群有一个节点没能正常工作,所以minio 不能初始化。
最终查找到原因是,docker swarm 集群的要求是 每个节点的 操作系统要保证一致,系统时间误差3秒内;
问题可见,worker1 的系统是centos7 和 另外两台ubuntu 14 不一致。
解决办法是把 worker1 这个节点 关闭,直接关闭虚拟机。
在manager机上查看节点情况:
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION enq32nbk4dqnv2j3imohx3thh localhost.localdomain Down Active 20.10.2 uimm49dhebfii3banhvarno5i * ubuntu14.2 Ready Active Leader 20.10.1 skn55rb7pvesf7gdrdn4gcczn ubuntu14.1 Ready Active 19.03.6
worker1 节点变成down状态。这并不影响 整个集群 的正常工作。只要集群的节点正常数量大于M/2,整个分布式集群工作正常。
判断需要先停止其他几个节点的服务ps -ef|grep minio,kill 进程号,并重新部署每个节点后。
在两台worker节点上执行docker volume ls ,查看minio容器把文件存放在什么位置
docker volume inspect minio_stack_minio1-data
upstream minio-cluster { server 172.16.0.2:9001; server 172.16.0.2:9002; server 172.16.0.8:9003; server 172.16.0.8:9004; } server { listen 9000; server_name 172.16.0.5; location / { proxy_pass http://minio-cluster; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; client_max_body_size 10m; client_body_buffer_size 256k; #请注意加上下面2个配置参数 proxy_buffering off; proxy_redirect off; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
https://docs.min.io/cn/deploy-minio-on-docker-swarm.html
https://www.cnblogs.com/drawnkid/p/8487337.html
https://blog.csdn.net/zhuyu19911016520/article/details/109450881
https://blog.csdn.net/zhuyu19911016520/article/details/109450881
实用工具: JSON字符串格式化 | js压缩代码格式化工具 | 异步XMLHttpRequests库axios.js文档 | vue-axios文档 | Go语言文档