MinIO(单机集群)DockerDocker-compose快速搭建
Posted AdobePeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MinIO(单机集群)DockerDocker-compose快速搭建相关的知识,希望对你有一定的参考价值。
前言
让你去搭建一套本地分布式文件存储系统你会选择什么?
FastDfs,估计是大多数人的选择,但是复杂的集群搭建,没有一个完善的页面才做让很多人头秃,我也是这大多数人的一员。研究FastDfs集群搭建,寻找合适的开源的页面化可整合FastDfs系统,在进行接口改造,一整套下来差点没被开除。正发愁的时候发现了一篇文章一个简单易用的文件上传系统,打开一看就是今天主角MinIO
为什么要使用MinIO
- 轻便、简单、易使用
- 轻量化,占用内存少,安装方便,界面化操作使用更便捷
- 高性能
- MinIO 是全球领先的对象存储先锋,目前在全世界有数百万的用户. 在标准硬件上,读/写速度上高达183 GB / 秒 和 171 GB / 秒。
- 可扩展
- MinIO利用了Web缩放器的来之不易的知识,为对象存储带来了简单的缩放模型。 这是我们坚定的理念 “简单可扩展.” 在 MinIO, 扩展从单个群集开始,该群集可以与其他MinIO群集联合以创建全局名称空间, 并在需要时可以跨越多个不同的数据中心。 通过添加更多集群可以扩展名称空间, 更多机架,直到实现目标。
- 与Amazon S3 兼容
- 亚马逊云的 S3 API(接口协议) 是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准。 MinIO 在很早的时候就采用了 S3 兼容协议,并且MinIO 是第一个支持 S3 Select 的产品
Docker快速搭建单机版MinIO
- Docker搭建单机版
docker run -d --restart=always \\
-p 9000:9000 \\
-p 9090:9090 \\
--name minio \\
-v /mnt/data/miniodata:/data \\
-e "MINIO_ROOT_USER=minioadmin" \\
-e "MINIO_ROOT_PASSWORD=minioadmin" \\
quay.io/minio/minio server /data --console-address ":9090"
- 启动成功后访问页面http://192.168.40.154:9090/login
- MINIO_ROOT_USER 对应账号
- MINIO_ROOT_PASSWORD 对应密码
Docker快速搭建MinIO纠删码模式
-
什么是纠删码
- 纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。 这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很NB
-
Docker搭建MinIO纠删码模式
-
docker run -d --restart=always \\ -p 9000:9000 --name minio \\ -p 9090:9090 \\ -v /mnt/data1:/data1 \\ -v /mnt/data2:/data2 \\ -v /mnt/data3:/data3 \\ -v /mnt/data4:/data4 \\ -v /mnt/data5:/data5 \\ -v /mnt/data6:/data6 \\ -v /mnt/data7:/data7 \\ -v /mnt/data8:/data8 \\ -e "MINIO_ROOT_USER=minioadmin" \\ -e "MINIO_ROOT_PASSWORD=minioadmin" \\ quay.io/minio/minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 --console-address ":9090"
很简单,只需要自己挂不同的盘就可以,启动完成后登录访问可以看到如下界面表明安装成功
-
Docker-compose快速搭建MinIO集群
-
环境准备
- 我这边准备四台机子,hostName分别为:adobe1、adobe2、adobe3、adobe4 使用命令nano /etc/hostname 或者 vi /etc/hostname,修改后重启
- Docker-compose就不用多说了,不会的可以参考https://blog.csdn.net/AdobePeng/article/details/117701508
- 需要挂载盘,反正每台机子上面最少挂一个,我挂了两个,在不同的盘上新建文件夹data1、data2
- 目录结构如下
-
[root@adobe1 miniodata]# ls data1 data2 docker-compose.yml nginx.conf
-
- 将该文件夹复制到其他三台虚拟机上
-
docker-compose.yml
-
version: '3.7' # Settings and configurations that are common for all containers x-minio-common: &minio-common image: quay.io/minio/minio:RELEASE.2022-05-08T23-50-31Z command: server --console-address ":9001" http://adobe1...4/data1...2 network_mode: "host" expose: - "9000" - "9001" # ports: # - "9000:9000" # - "9001:9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 # starts 4 docker containers running minio server instances. # using nginx reverse proxy, load balancing, you can access # it through port 9000. services: minio1: <<: *minio-common hostname: minio1 volumes: - /miniodata/data1:/data1 - /miniodata/data2:/data2 minio2: <<: *minio-common hostname: minio2 volumes: - /miniodata/data1:/data1 - /miniodata/data2:/data2 minio3: <<: *minio-common hostname: minio3 volumes: - /miniodata/data1:/data1 - /miniodata/data2:/data2 minio4: <<: *minio-common hostname: minio4 volumes: - /miniodata/data1:/data1 - /miniodata/data2:/data2 nginx: image: nginx:1.19.2-alpine hostname: nginx network_mode: "host" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro ports: - "9090:9090" - "9091:9091" depends_on: - minio1 - minio2 - minio3 - minio4
-
-
nginx.conf
-
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events worker_connections 4096; http include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; # include /etc/nginx/conf.d/*.conf; upstream adobe server adobe1:9000; server adobe2:9000; server adobe3:9000; server adobe4:9000; upstream console ip_hash; server adobe1:9001; server adobe2:9001; server adobe3:9001; server adobe4:9001; server listen 9090; listen [::]:9090; server_name localhost; # To allow special characters in headers ignore_invalid_headers off; # Allow any size file to be uploaded. # Set to a value such as 1000m; to restrict file size to a specific value client_max_body_size 0; # To disable buffering proxy_buffering off; proxy_request_buffering off; location / 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_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 300; # Default is HTTP/1, keepalive is only enabled in HTTP/1.1 proxy_http_version 1.1; proxy_set_header Connection ""; chunked_transfer_encoding off; proxy_pass http://adobe; server listen 9091; listen [::]:9091; server_name localhost; # To allow special characters in headers ignore_invalid_headers off; # Allow any size file to be uploaded. # Set to a value such as 1000m; to restrict file size to a specific value client_max_body_size 0; # To disable buffering proxy_buffering off; proxy_request_buffering off; location / 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_set_header X-Forwarded-Proto $scheme; proxy_set_header X-NginX-Proxy true; # This is necessary to pass the correct IP to be hashed real_ip_header X-Real-IP; proxy_connect_timeout 300; # To support websocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; chunked_transfer_encoding off; proxy_pass http://console;
-
启动
-
如果使用Xshell的话,可以打卡四台机子,然后选择 工具=>发送键输入到所有对话,可以在四台机子上面同时执行命令
-
[root@adobe1 miniodata]# docker-compose up -d Creating miniodata_minio2_1 ... done Creating miniodata_minio3_1 ... done Creating miniodata_minio4_1 ... done Creating miniodata_minio1_1 ... done Creating miniodata_nginx_1 ... done [root@adobe1 miniodata]#
启动完成,输入链接http://adobe1:9091/login
-
用户名:minioadmin 密码:minioadmin
-
最后到监控页面查看节点是否正常,出现如下图,说明启动成功
-
-
-
结束
从官网写的还算清楚,但是还是需要自己调试。尤其集群搭建,按照上面步骤来,应该是没问题的。期间遇到防火墙问题,自行选择直接关闭还是开启指定端口
有问题请留言
以上是关于MinIO(单机集群)DockerDocker-compose快速搭建的主要内容,如果未能解决你的问题,请参考以下文章
MinIO(单机集群)DockerDocker-compose快速搭建